Radare2逆向分析dex/so/二进制等文件的使用方法

git clone https://github.com/radareorg/radare2.git

git pull

r2pm init

r2pm update

sys/install.sh

图片

 

图片

 

图片

  

radare2 -h

图片

 

rabin2是radare2套件中的一个工具,主要用来提取二进制文件中的信息

rabin2 -qi classes.dex | grep -i -e sms -e bluetooth -e install -e PackageManager -e Datagram -e Telephony -e nfc -e exec

 

rabin2 -qi ~/gyp/SecurityAnalysis/apk/classes.dex | grep -i -e sms -e bluetooth -e install -e PackageManager -e Datagram -e Telephony -e nfc -e exec

图片

 

readelf -d libcoser.so 

图片

 

i开头的命令主要用来获取各种信息

i? 

图片

 

a开头的命令用于分析文件

a? 

图片

 

VV/vv命令进入图形化界面

大写的VV进入图形化模式(键盘h、j、k、l按键移动图像)使用p/P切换图形模式,空格切换文本图形模式,文本下可以用p切换模式,小写的vv用来粗略浏览函数信息 

图片

 

按键盘q可以退出图形化界面,回到shell

 

首先rabin2加上-I参数来让rabin2打印出二进制文件的系统属性、语言、字节序、框架、以及使用了哪些加固技术

rabin2 -I 文件名

图片

 

r2 filename加载文件

r2 文件名

直接使用r2 filename进入程序。使用-d选项进入调试模式,输入!在调试的时候可以看到历史操作记录

 

使用ie命令手动打印出入口点

 

aaa分析程序中所有函数,分析前radare2识别不了函数,分析后就可以正常打印函数代码了(pdf打印函数代码),aa命令只分析主函数

 

aa或者aaa进行细致的分析

图片

 

分析完成之后,r2会将所有有用的信息和特定的名字绑定在一起,比如区段、函数、符号、字符串,这些都被称作'flags',flags被整合进<flag spaces>,一个flag 是所有类似特征的集合

 

fs查看所有的flag

图片

 

fs imports; f

打印出imports下面的信息

图片

 

为了获取更多的信息,iz命令可以再列出数据段里的字符串 

图片

 

图片

 

图片

 

axt @@ str.*

'axt'命令用来在data/code段里找寻某个地址相关的引用

'@@'就像一个迭代器,用来在地址空间里不断地匹配后面一系列相关的命令

'str.*' 是一个通配符,用来标记所有以 'str.'开头的信息,不光会列出字符串标志,同时也包括函数名,找到它们到底在哪里以及何处被调用。

图片

 

radare2分析出来哪些函数

通过afl命令列出所有的函数。通过v命令进入可视化界面。包括流程图、汇编代码、函数、符号等信息

afl显示主函数,有时候不需要分析整个二进制文件,或者有个函数radare2没有识别出来可以af来分析该函数

图片

 

s function跳转到想跳转的位置

s entry0

 

指令定位到entry0函数入口处

 

pdf查看函数汇编代码

pdf输出反汇编代码,分析函数的执行流程

pd x打印汇编信息x条

图片

 

图片

 

pdf@sym.JNI_OnLoad进行跳转,自动跳转到JNI_OnLoad函数的反汇编部分

图片

 

ahi s 是用来设置字符串特定的偏移地址,@@是一个迭代器,可以用来接受后面输入的多个参数,执行完这条命令后,图形视图会自动刷新

图片

 

ood?进入调试模式

图片

 

VV/vv进入图形化界面

大写的VV进入图形化模式(键盘h、j、k、l按键移动图像)使用p/P切换图形模式,空格切换文本图形模式,文本下可以用p切换模式,小写的vv用来粗略浏览函数信息 

图片

 

图片

 

图片

 

图片

 

图片

 

图片

 

"wa xxx"修改汇编指令为xxx

"wa nop;nop;nop;nop;"

 

px表示打印16进制数,默认从当前位置开始,参数控制打印的字节数

px 10 

图片

 

pdc反汇编函数 

图片

 

afx查看调用函数 

图片

 

?可以查看帮助,这个工具非常强大,需要多实践学习 

图片

 

afl-+jni

s 0x00001d30

pdf 

图片

 

afl

s 0x000019b8

pdg 

图片

 

VV @ sym.Java_com_ogaclejapan_smarttablayout_utils_Entry_handleNativeConfig 

图片

 

图片

 

图片

 

pdf @ sym.Java_com_ogaclejapan_smarttablayout_utils_Entry_handleNativeConfig 

图片

 

afv表示a(分析)f(函数)v(变量), 可以看到局部变量

图片

  

PEDAGDB插件

PEDA是为GDB设计的一个强大的插件,全称是Python Exploit Development Assistance for GDB。它提供了很多人性化的功能,比如高亮显示反汇编代码、寄存器、内存信息,提高了debug的效率。同时,PEDA还为GDB添加了一些实用的命令,比如checksec可以查看程序开启了哪些安全机制等等

 

pip install peda

git clone https://github.com/longld/peda.git ~/peda

echo "source ~/peda/peda.py" >> ~/.gdbinit

 

aslr显示/设定GDB的ASLR(地址空间配置随机加载)设置 

图片

 

file libploader.so附加文件

 

checksec检查二进制文件的各种安全选项

 

dumpargs函数将要被调用时,显示将要被传入函数的所有参数(默认会在反汇编代码下方自动显示)

 

dumprop在给定内存范围中Dump出所有ROP gadgets

图片

 

PEDA用法总结

https://blog.csdn.net/SmalOSnail/article/details/53149426

 

peda的使用

https://www.jianshu.com/p/283b5466684b

 

关注公众号,获取更多最新文章

图片

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哆啦安全

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值