반응형
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 |