python简单好玩的代码_用Python玩玩反汇编,一个好玩有趣的全能型的反汇编引擎Capston...

原标题:用Python玩玩反汇编,一个好玩有趣的全能型的反汇编引擎Capston

2e2d46e8e003418b8d246bdec291ffd1.jpeg

今天要给大家介绍一款全能型的反汇编引擎Capstone。这一款引擎不仅能够跨平台,还跨多种语言,其中就有我们喜爱的Python。

我们利用Capstone也能轻松写出高大上的反汇编工具啦~~~

Capstone 能轻松反汇编多种平台的机器码,例如:x86(普通PC机)、ARM(手机用得比较多)、MIPS(路由) //括号中仅作举例。

835e5099f92642e4b088f584a24dc6f7.jpeg

实验环境:

macOS

Python 2.7

1、安装Capstone 库

Mac OSX 系统:

brew install capstone

Ubuntu :

sudo apt-get install libcapstone3

其它系统或方法可以参考:

Documentation

step 0x1 Clone

我们去git上Clone 一份Capstone 源码,其中包含了大量示范代码和文档

git clone https://github.com/aquynh/capstone.git

切换到Python 示范代码的目录:bindings/python,这里你能找到大量的py演示代码。

比如,我是做ARM逆向分析的,所以对ARM反汇编比较关心,就看test_arm.py 这一份代码了。

python test_arm.py

a0685ea192ee48f4aa92f9e8faba6353.jpeg

2、最简单的例子

547ceb2d9226436084a86c061458727a.jpeg

以上代码片段的输出结果为:

062078e0ee9b442f8c6745a75396fafc.jpeg

代码的第二行导入了Capstone的库,第三行是一段十六进制表示的机器码。

第四行初始化了Capstone的Cs类,初始化需要两个参数,分别是平台的架构和模式。

c6a3eeec82ce44588074058a958f91cc.jpeg

在这一段代码中,我们想反汇编的是一段x86的64位汇编代码。

第五行,通过Cs类的disasm对二进制的机器码进行反汇编,第一个参数是机器码Byte数据,第二个参数是这段代码的“基地址”。该函数为反汇编到一条错误的指令为止。

第六行,输出地址信息、助记符、操作数字符串。

3、详细信息

Capstone有一项非常强大的技能,它能分析汇编指令的隐含信息,比如“call xxx”是调用xxx这个函数,实质是把下一条指令地址入栈后修改EIP寄存器至XXX地址,Capstone就能将这种隐含信息分析出来。

因为分析需要花费更多的时间,所以默认是关闭的,需要开发者自己打开。

打开方法:

0ffe9b84ec4c468aaeaec4c3e110a7a0.jpeg

如果不使用可,就及时关闭:

md.detail = False

完整的测试代码:

727497df37bb44b5a3b6603962dc6130.jpeg

输出的结果:

责任编辑:

PeachPy 是一个用于编写高性能汇编内核的 Python 框架,可在汇编中编写模块。 它自动化了一些细节,并允许使用 Python 生成重复的汇编代码序列。PeachPy 旨在简化编写优化的汇编内核,同时保留传统的汇编所有优化机会。一些特性:用于 Windows,Unix 和 Golang 程序集的通用汇编语法.PeachPy 可以直接生成 ELF,MS COFF 和 Mach-O 对象文件以及 Golang 工具链的汇编列表自动适应不同的调用约定和 ABIs用于不同平台的功能可以从汇编相同的源生成支持 Microsoft x64 ABI, System V x86-64 ABI (Linux 和 OS X), Linux x32 ABI, Native Client x86-64 SFI ABI, Golang AMD64 ABI, Golang AMD64p32 ABI自动分配寄存器PeachPy 是灵活的,而且允许在同一代码中混合自动分配寄存器和硬编码寄存器汇编编程中常规任务的自动化:函数 prolog 和 epilog 由 PeachPy 生成数据常量的重复数据删除 (e.g. Constant.float32x4(1.0))分析在函数中使用的 ISA 扩展支持 x86-64 指令,最高可达 AVX-512 和 SHA包含 3dnow! , XOP, FMA3, FMA4, TBM 和 BMI2.不包括 x87 FPU 和大多数系统指令使用自动生成的测试 auto-generated tests 进行严格测试,以生成与 binutils 相同的操作码自动生成元数据文件具有模块依赖性的Makefile (-MMD 和-MF 选项)C 头文件生成的函数JSON 格式的函数元数据基于 Python 的元编程和代码生成多个指令流的复用(有助于软件流水线)兼容 Python 2 和 Python 3,CPython 和 PyPy在线 DEMO: PeachPy.IO 标签:PeachPy
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值