리버싱
-
CodeEngn(Basic) crackme3 IDAReversing/CodeEngn(Basic) crackme 2019. 7. 6. 23:37
바로 풀이 갑니다 ctrl + f 로 vba를 찾은 뒤 vbastrcmp에 들어갑니다 보면 사실 아직까진 적응 안되는 아이다의 복잡화려한 화면이 나옵니다. 여기서 그 명령어에 BP 건 뒤에 디버깅모드로 들어간 다음에 문제가 생김요 ollydbg에선 그 전에 있는 명령어에서 어떤 값과 비교할지 주어지는데 아이다는 옆에 그런게 안 떠요 그래서 함 더블 클릭을 해봤지요 아이다는 더블클릭도 중요하길래 짜잔 비교할 값이 나와버렸어요 하하! 해서 vbastrcmp 전에 나와있는 저 이상한 값을 그대로 적어넣으면 성공 화면이 뜹니다 이게 어딜봐서 성공 화면이냐구요? . 2019.7.6 이제 해커스쿨 갑니다 이것은 야자
-
abexcm4 풀이 - IDAReversing/abexcm 2019. 6. 9. 17:26
abexcm4 아이다 풀이입니다. 기억나네요. 문자마다 strcmp를 걸어서 registered 버튼이 모든 시리얼값이 맞아야 활성화되는 크랙미입니다. 일단 ThunRTMain을 보면 VB로 짜인 프로그램임을 알 수 있죠 Ctrl + F 로 vba를 검색한 뒤, 문자열 비교 함수인 strcmp를 찾아서 들어가봅니다. 들어가서 대충 앞뒤를 훑어보고 힌트가 안나온다 싶으면 BP 걸고 디버깅모드로 전환해야지요 뭐 아무거나 1234 눌러보려는데 1만 눌렀더니 바로 코드가 돌아가네요 입력받는 문자마다 인식한다는 걸 알 수 있죠 그래서 이것저것 만져보다가 저기 ECX의 debug:023~~~부분에 커서를 갖다대고 스크롤(휠)을 돌리면 그.. 스택창인가? 뭔지는 모르겠는데 7자리 수가 나와요, 그게 아무래도 시리얼값..
-
abexcm3 풀이 - IDAReversing/abexcm 2019. 6. 7. 21:51
abex crackme3 풀이입니다. 2 풀려는데 너무 뭔가 꼬여서 나중에 꼭 할겁니다 일단 실행화면이죠, keyfile을 인식해서 성공화면을 출력하는 형식의 프로그램입니다. 이제 이거는 graphic view라고 정식 명칭을 알아냈습니다. 프로그램 분석 전에 전체적인 작동 원리를 대충 파악하게 해주는 역할을 한다고 볼 수 있어요 그리고 몰랐는데 딴 문서 보니까 IDA는 프로그램을 분석할때 그 파일이 있는 폴더에 이런저런 파일을 또 만들어서 작동한다고 그러더라구요 신기해서 찍어봤습니다 오오 뭔가 간결한 거 같네요 세미콜론으로 시작하는 저 줄이 딱딱 지역을 구분해주는 거 같아서 맘에 들어요 근데 디버거랑 다른게 있어보여요 그러므로 디버거랑 비교해봅시다 ..음,, 뭔가 아이다가 좀 더 가독성이 좋은 거 같네..
-
abexcm1 풀이 - IDAReversing/abexcm 2019. 5. 26. 23:32
올리디버거 그 빽빽한 창만 보다가 아이다라는 신문물을 접하니 마치 원숭이가 유인원이 된듯 합니다 그냥 저도 이것저것 눌러보면서 아이다에 최대한 익숙해져 보려고 합니다 갠적으로 프로그램 동적 분석 이전에 이렇게 미리 코드가 순서대로 정리되어 있는것 매우 좋아요 후후 아직 저 중간에 ===================== 이게 어떤 명령을 기준으로 가르는 것인지는 모르겠지만 암튼 저렇게 간간히 나뉘는 것도 꽤 좋네요 코드만 너무 빽빽하지도 않고 일단 GetDriveTypeA 함수의 기능을 살펴보면 현 드라이브의 위치를 파악해서 각 드라이브에 따라 다른 숫자들을 값으로 내놓는 역할을 합니다. 해서 MessageBoxA 함수의 내용을 살펴보려 했는데요 왜인지는 모르겠지만 아래 imp_MassageBoxA 박스를..
-
CodeEngn(Basic) crackme 11 ~ 18 내용정리Reversing/Make'em clean 2019. 5. 25. 19:12
11 StolenByte의 위치를 POPAD를 이용해 찾고 원래 코드의 OEP를 찾는 문제 12 암호화 알고리즘의 낚시, 그 알고리즘의 NOT는 비트반전 / 사실 문제를 풀진 못함 13 C# 프로그램으로 디컴파일(Dotpeek) 프로그램 사용, 코드 수정으로 비밀번호를 프로그램 실행과 동시에 출력 14 ESI값과 시리얼값의 비교, 전형적인 비번 찾기의 문제 15 이것도 CMP 명령을 찾아 시리얼값과의 비교문제 16 생소한 C++ 프로그램, 왜 follow in dump로 키값이 정해지는지 아직도 모르겠다 나중에 더 살펴볼 계획 17 암호화 알고리즘이 반복된다는 것을 이용해 BEDA가 시작되는 암호화 키(?)를 찾아야 함. 프로그래밍 필요 18 같은 암호화 알고리즘이 사용된 문제, 하지만 strcmp 함수..
-
CodeEngn(Basic) crackme 1 ~ 10 내용정리Reversing/Make'em clean 2019. 5. 20. 02:26
그 19 20까지 풀고 완벽하게 정리를 하려고 했는데요 마지막이라 그런지 졸라게 어려워요 19는 그냥 풀이법을 5개 넘게 봐도 모르겠고 20은 마지막 파트가 이해가 안가요(졸려서 그런가) 아,, 굉장히 찝찝하네 약간 똥싸다 2% 남은 구간에서 끊은 느낌 음 암튼 그럼 정리를 한 뒤에 아이다를 배우고 https://mons0256.tistory.com/50 여기 있는데로 실천을 해야겠습니다 1 abexcm1과 동일한 문제 GetDriveTypeA 함수로 현 드라이브 위치를 파악, CD-Rom으로 인식하게끔 만드는 문제 중간에 알고리즘 같은 부분을 수정함으로 크랙(문제는 검색으로,,) 2 실행 불가한 파일 수정, HxD 사용으로 해결 3 vbastrcmp 함수 역할 익힘(문자열 비교 함수) 스페인어인지 하튼..
-
CodeEngn(Basic) crackme18 풀이Reversing/CodeEngn(Basic) crackme 2019. 5. 11. 19:43
크랙미 18 풀이입니다 예상치 못한 곳에서 되게 쉬운 게 나왔네요 일단 시리얼이 틀렸다는 문구가 나오네요 바로 text strings 들어가서 성공 문구가 있는 곳으로 들어갑니다. 그 위에 보면 시리얼값과 비교해주는 strcmp 함수가 있는데요 여기에 BP 걸고 실행시켜봅시다. Name값은 CodeEngn 그러면 그 strcmp 함수부분에 제가 입력한 시리얼값인 1234와 그 위에는 이상한 문자열이 있는데 아마 이 둘을 비교해서 성공/실패 문구를 나타내는 거겠죠. 고로 Name값이 CodeEngn일 때 시리얼값은 1234 위의 저 문자열입니다. 아마도 시리얼값을 만들어주는 암호 알고리즘이 있을 테지만 싫어요 귀찮아요 문제만 풀었어요 2019.5.11 20까지.. 하고 싶다
-
CodeEngn(Basic) crackme17 풀이Reversing/CodeEngn(Basic) crackme 2019. 5. 11. 03:18
이것은 basic 17 풀이입니다 슬슬 끝이 보이네요 ㅎㅋ 문제부터 확인하고 갑시다 저 Key값이 나오는 Name값을 찾으면 된다는거죠 어 Name값이 한자리수라는 설명과 달리 한자리수로는 안되네요 일단 더 치고 Key값도 그렇게 해봤습니다. 아무 일도 일어나지 않네요 별 특별한거 없어보이구요 문구 찾아와서 뭔가 복잡해보이는 부분을 찾아왔습니다 아마도 위에 두 문자열은 Name값의 길이를 판단하는 부분일 거 같으니 그 아래를 주목하겠습니다. 일단 한자리수랬으니 여기 전에 Name값 문자열 길이 비교하는 구문을 이렇게 바꿔줍시다 그리고 Key, 즉 Serial값은 Name값의 변화에 따라 변하는 거 같으니 암호화 알고리즘이 이후 CALL 구문 중 한 곳에는 있을겁니다 고로 죄다 BP 걸고 다 들어가봅니다 ..