Tutorial 3은 실행 시 나오는 NAG 메시지를 없애는 것이 목표이다. NAG은 사용자를 귀찮게 하면서 특정 행동을 유도하는 알림 메시지를 뜻한다.
Register Me를 실행하면 아래와 같이 3개의 창이 발생한다.
여기서 1, 3번 창을 제거하는 것이 목표이다.
먼저 EAX가 0인지 비교하고, 같다면 1번 창을 띄운다.
MessageBoxA를 우회하는 방법은 총 2가지가 있다.
첫 번째 방법은 함수 호출 코드를 모두 NOP으로 채우는 것이다.
NOP은 아무 동작도 하지 않고 넘어가는 명령어이다.
두 번째 방법은 EP(Entry Point)를 MessageBoxA 호출 이후로 설정하는 것이다.
EP는 프로그램이 실행될 때 가장 처음으로 실행되는 명령어의 주소이다.
PE bear로 확인한 결과, 현재 EP는 1000으로 설정되어 있다. 따라서 처음 시작 주소는 Image Base인 400000에 EP 1000을 더한 401000에서 시작하는 것이다.
Offset E8에 위치한 EP를 MessageBoxA 호출 이후인 401024로 변경하면 시작 시 그전까지의 코드들을 우회할 수 있다.
EP의 위치인 4000E0을 확인해 보면 "00 10"으로, Little Endian을 적용한 결과 1000임을 확인할 수 있다.
이를 "24 10"으로 변경해 주자.
패치 후 다시 실행하면 401024에서 시작하는 것을 볼 수 있다.
다음으로는 2번째 NAG을 제거해야 한다.
이는 NOP을 채워 제거하면 된다.
'Reversing > Lena Reversing' 카테고리의 다른 글
Tutorial 05 (2) | 2025.08.17 |
---|---|
Tutorial 04 (2) | 2025.08.15 |
Tutorial 02 (3) | 2025.08.14 |
Tutorial 01 (1) | 2025.08.13 |