"리버싱 핵심 원리" 책의 대부분의 예제는 32bit OS 에서 테스트 되었습니다.
("5부 - 64비트 & Windows Kernel 6" 의 실습 예제들은 64bit OS 환경이 필요합니다.)
64bit 환경을 사용하시는 독자님들께서는 아래에 소개되는 내용을 참고하여 실습을 진행하시기 바랍니다.
OllyDbg 1.1 은 기본적으로 64bit 환경을 지원하지 못합니다.
책의 디버깅 실습은 거의 대부분 OllyDbg 를 이용해서 진행됩니다.
그러나 OllyDbg 1.1 은 64bit 환경을 지원하지 못합니다.
<그림 1. Windows 7 64bit 에서 OllyDbg 1.1 실행시 예외 발생>
64bit OS 에서 "2장 Hello World 리버싱" 실습 예제 파일 HelloWorld.exe 를 OllyDbg 1.1 로 실행시키면 <그림 1>과 같이 예외가 발생하면서 ntdll.dll 모듈 영역의 코드에서 멈춰버립니다. (이것은 OllyDbg 1.1 의 버그입니다.)
64bit 환경에서 OllyDbg 사용할 수 있는 2 가지 방법
#1. 64bit OS + OllyDbg 2.0
OllyDbg 2.0 버전에서는 64bit에서 정상 실행 되지 않는 버그가 수정되었습니다.
다운로드 링크 : http://www.ollydbg.de/odbg200.zip
* 참고
최신 버전 OllyDbg 2.01 beta 2 는 실행 과정에 약간의 문제가 있습니다. 문제가 해결될 때까지는 OllyDbg 2.0 을 사용해 주시기 바랍니다.
위 링크에서 파일을 다운받아 압축을 해제한 후 실행하면 <그림 2> 와 같은 화면이 나타납니다.
<그림 2 - Windows 7 64bit 에서 OllyDbg 2.0 으로 HelloWorld.exe 를 띄운 화면>
<그림 2>의 화면을 책의 <그림 2.3> 처럼 보이게 하려면 다음과 같이 작업해 주시면 됩니다.
1) 내부의 CPU 윈도우를 최대화 시킵니다.
2) Code/Register/Dump/Stack Window 의 폰트를 변경합니다.
(각각의 창에서 마우스 우측 메뉴 - Appearance - Font - System fixed font 메뉴 선택)
3) Code Window 의 Highlighting 을 변경합니다. (디스어셈블리 코드의 가독성이 좋아집니다.)
(마우스 우측 메뉴 - Appearance - Highlighting - Jumps and calls 메뉴 선택)
4) OllyDbg 2.0 의 창 크기를 적절히 조절합니다.
OllyDbg 2.0 버전의 GUI 는 1.1 버전과 거의 차이가 없습니다. 이제부터 디버깅 실습을 진행하시면 됩니다.
#2. 64bit OS + OllyDbg 1.1 + "Olly Advanced" PlugIn
OllyDbg 2.0 이 발표된 후에도 OllyDbg 1.1 버전이 꾸준히 사랑받는 이유는 바로 다양한 플러그인(PlugIn) 때문입니다. 특히 안티 디버깅이 적용된 PE 프로텍터를 디버깅 할 때 다양한 플러그인은 유용하게 사용됩니다. (최근에는 OllyDbg 2.x 용 플러그인도 많이 개발되고 있습니다.)
64bit OS 에서도 "Olly Advanced" 플러그인을 적용하면 OllyDbg 1.1 버전을 사용할 수 있습니다.
다운로드 링크 : http://tuts4you.com/request.php?75
* 참고
Olly Advanced 플러그인은 OllyDbg 의 버그 패치, 다양한 안티 디버깅에 대한 방어 기능을 지원합니다. Olly Script 플러그인과 함께 가장 유명하고 사용자가 많은 플러그인 입니다.
Olly Advanced 플러그인 설치 방법은 다음과 같습니다.
1) 다운 받은 Olly Advanced v1.27.rar 파일의 압축을 해제하면 advancedolly.dll 플러그인 파일이 생성됩니다.
2) OllyDbg 1.1 설치 폴더에 advancedolly.dll 파일을 복사합니다.
<그림 3 - advancedolly.dll 파일 복사>
3) Olly Advanced 플러그인의 옵션 메뉴를 선택합니다.
<그림 4 - Plugins - Olly Advanced - Options 메뉴 항목>
4) Olly Advanced 옵션 다이알로그에서 "x64 Compatiblity-mode (single-step)" 항목을 체크합니다.
<그림 5 - x64 Compatiblity-mode (single-step) 항목 체크>
5) 이제 64bit OS 환경에서 OllyDbg 1.1 을 사용할 수 있습니다. HelloWorld.exe 실습 파일을 올려 보시기 바랍니다.
참고로 OllyDbg 의 플러그인들은 보통 자체 버그들이 있어서 디버깅할 때 OllyDbg 가 종료될 때가 있습니다. 그리고 기능을 잘 모르는 플러그인을 많이 설치하면 생각지도 않은 오동작을 할 때가 있기 때문에 주의 하시기 바랍니다.
* 참고
- 책의 실습 예제 파일들은 32bit OS 환경에서 실습 하시는 것을 권장합니다. (5부 실습 예제들은 64bit 환경만 가능)
- 위에 소개된 방법처럼 64bit 환경에서 디버깅 실습을 진행하실 때 책의 내용과 약간 다르게 동작할 수도 있습니다.
'리버싱 핵심 원리 > story' 카테고리의 다른 글
[리버싱 핵심 원리] 독자님들의 성원에 감사드립니다~ *^^* (7) | 2021.04.17 |
---|---|
리버싱 핵심 원리 - 중국어판 출간 소식 (30) | 2014.05.11 |
逆向工程核心原理 (1) | 2014.05.09 |
리버싱 핵심 원리 - 2쇄 찍었어요~ ^^ (63) | 2012.12.13 |
리버스 엔지니어링 : "리버싱 핵심 원리" 책 소개 (64) | 2012.10.15 |
64bit 환경에서 OllyDbg 사용할 수 있는 방법 (26) | 2012.10.11 |
리버싱 핵심 원리 - 서문 (26) | 2012.10.10 |
[리버싱 핵심 원리 : 악성 코드 분석가의 리버싱 이야기] (121) | 2012.09.11 |
조판 원고 검토 작업 (2차) (45) | 2012.06.29 |
책 원고 작성 완료! (108) | 2011.12.05 |
책소개 (85) | 2010.09.06 |
-
-
-
reversecore 2012.10.11 22:21 신고
안녕하세요.
소스코드.zip 파일의 압축을 해제하시면 아래 경로에 있습니다.
01_기초_리버싱\\02_Hello_World!_리버싱\\etc\\ollydbg.ini
udd 와 plugin 폴더 세팅은 다시 해주셔야 할 겁니다.
OllyDbg 옵션 메뉴에서 하셔도 되고, 간편하게 ollydbg.ini 파일의 'UDD path' 항목과 'Plugin path' 항목을 직접 편집하셔도 됩니다.
분석가들은 자신만의 OllyDbg 환경을 가지고 있습니다. 분석가마다 전부 틀리죠. jongmin님 께서도 점차 자신만의 환경을 만들어 보시기 바랍니다. ^^~
감사합니다.
-
-
개빨라 2012.10.26 09:33
1장에 helloworld.exe 를 윈도우7+올리디버거 1.1 + 플러그인 으로 열었더니
unable to open or read excutable file 'c\program files(x86)\nvidia corporation\coprocmanager\_etoured.dll'
이런 에러가 뜨네요 무시해도 되는 에러일까요??-
reversecore 2012.10.26 20:46 신고
안녕하세요.
Win 7 (64bit) 를 사용하시는군요.
일단 OllyDbg 와는 관계 없는 에러입니다. nvidia 모듈에 뭔가 문제가 있는 것 같습니다.
감사합니다.
-
-
김윤우 2012.11.01 05:44
저기 혹시 저좀 도와주실수있으신가요..?...
크랙할 프로그램이 있는데 2008년에 만들어진건데 아무것도 모르는상태라 어느정도 성공하고
앞으로 못나가겠어요...
오래된거라 정말 쉬울것 같은데 저는 도저히 모르겠네요...ㅠㅠ
저랑 같이 좀 해주시면 안될까요.. 부탁드립니다.... -
HAVU 2012.12.18 00:47
아무래도 이 내용대로 하기엔 약간 부족한 점이 없지 않아 있을 것 같네요ㅠ
64bit 레지스터 값을 볼 수가 없어서ㅠㅠ
아, 그러고 보니 올리디버거 개발자가 64bit 버전을 따로 개발한다고 한 것 같네요.
빨리 만들어지길ㅠ
-
reversecore 2012.12.27 21:42 신고
위 방법은 64bit OS 환경에서 32bit OllyDbg 를 이용하여 32bit PE 파일을 디버깅 하는 방법에 대한 얘기 입니다
64bit 레지스터는 64bit 지원 디버거에서만 볼 수 있습니다.
당장은 IDA Pro나 windbg 를 쓰셔야 하지요.
감사합니다.
-
-
-
LoGeR 2013.01.31 15:33
제가 64bit에서 사용중인데 책에 나온 예제에서 바로바로 주소로 이동하도록 설명해놓은 부분이 있는데 주소가 완전히 다르게 나오네요... 64bit라서 어쩔 수 없이 이런건가요??
-
reversecore 2013.02.08 17:43 신고
안녕하세요.
주로 스택/동적할당메모리/동적문자열 등에서 주소가 달라집니다.
어떤 예제를 보고 계신지요?
감사합니다.
-
-
root 2013.11.22 14:48
64 환경이구요
책에 제시되어있는 예제는 제일 처음 예제인 helloworld 리버싱 메인 찾는 기초리버싱 음 15페이지에 나와있는 그림 2.3에 코드 윈도우 창,어드레스가 004011A0 으로 시작이 되는데 제 작업환경에는 어드레스가 00425000 으로 시작이 되네요
이렇게 되니 책이랑 비교해가며 공부하기가 좀 힘들어서 어떻게 해야할지 궁금하네요.. 이럴땐 제가 32 비트 환경으로 컴퓨터를 바꾸거나 가상머신을 돌려야 하는 건가요?? 위에 저와 같은 말씀을 드린분이 계시는데 같은 질문 인것 같아서 정확하게 알고 싶습니다 책과 다르게 나오니 공부하기가 쉽지 않네요 ... 환경탓이긴 하지만요 ㅎㅎ... -
Prabbit's archive 2017.05.09 02:04 신고
오래 되어서 이 댓글을 보실런지 모르겠네요 2.0에서 Execute till Return [Ctrl+F9]를 하면 멈춤현상이 있는거 같은데 해결방법을 혹시 아시는지..