Lena's Reversing for Newbie 04 Write-Up
파일 링크: https://tuts4you.com/e107_plugins/download/download.php?list.17
Downloads / Lenas Reversing for Newbies - Tuts 4 You
tuts4you.com
Tutorials Index: 04. Basic + aesthetic patching
사용도구: 올리디버거 2.01
Lena's Reversing for Newbie 04(이하 원본파일) 분석해보자.
원본파일을 실행하면 위와 같이 계정을 만들 수 있다. 여기선 "kim"이라는 계정을 만들어 봤다.
그리고 로그인 버튼으로 로그인하면 된다.
그러면 위와 같이 무언가 기능이 많은 창이 뜬다. 먼저 확인할 수 있는 외형은 빨간 박스인데, "unregistered version" 문자열을 패치하면 된다.
그 다음, Help - About Pixtopianbook... 기능을 클릭하면 위와 같이 새로운 창이 뜨고 "unregistered version" 문자열을 확인할 수 있다. 여기도 패치하면 된다.
왼쪽 상단의 "Add" 버튼을 클릭해서 user를 등록할 수 있는데 4명까지밖에 안된다. 무제한으로 등록할 수 있게 패치하면 된다.
가운데 "Add Group" 버튼으로 group을 추가할 수 있는데 3개까지밖에 안된다. 마찬가지로 무제한으로 추가할 수 있게 패치하면 된다.
먼저 문자열부터 패치해보자.
code 섹션에서 우클릭 - Search for - All referenced strings 기능을 클릭하면 위와 같이 사용되는 문자열을 확인할 수 있다. 그런데 패치해야할 문자열 갯수는 3개인데, 1개밖에 검색되지 않는다.
올리디버거의 문자열 검색 기능은 code 섹션으로 제한되기 때문에 문자열이 data / resources 섹션에 존재하면 찾지 못할 수도 있다.
따라서 다른 기능이나 플러그인으로 문자여를 찾아야 하는데, 메모리 맵이라는 기능이 있다. 왼쪽 상단의 View - Memory map 버튼을 클릭하거나 (Alt+m) 단축키를 누르면 위와 같이 메모리 맵을 볼 수 있다.
그 다음 우클릭 - Search... 기능이나 (Ctrl+b) 단축키를 누르면 위와 같이 문자열을 검색할 수 있는 창이 뜨는데 [사진 3], [사진 4]에서 확인했던 문자열을 대소문자 구분하여 입력하면 된다.
그러면 위와 같이 문자열을 찾을 수 있다.
그리고 문자열을 패치하면 된다.
위와 같이 문자열들이 바뀐 것을 알 수 있다.
그 다음은 user, group 갯수를 제한하는 기능을 패치해야 하는데, [사진 5], [사진 6]에서 확인했듯이 메시지 박스 함수를 호출하므로 우클릭 - Search for - All intermodular calls 기능으로 사용되는 함수를 확인할 수 있다. 모든 메시지 박스 함수에 브레이크 포인트를 설정해주자.
그 다음 user를 등록하기 위해 "Add" 버튼을 누르면 위와 같은 메시지 박스가 나타날 것이다.
하지만 브레이크 포인트가 설정되어 있기 때문에 위와 같이 올리디버거에서 메시지 박스를 호출하기 전까지 실행된다.
스택에 저장된 값들을 보면 user 갯수 제한을 알려주는 메시지 박스임을 확인할 수 있다.
RETN 명령어까지 실행하여 메시지 박스를 호출하면 위와 같은 명령어들을 볼 수 있는데 CMP 명령어로 EAX 레지스터의 값과 0x4를 비교한 후 EAX 레지스터의 값이 작으면 0x00412DEF 주소로 점프한다. 이 곳을 패치하면 된다.
위와 같이 EAX 레지스터의 값에 상관없이 무조건 0x00412DEF 주소로 점프하도록 JL명령어를 JMP 명령어로 패치했다.
그러면 새로운 user를 등록할 수 있다.
그 다음으로, group을 추가하기 위해 "Add Group" 버튼을 클릭하면 위와 같은 메시지 박스가 나타날 것이다.
마찬가지로 브레이크 포인트가 설정되어 있기 때문에 위와 같이 올리디버거에서 메시지 박스를 호출하기 전까지 실행된다.
스택에 저장된 값들을 보면 group 갯수 제한을 알려주는 메시지 박스임을 확인할 수 있다.
RETN 명령어까지 실행하여 메시지 박스를 호출하면 위와 같은 명령어들을 볼 수 있는데 CMP 명령어로 EAX 레지스터의 값과 0x3를 비교한 후 EAX 레지스터의 값이 작으면 0x00408B34 주소로 점프한다. 이 곳을 패치하면 된다.
위와 같이 EAX 레지스터의 값에 상관없이 무조건 0x00408B34 주소로 점프하도록 JL명령어를 JMP 명령어로 패치했다.
이제 group도 갯수 제한없이 추가할 수 있다.
'Wargame > Lena’s Reversing for Newbies' 카테고리의 다른 글
Lena's Reversing for Newbie 06 Write-Up (0) | 2019.08.05 |
---|---|
Lena's Reversing for Newbie 05 Write-Up (0) | 2019.08.05 |
Lena's Reversing for Newbie 03 Write-Up (0) | 2019.07.17 |
Lena's Reversing for Newbie 02 Write-Up (0) | 2019.07.17 |
Lena's Reversing for Newbie 01 Write-Up (0) | 2019.07.17 |