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回购
- 作者:吉尔Dabah
- 许可:GPLv3的
diStorm3用法示例
通过拆机产生msfpayload阶段性反转的外壳:
[email protected]:~# 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