Lena's Reversing for Newbie 03 Write-Up
파일 링크: https://tuts4you.com/e107_plugins/download/download.php?list.17
Downloads / Lenas Reversing for Newbies - Tuts 4 You
tuts4you.com
Tutorials Index: 03. Basic nag removal + header problems
사용도구: 올리디버거 2.01, Detect It Easy 2.04
Lena's Reversing for Newbie 03(이하 원본파일) 분석해보자.
원본파일을 실행하면 다음과 같은 창들이 뜬다.
[사진 1], [사진 3] 메시지 박스가 뜨지 않도록 해보자.
올리디버거로 원본파일을 열어보면 위와 같은 코드를 볼 수 있다. GetModuleHandleA 함수를 호출하고 반환 값이 0이면 첫 번째 Nag 메시지 박스를 무시하고 점프한다. GetModuleHandleA 함수는 전달된 모듈의 핸들을 반환하는데 만약 전달할 모듈이 NULL이라면 GetModuleHandleA 함수를 실행한 파일의 핸들을 반환한다. 즉, 무조건 핸들이 반환되는 것이다.
참고: https://jade9reen.tistory.com/15
GetModuleHandleA Function
출처: https://docs.microsoft.com/en-us/windows/desktop/api/libloaderapi/nf-libloaderapi-getmodulehandlea GetModuleHandleA function (libloaderapi.h) Retrieves a module handle for the specified module..
jade9reen.tistory.com
첫 번째 Nag 메시지 박스를 지우기 위한 방법이 두 가지 있다.
첫 번째는 40100F 주소의 JE 명령어를 JMP 명령어로 패치하여 401024 주소로 점프하는 것이다. 이렇게 할 시 첫 번째 Nag 메시지 박스를 무시할 수 있다.
두 번째는 PE 헤더에서 EntryPoint 값을 조정하는 것이다. 현재 원본파일을 실행하면 주소 401000부터 디버깅을 시작하는데, EntryPoint 값을 401024로 바꿔서 GetModuleHandleA 함수와 첫 번째 Nag 메시지 박스를 무시하는 것이다.
두 번째 방법으로 진행해보자.
두 번째 방법으로 EntryPoint 값을 조정하면 위와 같이 원본파일을 실행하면 401024 주소부터 진행된다.
첫 번째 Nag 메시지 박스를 지웠다. 다음으로 401034 주소의 함수를 호출하고 401047 주소에서 두 번째 Nag 메시지 박스를 호출하는 것으로 보아 401034 주소의 함수 실행 시 [사진 2]의 박스가 뜰 것이다.
위와 같이 401034 주소의 함수를 실행하자 [사진 2]의 박스가 뜬 것을 확인할 수 있다. 그리고 해당 박스를 종료하면 다음과 같이 두 번째 Nag 메시지 박스 코드로 돌아온다.
위와 같이 두 번째 Nag 메시지 박스를 지우는 방법으로 많은 방법이 있겠지만 다음과 같이 단순하게 해당 명령어들을 NOP 명령어로 모두 패치했다.
이제 원본파일을 실행하면 [사진 2]의 박스만 뜨는 것을 확인할 수 있다.
'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 04 Write-Up (0) | 2019.08.05 |
Lena's Reversing for Newbie 02 Write-Up (0) | 2019.07.17 |
Lena's Reversing for Newbie 01 Write-Up (0) | 2019.07.17 |