본문 바로가기

Reversing/Lena Reversing

Tutorial 04

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