Lena's Reversing for Newbie 08 Write-Up
파일 링크: https://tuts4you.com/e107_plugins/download/download.php?list.17
Downloads / Lenas Reversing for Newbies - Tuts 4 You
tuts4you.com
Tutorials Index: 08. Debugging with W32Dasm, RVA, VA and offset, using LordPE as a hexeditor
사용도구: 올리디버거 2.01
Lena's Reversing for Newbie 08(이하 원본파일) 분석해보자.
원본파일을 실행하면 다른 프로그램을 설치한다.
설치 자체는 어려운게 없다.
설치를 마치면 위와 같은 파일들이 생성된다.
ArtGem 파일을 실행하면 위와 같은 프로그램이 실행되고 Nag 창이 뜬다.
Manual 파일을 실행하면 위와 같이 도움말을 확인할 수 있다.
ReadMe 파일을 실행하면 위와 같은 노트를 확인할 수 있다.
RLUninst 파일은 프로그램을 삭제하는 파일인 것 같다.
ArtGem 파일을 실행하고 좌측 상단의 ? - About 기능을 클릭하면 위와 같이 Name, Company, Key-Code를 등록하는 창이 뜬다. 등록을 실패하면 "Invalid Key!" 문자열과 함께 메시지 박스가 뜬다. 이 문자열을 이용해보자.
code 섹션에서 우클릭 - Search for - All referenced strings 기능을 클릭하면 위와 같이 사용되는 문자열들을 확인할 수 있다. "Invalid Key!" 문자열을 검색해보자.
위와 같이 문자열이 사용되는 코드로 이동하면 0x00438601 주소의 명령어 MOV ECX, DWORD PTR DS:[4949A8]을 확인할 수 있다. 그런데, 왼쪽을 보면 '>' 기호가 있는데 이는 0x00438601 주소로 어딘가에서 점프했다는 뜻이다.
코드를 조금 위로 올리면 0x00438578 주소의 명령어 JZ 00438601을 확인할 수 있다. 점프하기 전에 EAX 레지스터의 값을 TEST 연산하는데, EAX 레지스터의 값이 0x0이라면 [사진 16]의 코드로 점프하는 것이다. 0x0043856E 주소의 CALL 00434C00 명령어에 의해 어떠한 함수가 호출되고 그 결과가 EAX 레지스터에 저장될 것이다.
따라서 해당 함수가 종료되지 전에 EAX 레지스터의 값이 0x0이 아니도록 패치하면 된다.
0x00434C00 함수가 종료되기 전 코드를 보면 위와 같이 EAX 레지스터를 XOR 연산한다. 즉, EAX 레지스터의 값은 0x0이 되고 [사진 16]의 코드로 점프할 것이다.
따라서 위와 같이 XOR 명령어를 NOP 명령어로 패치하였다. 그러면 어떠한 Name, Company, Key-Code를 입력해도 실패하지 않는다.
위와 같이 정상적으로 등록되었다.
'Wargame > Lena’s Reversing for Newbies' 카테고리의 다른 글
Lena's Reversing for Newbie 10 Write-Up (0) | 2019.08.06 |
---|---|
Lena's Reversing for Newbie 09 Write-Up (0) | 2019.08.06 |
Lena's Reversing for Newbie 07 Write-Up (0) | 2019.08.05 |
Lena's Reversing for Newbie 06 Write-Up (0) | 2019.08.05 |
Lena's Reversing for Newbie 05 Write-Up (0) | 2019.08.05 |