숫자만 입력 가능한 것 처럼 보이고 막 입력하고 Check를 누르니 프로그램이 죽습니다. eax에 내가 입력한 수가 들어가고, 그 값을 4084D0번지에 씁니다. 코드영역인 것 같네요. 이후에 40466F번지의 함수로 이동합니다. 따라가봅시다.(F7) 중간에 뜬금없이 DB 81도 껴있고 코드가 개떡같네요. 일단 천천히 흐름을 따라가보면
갑자기 40467E번지의 코드가 이렇게 됩니다. 참으로 이해가 안가는 현상이지만 일단 순응하고 코드를 계속 따라가보겠습니다.
?????? 하.. 이게 뭔가요.. 거친거라고는 40467E~404683번지의 저 이해할 수 없는 명령밖에 없는데 4084D0번 주소의 값이 이상하게 변해있습니다. 아무리 생각해도 원인은 단 하나, 40 00 EB 60 90 .. 저 기계어와 대응되는 어셈블리 코드를 Ollydbg가 이상하게 알려줬다고밖에 생각할 수가 없습니다. 어쩔 수 없이 404684번지의 값이 2 더해진 이후의 여러 값들을 확인했습니다.
내가 입력한 값 + 2 + 601605C7 + 2 한 주소의 값을 90으로 만듭니다. 그러면 이제 구조 파악은 됐는데, 그래서 문제에서 바라는게 뭔가요..? 라고 생각해본다면 여기서 ascii "H4`@',0 이라고 된 부분이 사실은 PUSH "00406034"입니다. 406034번지에는 Correct!가 있습니다. 여기서도 Ollydbg가 이상하게 동작하네요. 그러면 Correct! 를 Dialog창에 보이기게끔 해야할텐데, 그러기 위해서는 401071번지의 JMP가 NOP이 되면 되겠습니다.
뭐 어찌저찌 맞긴 했다만 이해가 안가는 부분 투성이네요. |
'워게임 > Reversing.kr' 카테고리의 다른 글
[Reversing.kr] Direct3D FPS (0) | 2017.12.30 |
---|---|
[Reversing.kr] Position (0) | 2017.12.30 |
[Reversing.kr] ImagePrc (0) | 2017.12.29 |
[Reversing.kr] Music Player (0) | 2017.12.29 |
[Reversing.kr] Easy Unpack (0) | 2017.12.29 |
[Reversing.kr] Easy Keygen (0) | 2017.12.29 |