반응형

 

Write-up 쓴 날짜 : 2022-09-18 16:25

 

PixtopianBook.zip
2.22MB

 

pixtopianbook107.exe
0.54MB

 

patched_PixtopianBook.exe
0.89MB

 

patched_PixtopianBook_my_site.exe
0.89MB

 

주제 - Basic + aesthetic patching

 


분석

 

 

 

윈도우 11에서 해당 프로그램을 설치하려고 했는데 위와 같이 에러가 떴다.

 

 

하지만 관리자 모드로 실행하여 설치를 진행하면 위와 같이 설치가 잘 된다.

 

 

설치가 완료되면 위와 같은 화면이 뜬다.

 

새로운 프로필 생성을 위해 유저 이름을 입력하라고 한다.

 

그리고 이미 존재하는 데이터를 사용하고 싶다면 Browse 버튼을 눌러 해당 데이터가 있는 폴더를 지정하라고 한다.

 

 

User 항목에 이름을 입력하면 알아서 Location 항목에 값이 채워진다.

 

이름을 입력하고 나서 Create 버튼을 누른다.

 

 

그러면 위와 같은 창이 뜨는데 유저 이름을 선택하고 필요하다면 패스워드를 입력하라고 한다.

 

새로운 프로필을 만들고 싶으면 Create New Profile 버튼을 클릭하라고 한다.

 

이전에 만든 프로필 slay를 선택하고 Login in 버튼을 누른다.

 

 

그러면 위와 같은 창이 뜬다.

 

 

여러 부분들을 클릭해보며 출력들을 살펴봤는데 평범했다.

 

하지만 이 프로그램의 타이틀에 적힌 "UNREGISTERED VERSION" 문구도 그렇고 Quick Search 위에 적힌 "This is an unregistered version of PixtopianBook. Please register today!" 문구가 적힌 것을 보니 등록되지 않은 버전이라 등록해야 하는 것 같다.

 

즉, 체험판이라 등록을 하고 등록 버전을 사용하라는 것이다.

 

그러다가 위의 사진에서와 같이 Register Now 부분이 있는 것을 발견했고, 눌러보니

 

 

위의 사이트로 접속하는데 사이트에 연결할 수 없다고 뜬다.

 

그렇다

 

등록 못 한다!

 

 

등록되지 않은 버전이라 그런지 왼쪽 상단의 "Add"를 눌러 사람의 정보를 추가하는 기능이 4개밖에 되지 않는다.

 

등록된 버전은 4개 이상 입력할 수 있다.

 

 

그리고 Group 생성도 최대 3개라고 한다.

 

이 부분도 수정해야 할 것 같다.

 

그렇다면 패치 해볼 부분이 총 4부분이다.

1. 프로그램의 타이틀에 적인 "UNREGISTERED VERSION"

2. 프로그램 화면 중간에 떠 있는 문구

3. 사람 정보 입력 최대 4개인 부분

4. 그룹을 최대 3개만 만들 수 있는 부분


패치 준비

 

 

설치된 PixtopainBook 실행 파일이 위치한 곳으로 이동해 해당 실행 파일을 x32dbg에 로드한다.

 

 

EP 코드를 보니 EP 주소는 44036E 이다.

 

 

자체 제작한 PE Explorer로 보니 EP 주소가 4036E로 일치한다.

 

 

EP 코드에서 F9 키를 눌러 실행하면 위와 같이 예외를 만나게 된다.

 

예외가 발생하면 처리를 해줘야 하는데 그렇게 되면 프로그램을 제대로 실행할 수 없기 때문에

 

모든 예외를 지나치도록 한다.

 

 

Ctrl + F2를 눌러 재실행 한 후 설정 -> 예외 -> Ignore Rnage -> 시작 : 00000000, 끝 : FFFFFFFF -> 확인 -> 엔터 -> F9

 

위와 같이 설정해주면 예외가 발생해도 그냥 지나치고 프로그램이 잘 실행될 것이다.

 


패치

 

1. UNREGISTERED VERSION 문자열 패치

 

 

먼저 메모리 맵 탭에서 Ctrl + B를 누른 후 UNICODE에 UNREGISTERED VERSION 이라고 입력하고 확인을 누른다.

 

 

