반응형

이 문제는 basic에 있었던 19번 문제와 유사하다. 같이 보면 좋을 것 같다.

 

2022.04.22 - [리버싱 문제 풀이/CodeEngn.com_Basic (Clear)] - codeengn-basic-L19 풀이

 

codeengn-basic-L19 풀이

문제는 프로그램이 몇 밀리세컨드 후에 종료 되는지를 원한다. Die로 열어보면, UPX패킹이 되어있다. 언패커로 패킹을 해제해주고 프로그램을 실행하면 메시지박스를 띄우고 사라진다. 디버거로

wonlf.tistory.com

 

먼저 Die로 열어보면, 

 

UPX패킹이 되어 있다. 언패커를 통해 패킹을 해제 시켜준다.

 

패킹을 해제하고 프로그램을 실행시켜보면, 

 

메시지 박스가 뜨고 프로그램이 종료 된다. 디버거로 열어본다.

 

디버거로 열고 파일을 실행시켜보면, 

basic 19번 문제와 동일한 알림창이 뜬다. 아마도 안티 디버깅 기법이 들어있는 것 같다.

 

해당 메시지 박스가 뜨는 구문을 찾아 주었다.

xref로 이 함수를 호출하는 곳을 찾아 주겠다.

예상한대로 디버깅을 감지하는 함수가 호출되고 디버깅 당하고 있다면 해당 메시지 박스를 띄우는 것이였다.

19번에서 했던 것처럼 jne를 je로 변경해주고 패치해서 새로운 파일로 만든다.

패치하고 실행하니 정상적으로 실행 된다.

이제 문제의 KEY인 시간을 구해보겠다.

 

19번처럼 TimeGetTime 함수에 브레이크 포인트를 걸어주고 실행 시키면

동일하게 특정 값과 시간을 비교하는 구문이 있다. ebx+4에 들어있는 값은 337B. 10진수로 바꿔주면,

​13179가 나오고 문제는 MD5를 원했으니 또 변환해주면,

정답

반응형

'Reversing 문제 풀이 > CodeEngn.com_Advance' 카테고리의 다른 글

codeengn-advance-L06 풀이  (2) 2022.05.09
codeengn-advance-L05 풀이  (0) 2022.05.06
codeengn-advance-L04 풀이  (0) 2022.05.04
codeengn-advance-L03 풀이  (0) 2022.05.04
codeengn-advance-L02 풀이  (0) 2022.05.03