angr详细的学习总结

一.angr对象

1.angr对象的创建:

使用angr的第一步总是将二进制文件加载到项目中,这样就可以实现对加载的二进制可执行文件分析和模拟。

代码展示:

import angr #导入angr模块

proj=angr.Project("二进制文件路径")

2.angr对象的基本属性:

angr对象创建完毕后,可以访问angr对象的基本属性。angr对象的基本属性包括:CPU架构、二进制文件名称和二进制入口点地址。

代码展示:

print(proj.arch) #查看可执行文件的CPU架构

print(proj.entry) #查看可执行文件的入口地址

print(proj.filename)#查看可执行文件的文件名

二.angr中project.factory类的使用方法

angr中有很多类,其中大部分类需要实例化一个对象。为了避免让你到处传递对象。angr官方提供了preject.factory,该类为经常使用的对象提供了几个方便的构造函数,包括:block函数、

1.block函数

在angr中,以基本代码块为单位分析代码,你将得到一个block对象,这个block对象包含了许多代码块信息。project.factory.block(),该函数用于从给定地址中提取基本代码块。

以下是提取代码块的演示:

block=proj.factory.block(地址) #这是构造block对象的方法,地址可以是入口地#址。此时block就是一个基本代码块对象。

block.pp() #将block对象中内容输出展示

在获取完block对象后,可以通过block对象,实现将提取得到的基本代码块转换为其他表示方法。(vex,capstone)。

以下是通过block对象实现将提取到的基本代码块准换为其他表示:

block.capstone

block.vex

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值