먼저 reverseMe 파일을 이뮤니티 디버거에서 실행해봤다.
F8을 통해 계속 실행했더니, 해당 지점에서 새로운 라이센스를 구매하라는 내용의 메시지 박스가 떴다.
Ctri+F2로 다시 시작한 후,
FileName과 CreatFile이라고 주석이 있는 곳까지 내려가 보니 JNZ 분기문이 나왔다.
JNZ는 0이 아닐 때 점프하는 명령어로, ZF가 0일 때 점프한다.
ZF는 Zero Flag로 결과값이 0일때 1(set), 0이 아닐 때 0(unset)이고, 레지스터 창에서 값을 확인할 수 있다.
현재는 ZF가 1이므로 점프한다.
만약 JNZ로 점프하지 않으면 바로 메세지가 뜨고 프로세스가 종료할 수 있다.
JNZ에서 Z를 클릭해서 1에서 0으로 바꿔줬다.
F8로 계속해서 실행하면 새로운 JNZ 분기문이 보인다.
레지스터 창에서 Z를 보면 1로 설정돼 있는 것을 확인할 수 있다.
여기서 JNZ로 점프하지 않으면 JNZ 아래의 JMP를 통해 프로세스 종료문으로 넘어가게 된다.
따라서 또 다시 Z를 0으로 바꿈으로써 JMP를 건너 뛰어야 한다.
무사히 JNZ문으로 점프해서 JMP를 건너 뛰었다.
이 상태로 끝까지 실행하면 키가 유효하지 않는다는 메시지가 뜬다.
다시 재실행하여 JMP를 건너뛰고 F8로 좀 더 내려가니
JL(jump is less)문의 조건에 충족하면 프로세스 종료문(4010F7)으로 점프하는 것을 확인할 수 있었다.
JL문은 SF가 1일 때 점프를 하므로 이걸 무시하기 위해 S를 0으로 수정했다.
수정 후, 끝까지 실행하니 성공 메시지 박스가 떴다.
'Reversing' 카테고리의 다른 글
[Lena] Lena Tutorial 06 (0) | 2023.03.29 |
---|---|
[Lena] Lena Tutorial 05 (0) | 2023.03.29 |
[Lena] Lena Tutorial 04 (0) | 2023.03.29 |
[Lena] Lena Tutorial 03 (0) | 2023.03.28 |
[Lena] Lena Tutorial 02 (0) | 2023.03.28 |