Tutorial 4는 간단한 애플리케이션을 대상으로 분석을 진행한다.
먼저, PixtopianBook을 실행하고 로그인한다.
Add 버튼을 눌러 사용자를 추가할 수 있다.
4명의 사용자를 추가한 다음, Add를 한 번 더 누르면 다음과 같은 알림 창이 뜬다.
Add Group을 눌러 그룹도 추가할 수 있다.
3개의 그룹을 추가한 다음, 한 번 더 누르면 다음과 같은 알림 창이 뜬다.
문제의 핵심적인 목표는 위 두 개의 추가 제한을 우회하는 것이다.
추가적으로 제거할 수 있는 문자열들도 존재한다.
기본 화면에서 볼 수 있는 Register와 관련된 문자열이 있다.
또한, [Help] -> [About PixtopianBook]을 누르면 나오는 창에도 있다.
이제, 수정해야 할 부분들을 정리해 보자.
- 사용자 추가 제한
- 그룹 추가 제한
- Register 관련 문자열
OllyDbg를 통해 열고 F9로 실행을 해보자.
우리가 원하는 프로그램은 시작하지 않고, Exception이 발생한다.
이를 해결하기 위해, [Options] -> [Debugging options] -> [Exceptions]에서 모든 Exception을 무시하도록 설정해야 한다.
이제 다시 실행해 보자.
제대로 프로그램이 시작되는 것을 볼 수 있다.
이제 사용자를 추가할 때 발생하는 코드를 찾아가야 한다.
여기서 중요한 팁은 Execute till user code (Alt+F9)를 사용하는 것이다.
이때, 64비트 환경에서는 잘 작동하지 않기 때문에 32비트 환경에서 분석하는 것이 유용하다.
F12로 중지시켜 놓고 Execute till user code를 실행한 뒤, 에러 창의 확인을 누르면 해당 코드로 이동할 수 있다.
MessageBoxA를 호출한 이후 코드로 이동한 것을 볼 수 있다.
이후에는 RETN 명령어를 통해 MessageBoxA를 호출한 부분의 다음 명령어로 이동할 수 있다.
RETN에서 F8을 누르면 다음과 같이 CALL 다음으로 이동하였다.
이때, 해당 부분으로 JUMP 하는 분기문(JL ~~)을 JMP로 수정하여, 우회할 수 있다.
이제 사용자를 추가로 생성할 수 있다.
그룹 추가를 제한하는 부분도 매우 유사한 방식으로 우회가 가능하다.
Execute till user code를 실행한 뒤, 확인을 누른다.
MessageBoxA의 RETN을 실행한다.
JUMP 하는 분기문(JL ~~)을 JMP로 수정한다.
이제 Register 관련 문자열들을 제거해야 한다.
이는 문자열 검색 기능을 통해 제거하자.
먼저 아래의 부분을 제거해 보자.
[Search for] -> [All referenced text strings]에서 찾을 수 있다.
이 문자열을 사용하는 부분은 아래의 코드다.
여기서 JNZ를 JMP로 수정하게 되면 우회가 가능하다.
다음으로 아래의 부분을 제거하자.
이는 특정 명령어를 통해 생성되는 문자열이 아니기 때문에, 위의 방법과 같이 [Search for]를 통해서 제거할 수 없다.
이를 제거하기 위해서는 [Memory map]에서 해당 문자열을 찾아야 한다.
아래의 "UNREGISTERED VERSION"을 다른 문자열로 수정하자.
'Reversing > Lena Reversing' 카테고리의 다른 글
Tutorial 05 (2) | 2025.08.17 |
---|---|
Tutorial 03 (3) | 2025.08.14 |
Tutorial 02 (3) | 2025.08.14 |
Tutorial 01 (1) | 2025.08.13 |