블로그는 귀차니즘

First Sensation
  • 공지
  • 지역로그
  • 태그
  • 방명록

Hexrays Decompiler - C Pseudocode 디컴파일러

Reverse Engineering 2008/02/17 21:59 귀차니스트
  컴퓨터에 이미 바이너리로 만들어진 파일을 파악하기는 쉽지 않지요. 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도 다르고 단순히 프로그램밍 언어를 바이너리 코드를 바꾸는 것이 아닌 해킹을 방지하고자 스택 방지 코드, 오버런 방지 코드들을 삽입하기 때문입니다.
  그래도 이 플러그인이 없는 것보다는 있는 것이 대단히 유용하겠죠. 플러그인의 소개와 더불어 프로그램의 설명 동영상은 아래의 링크로 가보시길 추천합니다. 그럼 이 플러그인이 많은 도움이 되었으면 하네요.

http://www.hex-rays.com 
크리에이티브 커먼즈 라이센스
Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-동일조건변경허락 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
2008/02/17 21:59 2008/02/17 21:59
TAG ASM, Decompiler, Hexrays, Reverse Engineering
받은 트랙백이 없고, 댓글 2개가 달렸습니다.

트랙백 주소 :: http://www.filewiki.net/tc/trackback/10

댓글을 달아 주세요

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

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

    • 귀차니스트 2008/02/18 00:30  댓글주소  수정/삭제

      넌 준오로 가자 ㅋㅋ
      우리 모두 까마귀 오(烏)시리즈로 가자꾸나...

◀ 이전페이지 1 다음페이지 ▶

블로그 이미지
First Sensation 귀차니스트
rss
  • 관리자
  • 글쓰기

카테고리

  • 전체 (110)
    • Computer (3)
    • Language (14)
    • Reverse Engineering (1)
    • Algorithm (9)
    • TopCoder (3)
    • Library (2)
    • Programming (19)
    • Programming Tip (9)
    • PSP-Programming (10)
    • Program (5)
    • Small Talk (31)
    • Document (4)

최근에 올라온 글

  • Gradient 작성중에 있습.... (3)
  • 게임&인터랙티브 애플리....
  • 한게임 자동테트리스 Ve.... (24)
  • Intel 64 And IA32 Arch.... (2)
  • 한게임 자동테트리스 Ve.... (24)

최근에 달린 댓글

  • 다운어덯게 받아요. difl 2008
  • 멋있네요 ㅎㅎ. 준호씨 2008
  • ^^; 그러셨군요.. 사실 동영.... 귀차니스트 2008
  • ㅋㅋ 속도 튜닝의 무서움 ㅜ.... 귀차니스트 2008
  • 관리자만 볼 수 있는 댓글입.... 비밀방문자 2008

달력

«   2009/01   »
일 월 화 수 목 금 토
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

링크

  • kkamagui 프로그래밍 세상.
  • 류광의 번역 이야기.
  • 서광열의 프로그래밍 언....
  • 준호씨의 블로그.
  • 최익필의 이름없는 블로그.
  • 위키는 귀차니즘.

최근에 받은 트랙백

  • 궁극의 예외처리. 이름없는 블로그 2008
  • Maximum sum. 티스토리 지점 2008

글 보관함

  • 2008/12 (1)
  • 2008/11 (4)
  • 2008/10 (2)
  • 2008/09 (3)
  • 2008/08 (5)

태그목록

  • 버퍼 오버플로우
  • Inheritance
  • OS
  • RLE
  • Shell
  • 디자인
  • Catch
  • Reflection
  • \r\n
  • 상속
  • Reference
  • Secure
  • Codejock
  • As Casting
  • 준비
  • Mouse Message
  • 갑
  • Timer
  • SSD
  • Singleton
  • Image
  • KDevelop
  • Reverse Engineering
  • ostream_iterator
  • 팡야계산기
  • auto_ptr
  • Try
  • 이미지 프로세싱
  • Decompiler
  • 공백

지역로그 : 태그 : 방명록 : 관리자 : 글쓰기
귀차니스트’s Blog is powered by Textcube 1.7.5 : Risoluto / Designed by DesignNia.net