很久以前就想着自己开发一个反汇编引擎了,不久前又对这方面有兴趣,所有就研究了一下,其实也就那么一回事,不算太难的东西,语言基础比较好的兄弟可以去读一下微软的官方文档《64-ia-32-architectures-software-developer-instruction-set-reference-manual-3253》里面的2.2 IA-32E MODE和附录A,其它可以读一下《ArtofDisassembly》。
开始前请先下载一些表,这些表用来解析Opcode的,下面每一处都用到这些表,当然自己有的话就不需要了,下载传送门Opcode解析表下载
我们现在开始,先了解Opcode的基本结构。如图所示:
一个Opcode是由前缀(prefix),主操作码(code),ModR/M,SIB,偏移量(offset),立即数(Immediate)构成的,下面分别介绍。