'Reverse Engineering'에 해당되는 글 1건

  1. 2008/02/17 귀차니스트 Hexrays Decompiler - C Pseudocode 디컴파일러 (3)

  컴퓨터에 이미 바이너리로 만들어진 파일을 파악하기는 쉽지 않지요. 100% 파일의 내용을 파악하려면 아마 영화 "매트릭스"에 나오는 네오의 경지쯤 되어야 가능할 것입니다. 하지만, 100%는 아니라도 어느 정도는 해당 CPU에 대한 명령어 스펙 시트들이 공개되어 있기도 하고, 파일 형식들도 공개되어 있기 때문에 그를 이용하면 프로그램형식을 분석할 수 있죠.
  하나의 예로 독일의 한 개발자가 개발하고 있는 OllyDebugger 라는 공개 디버거 툴이 있습니다. 주소는 http://www.ollydbg.de 입니다. 이 프로그램을 이용해서 예전에 한 게임을 한글화해보기도 했습니다. 하지만, 단점은 우리 사람이 쉽게 인식할 수 있는 추상성 높은 언어가 아닌 로우레벨의 언어인 기계어를 단순히 asm으로 대치하여 보여주는 언어라는 점이죠.

OllyDBG


  위와 같은 언어로 표시됩니다. 보기 불편하죠^^?. OllyDBG 로 많은 프로그램을 뜯어본 저지만 볼 때 마다 불편합니다.
  하지만, 어떤 개발자가 무척 편리한 툴을 만들었습니다. 바로 DataRescue라는 회사에서 내놓은 IDA( Interactive Disassembler ) Pro 툴에서 플러그인 형식으로 작동하는 툴을 내놓은거죠. 이름은 Hexrays Decompiler 라고 합니다. 화면을 한 번 보도록 하죠.

IDA


  위 코드는 autostitch.exe 라는 간단하게 연결된 그림파일들을 선택하여 파노라마 된 사진을 만들어 주는 프로그램의 디어셈 코드입니다. 그런데 이 코드들을 봐도 간단하게 어떤 역할을 하는지 알 수 없습니다. 개별적인 명령어인 나무를 볼 수 있으나 역할인 숲은 볼 수가 없죠.
  그런데 Hexrays Decompiler를 설치하고 나서, 이 코드들을 Pseudocode로 변환하면 아래와 같이 변합니다.

Hexrays


  보고 이해하기 아주 쉽지 않나요^^? 물론 100% 원래 원본의 코드로 돌아가지는 않습니다. 실제 컴파일러마다 구현하는 Code도 다르고 단순히 프로그램밍 언어를 바이너리 코드를 바꾸는 것이 아닌 해킹을 방지하고자 스택 방지 코드, 오버런 방지 코드들을 삽입하기 때문입니다.
  그래도 이 플러그인이 없는 것보다는 있는 것이 대단히 유용하겠죠. 플러그인의 소개와 더불어 프로그램의 설명 동영상은 아래의 링크로 가보시길 추천합니다. 그럼 이 플러그인이 많은 도움이 되었으면 하네요.

크리에이티브 커먼즈 라이센스
Creative Commons License
2008/02/17 21:59 2008/02/17 21:59

댓글을 달아 주세요

  1. 준호씨 2008/02/17 23:45  댓글주소  수정/삭제  댓글쓰기

    네오 ㅋㅋ
    그대는 규오~ 상오보다는 규오가 좀 있어 보이지 않남 ㅋㅋ

  2. seso 2011/03/10 02:02  댓글주소  수정/삭제  댓글쓰기

    이런 유용한 툴이 있었다니~

    잘 보고 갑니다^^