首页
论坛
课程
招聘
[原创]Radare2逆向分析dex/so/二进制等文件的使用方法
2020-12-12 11:39 3240

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

2020-12-12 11:39
3240

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(变量), 可以看到局部变量

 

PEDA是GDB插件
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

 


欢迎各位大佬关注公众号


[2022夏季班]《安卓高级研修班(网课)》月薪三万班招生中~

收藏
点赞2
打赏
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回