-
abex' crackme 2 풀이Reversing/abexcm 2019. 3. 29. 19:44
드디어 티스토리 글쓰기 에디터가 바뀌었군요! 사실 전에 게시판 같던 에디터가 불편해서 다시 네이버 블로그로 갈아탈까 생각했지만, 이제 그런 고민을 더 안 해도 될 것 같아요 몹시 신나네요 ㅎㅎㅎ
바로 풀이 들어가겠습니다.
일단 프로그램을 실행했을 때 나오는 창입니다.
처음에는 아무거나 넣는 겁니
다. Name : 1234, Serial : 1234
했더니 틀렸다며 약올리네요.EP는 이러합니다. 아직은 크게 힌트가 될만한 게 없어요
조금 위로 올리면 EP 직전까지 MSVBVM60.------- 하면서 뭔가가 잔뜩 있는데 vba니 Var이니 하는 거 보면 함수 같죠?
뭐랄까, 이것들은 VB 전용 엔진들이에요. C의 내장함수처럼 미리 뭔가를 명시하는거죠. 일단 그렇게 생각하고 넘어가요.
그럼 아까 봤던 프로그램에서 띄워지는 창이 text strings 에 있겠죠? 하면 우클 릭 - Search for - All referenced text strings 루트로 문자열들을 찾아봅시다. 그러면 저렇게 아까 봤던 창들의 문자열이 여럿 나와요.
그 중 실패했을 때 뜨던 창으로 와봅시다. 이제 생각을 해보죠. 만약 Name 값과 Serial 값이 올바른 값일 때 나오는 성공 화면과 실패 화면을 나눠주는 역할을 하는 게 뭘까.
조건 분기죠? 올바른 값일 때에는 성공 화면을, 틀린 값일 때에는 실패 화면을 띄워줘야 하니깐요.
이제 여기가 성공 화면이 나올 때인데, 여기서의 JE 명령은 TEST AX, AX 뒤에 40340C? 로 가네요. 지금 위치랑 좀 차이가 나는데, 어딘지 보면 아까 그 실패 화면의 위치입니다. 그러면 이 JE 명령 이전에 PUSH EDX 과 PUSH EAX 를 하고 이를 비교하는 건 EDX의 값과 EAX의 값이 Name과 Serial의 값이기 때문이겠죠? 그러니 이 위치에서의 EDX 값과 EAX 값을 보기 위해 여기에 BP를 걸고 실행합시다
실행한 뒤 EAX - 19F27C, EDX - 19F26C 가 나왔습니다. 근접한 값이네요! 아마도 두 값 모두 1234로 놓아서 그런 게 아닐까 싶습니다.
그럼 스택에 저장된 그 값을 찾으러 갑시다. 스택창에서 go to - expression으로 가겠습니다.아래에 제가 입력했던 1234, 그 위에는.. 음, 시리얼값 같죠?
그렇네요ㅋㅋㅋ 이게 어떻게 되는지는 나중에 설명하겠습니다. 여기까지 이해하는 데에도 제가 좀 시간이 걸려서.. 힘드네요.
밥 먹으러 가겠습니다. 10시 전에 아마 3 풀이 올릴 거 같네요. (과연..?)
2019.3.29
'Reversing > abexcm' 카테고리의 다른 글
abexcm1 풀이 - IDA (0) 2019.05.26 abex' crackme5 풀이 (0) 2019.03.29 abex' crackme 4 풀이 (0) 2019.03.29 abex' crackme 3 풀이 (0) 2019.03.29 abex' crackme1 풀이 (0) 2019.03.26