Python中capstone实现反汇编可执行文件

1、基本案例——disasm函数

capstone有非常简单的API,所以使用该框架编写工具非常简单。接下来,下面的代码实现的功能是反汇编一些X86二进制文件,并打印出其对应的汇编语句。

代码展示:

from capstone import *  #将capstone模块中函数全部导入
code=b"\x55\x48\x8b\x13\x00\x00"  #设置需要进行反汇编的十六进制机器码
​
#创建Cs类对象md,我们需要给这个类传两个参数:硬件架构,硬件模式(位长)
md=Cs(CS_ARCH_X86,CS_MODE_64) #表示此时md对象对采用x86架构64位,对机器码进行汇编
​
for i in md.disasm(code,0x1000): #循环遍历disasm函数返回的列表
    print("0x%x:\t %s\t%s" %(i.address,i.mnemonic,i.op_str))

代码解释:(此时的行数是不计注释和空行)

代码的前两行的作用分别是导入模块中需要使用的函数(或类)和设置需要进行反汇编的机器码。第三的作用是为Cs类创建一个类对象md,便于在后续代码中调用Cs类中定义的方法。

反汇编二进制文件(机器码)实际上使用的是Cs类中定义的成员函数disasm()。因为我们在代码的第三行已经初始了一个类对象md,所以当我们要使用disasm()这个函数的时候,直接使用类对象调用即可---md.disasm()。disasm需要传两个参数:

①第

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值