首页
社区
课程
招聘
[原创]Radare2逆向分析dex/so/二进制等文件的使用方法
发表于: 2020-12-12 11:39 5392

[原创]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


欢迎各位大佬关注公众号


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 2
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//