역공학과 OllyDebugger
(Reverse Engineering )


Prologue

 제가 리버스 엔지니어링(Reverse Engineering)이라고 불리는 역공학을 처음 접한건 14살. 중학교 1학년 시절 입니다.
이렇게 이야기하고보니 벌써 14년전 일이네요.
처음 제가 컴퓨터라는 것에 미치기 시작했던 것도 그쯤인것 같습니다.

'사과전쟁' 이라는 소설을 우연히 보고는 그 이야기에 감동을 받았던 기억이 납니다.
그리고 무작정 나도 이런 사람(?)이 한번 되어 보자라는 생각 하나만으로 열심히 컴퓨터 공부를 했던것 같습니다.
아직 보지 못하신분은 한번쯤 가벼운 마음으로 읽어보셨으면 합니다.
물론 소설인 만큼 지식을 전달하는 책이 아니기 때문에, 학습에 도움이 되진 않습니다.
단지 재미있습니다. :)
카이스트와 포항공대의 해킹전쟁 이야기죠.

아무튼 해킹과 더불어 코드 크래킹에도 관심을 갖게 되었고, 그렇게 시작된게 리버스 엔지니어링이었습니다.
(ISBN: 5000067006)

당연히 당시에는 리버스 엔지니어링이 무엇인지도 잘 몰랐고, 그냥 크랙이라고만 생각했습니다.
사실 그때는 '리버스 엔지니어링'이라는 용어도 알려지지 않았습니다.


Tool

 예전에는 크랙(사실 크랙이라는 용어가 맞지 않지만, 예전에는 그렇게 사용했으므로 혼용하겠습니다)이라고 하면, Soft-Ice 가 빠질 수 없었습니다. '누메가'라는 회사에서 만든 제품인데, 커널 디버깅까지 지원되는 무시무시한 녀석이었죠.
기억으로는 4.05 버젼까지 개발되다가 회사 합병(?)이 되면서 'SofteIce Driver Suite' 라는 이름으로 변경되었습니다. 당시에 이놈을 가지고 얼마나 삽질 아닌 삽질을 했었는지, 진짜 삽질이라면 지하 100m 는 넉근히 판것 같습니다 =_=

 아무튼 시대에 따라 Tool 은 변합니다. 환경이 바뀌고 사람들의 취향과 목적이 계속 변화하니까요.
요즘에는 OllyDebugger 라는 프로그램을 많이들 사용합니다.
홈페이지 주소는 http://www.ollydbg.de/ 이고, OllyDbg를 무료로 다운로드 받을 수 있습니다.
비록 커널모드 디버깅을 지원하지는 않지만, 무료이면서, 그 기능과 사용성이 매우 막강합니다.


Olly Debugger

 아래는 OllyDbg 2.0 을 실행하여, 파일은 Open 한 모습입니다.

이보다 아름다울 수 없습니다.
사실 얼핏 보면 복잡해 보이기만 하지만, 사용하다보면 익숙해 집니다. :)
어셈을 아시는 분이라면 더욱 부담없이 금새 친해지실거라고 믿습니다.
블로그 목적이 OllyDbg 사용법을 설명하는 것이 아니므로 다루지 않도록 하겠습니다.

참, OllyDbg 하면 꼭 함께 따라오던것이 Crack-Me 입니다.
OllyDbg 에 대해서 googling 하면 대부분의 사이트에서 OllyDbg 를 통해 Crack Me 문제를 푸는것을 다루고 있습니다.
눈치 채셨을지 모르겠지만, Crack Me 는 크랙을 하기위해 의도적으로 만들어진 프로그램입니다.
일종의 크랙놀이를 위한 대상 프로그램이지요.
만드는 사람은 크랙하기 어렵게 만들고, 푸는 사람들은 누가 더 명확하고 빠르게 푸는지를 목적으로 합니다.


Epilogue

 사실 리버싱이라는게 정말정말 어렵던 시절이 있었습니다.
환경을 구축하는데만도 엄청난 시간을 투자해야 했었고, 정보를 얻기도 어려웠습니다.
하지만 요즘에는 너무나 쉽게 정보를 얻을 수 있고(관련 서적이 나올 정도니까요), 프로그램도 너무나 사용하기 좋습니다.
IDA Pro 라는 프로그램처럼 Code Flow 까지 그려주는 디버거가 있을 정도니까요.
예전에는 디셈블러와 Soft-ICE 이외에는 마땅히 의존하 프로그램조차 없었습니다 =_=

 아무튼 앞으로 종종 리버싱에 대해서 블로깅도 하도록 하겠습니다.
(그래봤자 역시 Open 된 이 공간에서는 Crack Me 이외에 다른걸 크랙할 수 없겠지요... ㅠ.ㅜ)