2015. 4. 19. 00:34ㆍSecurity ★ Development/Reversing
http://codeengn.com/challenges/advance/06
Problem : How many more days to serve for the military
The solution is the MD5 hash of the answer프로그램을 실행해보면 1부터 숫자가 계속 올라갑니다. 종료하려면 작업관리자에서 프로세스 종료를 해야합니다.
UPX와 안티디버깅을 우회해주고 문자열, 의심되는 함수들을 보지만 쉽게 눈에 띄는게 없습니다.
이번문제는 상당히 코드를 유심히, 많이 보면서 풀었습니다.
이전 문제들처럼 코드의 흐름을 일일이 설명해드리기가 어렵네요. 일단 크게 메시지를 띄우는 부분과 카운트를 생성하는 부분으로 나눴는데 카운트는 저거 위의 CALL에서도 생성됩니다.
일단 이부분을 보면 MessageBoxTimeoutW를 통해서 메시지박스를 띄웁니다. 이 함수는 원하는 시간만큼 창을 띄우고 자동으로 닫습니다. PUSH -1부분을 PUSH 1로 바꾸면 창이 뜨자마자 꺼지면서 빠르게 넘어갑니다. 유심히 보면 780대 까지만 나오고 창이 더이상 뜨지 않습니다. 대략 780~800사이라고 예상하면서 디버깅을 계속 해보면
이런 부분에 올 수 있습니다. CMP EBP, EAX에서 현재값은 EAX, 비교되는 값은 790입니다. 따라서 2DACE78F80BC92E6D7493423D729448E
파란 영역을 보면 어디서 Jump를 해왔는지 확인할 수 있습니다. 꼭 저 위치에서 점프를 하지 않고 위에서 내려올 수도 있습니다.
'Security ★ Development > Reversing' 카테고리의 다른 글
리버스엔지니어링 문제 Advance 8 (0) | 2015.05.01 |
---|---|
리버스엔지니어링 문제 Advance 7 (3) | 2015.04.27 |
리버스엔지니어링 문제 Advance 5 (0) | 2015.04.17 |
리버스엔지니어링 문제 Advance 4 (0) | 2015.04.17 |
리버스엔지니어링 문제 Advance 3 (0) | 2015.04.17 |