그럼 위와 같이 해당 문자열이 있는 주소가 뜨는데, 주소는 4E4BE8이다.

(참고. ASCII는 문자가 1byte이지만, UNICODE는 문자가 2byte이다.)

 

 

PixtopianBook 문자열 뒤 부분부터 전부 드래그 한 뒤

 

 

전부 0으로 채워준다.

 

 

그러면 위와 같이 변경되었을 것이다.

 

 

이렇게 하면 1번 패치는 완료됐다.

 

 

2. 프로그램 중간에 떠 있는 문자열 패치

 

 

참조 탭으로 가서 "unregistered version"을 검색하면 위와 같이 나오는데, 더블 클릭하여 해당 문자열을 참조하는 주소 40c237로 간다.

 

 

40c237 주소에서 48F974 주소에 있는 데이터를 스택에 넣는데 이 데이터는 패치 할 문자열이다.

 

 

패치 할 문자열을 직접 수정해도 되지만 스크롤을 위로 살짝 올려보면 ebp의 값과 907을 비교해서 같지 않으면 40c251로 점프하고 같으면 패치 할 문자열을 스택에 넣는다.

 

그렇다면 ebp의 값이 907이 아니여야 패치 할 문자열을 스택에 넣지 않는다는 것인데

 

 

이 EBP에 들어갈 값은 어디서 넣어지는지 보기 위해 스크롤을 조금 더 위로 올려보면 위와 같은 부분이 나오는데

 

esp+C 주소에 있는 데이터를 ebp에 넣고, 906과 비교 후 다르면 907과 비교하는 부분으로 간 뒤 907과 같으면 패치 할 문자열을 스택에 넣고

 

906과 비교 후 같으면 esi+13C 주소에 있는 데이터를 eax에 넣고 0인지 검사 후 0이 아니면 40C251 주소로 점프한다.

 

 

40C19F 주소의 명령어를 jne에서 je로 바꿔주거나

 

 

40C235 주소의 명령어를 jne에서 je로 바꿔주면 된다.

 

 

그러면 2번 패치도 완료됐다.

 

 

3. 사람 정보 입력 최대 4개인 부분 패치

 

 

사람 정보를 4개 이상 입력하려고 하면 위와 같이 메시지 창이 뜬다.

 

 

디버거의 참조 탭에서 "Please register PixtopianBook"을 검색해보면 위와 같이 나오는데 하나는 그룹을 3개 이상 생성하려고 할 때의 문자열과 다른 하나는 사람 정보를 4개 이상 생성하려고 할 때의 문자열이다.

 

 

사람 정보를 4개 이상 생성하려고 할 때의 문자열을 참조하는 주소 412DDB로 가면 위의 사진과 같이 412DD0 주소에서 4와 비교를 한다.

 

4와 비교 후 작으면 412DEF 주소로 이동하는데, 4 이상이면 412DD5 주소로 가서 패치 할 문자열을 스택에 넣는다.

 

 

그렇다면 412DD3 주소의 명령어를 jl에서 jmp로 바꾸어 무조건 412DEF 주소로 점프하게 한다.

 

 

그러면 위와 같이 4개 이상 생성할 수 있다.

 

 

4. 그룹을 최대 3개만 만들 수 있는 부분 패치

 

 

그룹을 3개 이상 생성하려고 하면 위와 같이 메시지 창이 뜬다.

 

 

그룹을 3개 이상 만들려고 할 때 뜨는 문자열을 더블 클릭해 이동한다.

 

 

이 부분은 사람 정보를 4명 이상 생성하려고 할 때의 코드 부분과 비슷하다.

 

 

3번 패치에서와 같이 408B08 주소의 jl 명령어를 jmp로 바꿔주면 된다.

 

 

이렇게 4번까지 패치해서 모든 패치가 완료됐다.

 


+@

 

 

help 메뉴 -> Register Now를 눌렀을 때 접속될 사이트 주소 변경

 

 

 

Help 메뉴 -> Pixtopia Systems Website 눌렀을 때 접속될 사이트 주소 변경

 


 

반응형

+ Recent posts