<보안 study>/리버싱

[CodeEngn]Advance - 02

gosoeungduk 2019. 1. 15. 01:03
반응형




C++ 로 코딩되어 있고 패킹은 되어있지 않다.

IsDebuggerPresent 기법을 우회해야한다. (따로 우회과정사진 첨부는 없음)


바이너리를 실행하면 아무 것도 뜨지 않았다... 원래 이런 바이너리인줄 알았는데 풀고나서 보니 나만 오류가 있었던 것 같다.




이 부분에서 system32/kernelbase.dll 을 반복하면서 실행(?) 하는데 CMP 에서 비교하는 AX 값이 1171이 되어야 진짜 본 문제로 넘어간다.

여기서 kernelbase.dll 이랑 kernel32.dll 에 대한 오류인지 모르겠으나 원래 문제에서 의도한 오류는 아닌 듯하다.


아무튼 JNZ를 JZ로 패치하면 본 문제로 잘 넘어간다. ㅇ _ ㅇ




문제에서는 패스워드를 입력하라고 했다.



여러 번 실행하다가 바이너리가 EDX 이후 종료되는 걸 알 수 있었다. 그래서 EDX로 call 하는 함수를 

분석해보았다.


여기서 부터는 진짜 간단하다.



ECX에 입력한 input 값을 MOVSX로 1바이트씩 떼어와서 알맞은 비밀번호 character랑 일일히 대조하는 과정이다.


이 대조값들을 다 파악했다면 패스워드를 알 수 있다.



성공!



반응형

'<보안 study> > 리버싱' 카테고리의 다른 글

Ghidra-Server 환경 구성하기  (0) 2019.11.27
QEMU로 MIPS 구동 환경 구성하기  (4) 2019.10.01
[CodeEngn]Advance - 06 [다시풀자]  (0) 2019.01.17
[CodeEngn]Advance - 05  (0) 2019.01.15
[CodeEngn]Advance - 01  (0) 2019.01.07