diStorm3

diStorm是一个轻量级的,易于使用和快速的分解库。 diStorm拆卸在16,32和64位模式下的指令。支持的指令集:FPU,MMX,SSE,SSE2,SSE3,SSSE3,SSE4,支持3DNow! (W /扩展),新的X86-64指令集,VMX,AMD的SVM和AVX! diStorm的新的接口的输出是一个特殊的结构,可以描述任何x86指令,这种结构可以在以后格式化成文字显示太。 diStorm是用C写的,但对于快速使用,diStorm也有包装在Python / Ruby的/ Java和可以很容易地使用C语言也是如此。它也是最快的反汇编库!源代码是非常干净,可读性强,便于携带和平台无关的(同时支持小和大endianity)。 diStorm完全取决于C库,因此它可以嵌入或内核模块中使用。需要注意的是diStorm3是向后diStorm64的接口兼容(但是,请确保您使用了最新的头文件)。

资料来源:https://code.google.com/p/distorm/
diStorm3 首页
diStorm3 源代码版本库

diStorm3用法示例

通过拆机产生msfpayload阶段性反转的外壳:

:~# python
Python 2.7.3 (default, Mar 13 2014, 11:03:55)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from distorm3 import Decode, Decode16Bits, Decode32Bits, Decode64Bits
>>> l = Decode(0x100, open("stagedrev.bin", "rb").read(), Decode16Bits)
>>> for i in l:
...  print "0x%08x (%02x) %-20s %s" % (i[0],  i[1],  i[3],  i[2])
...
0x00000100 (02) 7f45                 JG 0x147
0x00000102 (01) 4c                   DEC SP
0x00000103 (01) 46                   INC SI
0x00000104 (02) 0101                 ADD [BX+DI], AX
0x00000106 (02) 0100                 ADD [BX+SI], AX
0x00000108 (02) 0000                 ADD [BX+SI], AL
0x0000010a (02) 0000                 ADD [BX+SI], AL
0x0000010c (02) 0000                 ADD [BX+SI], AL
0x0000010e (02) 0000                 ADD [BX+SI], AL
0x00000110 (02) 0200                 ADD AL, [BX+SI]
0x00000112 (02) 0300                 ADD AX, [BX+SI]
0x00000114 (02) 0100                 ADD [BX+SI], AX
0x00000116 (02) 0000                 ADD [BX+SI], AL
0x00000118 (01) 54                   PUSH SP
0x00000119 (03) 800408               ADD BYTE [SI], 0x8