-
-
[原创]Radare2逆向分析dex/so/二进制等文件的使用方法
-
发表于: 2020-12-12 11:39 5392
-
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
欢迎各位大佬关注公众号
[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!