'Decompiler'에 해당되는 글 2건

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

DebuggerOnC

Programming 2010/09/01 02:34 귀차니스트

사용자 삽입 이미지

 

  안녕하세요^^. 멤버십에 들어와서 생활을 하다보니 블로그에 글이 적어지는 듯한 이유를 알 수 있을 것 같습니다. 사실 뭐 조금 게으른것도 영향이 클 것 같군요. 과제를 3개월 단위로 하나를 수행하는데, 원래 4명으로작하려고 했었다 2명이 결국 도중에 나가게 되어 2명이서 과제를 완료한 DebuggerOnC 라는 프로그램입니다. 

  이 프로그램의 특징은 우선 x64 프로세스를 대상으로 동작하는 Debugger 이자 Decompiler 입니다. 즉 한마디로 컴파일 되어 실행된 프로그램을 어셈블리와 C코드로 분석을 할 수 있게 도와주는 툴입니다. 이 것을 3개월 동안 만들었습니다^^. 물론 약간의 사정이 있어 기간상 문제도 있었구요.

  저번에 올라왔었던 글이 이 프로그램에서의 Decompiler 쪽을 담당하는 모듈입니다. 그에 대한 기능을 대략적으로나마 완성이 되었을 때 올렸었죠^^. 일단 8월 10일날 프로그램에 대해서 1차적인 완료는 끝이 났습니다. 왜냐구요? 이게 8,9,10월에 진행하는 또 다른 과제가 있기 때문입니다. 

  새로 시작하게 되는 과제는 상용 서비스를 진행할 예정이기 때문에 공개는 현재 힘들듯 하고. 아마 이 과제가 끝나게 되면 DebuggerOnC의 개선과 더불어 OS의 기능 추가도 진행할 수 있을 듯 합니다. 오랫만에 들른거 치고는 또 많이 남기지는 못하는군요.

  머릿속에 많은 아이디어는 존재하는데 실제로 개발하기에 시간이 부족하기 그지 없습니다. 만들고 싶은 것은 많은데 아쉽네요^^. 탐색기도 기존의 Windows Explorer는 불편한 점이 종종 발견되어 새로운 부분을 생각하고 있긴 한데 어떻게 될지 모르겠습니다. ㅎㅎ

  8,9,10월이 끝나고 제대로 된 상용 서비스가 시작된다면 아마 또 그 쪽 관련해서 글을 올릴지도 모르겠군.모바일 멀티 플랫폼으로 개발하는 게임이다 보니 ^^ 4명이서 제작하고 있는 만큼 퀄리티도 꽤 나올 듯 합니다. 

  이 글을 올린 이유는 Decompiler 기능을 마치면서 기념을 위해서 올린거랍니다. 더 큰 프로그램을 만든 적도 있긴 하지만 제가 원해서 이 정도로 만들어본 프로그램은 극히 드물기 때문이죠 ㅎㅎ 그럼 다음 포스팅을대해 주시면 감사하겠습니다.

크리에이티브 커먼즈 라이센스
Creative Commons License
2010/09/01 02:34 2010/09/01 02:34

댓글을 달아 주세요

  1. 정경석 2011/04/11 02:42  댓글주소  수정/삭제  댓글쓰기

    상규형 안녕하세요! ㅋㅋ
    블로그 돌다가.. 들어오게되었습니다..
    좋은글 많이 보고 나갑니다^^
    저도 블로그.. 해볼까 하는 맘이 들어요! ㅋㅋㅋ

  컴퓨터에 이미 바이너리로 만들어진 파일을 파악하기는 쉽지 않지요. 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  댓글주소  수정/삭제  댓글쓰기

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

    잘 보고 갑니다^^