2014. 6. 14. 01:27

[01] x86 disassembly 소개

 이책은 무엇을 다루나? 


이책은 x86 기계어(machine code)를 사람이 이해할 수 있는 x86 assembly code로 decompile하는 과정을 다룬다. 몇몇 topic은 x86에 국한되지 않고 통상적인 computer architecture를 다루기도 한다.


 이책은 범위는? 


x86 decompile에 대해 다룬다. 그래서 assemble code나 C/C++ code가 사용되며, 자료 구조, 패턴 매칭등이 언급될 것이다.


 전제 조건은?


독자는 x86 assembly, C/C++ 프로그래밍을 다룰 줄 알아야 한다.


 disassembly란?


프로그램은 사람이 이해하기 쉬운 high-level 언어가 사용되며, 이는 compile을 통해 machine code라는 binary format으로 변환된다. 이 machine code는 사람이 이해하기 쉽지 않다.

프로그램은 종종 중복되거나 다른 프로그램과 상호작용이 필요한 작업을 수행하기도 한다. 이에 따라 소스 코드나 적합한 문서없이는 이러한 작업을 수행하기가 쉽지 않다. 본 책은 이러한 machine code를 C/C++ 같은 high-level 언어와 그에 상응되는 assembly code로 변환하는 방법을 알려준다. 이러한 작업은 다음을 가능하게 한다.


1. 다른 환경(environment)의 source code를 compile하여 computer platform을 변경할 수 있다.

2. 프로그램에서 사용하는 algorithm을 확인할 수 있어, 다른 프로그램에 응용할 수 있다.

3. 원본 source code 접근 없이 보안 취약점을 발견할 수 있다.

4. 이전의 프로그램에서 새로운 interface를 구현할 수 있다.