学习r2

逆向 学习r2

https://www.megabeets.net/a-journey-into-radare-2-part-1/

RABIN2 — Binary program info extractor

$ rabin2 -I megabeets_0x1

stripped false
没有剥离符号表
static false //所以是动态链接

r2 //radare2

ie

[0x08048370]> ie

ie 命令可以打印出程序的入口点


?

在任何一个命令后面添加 ? 来获得更多的子命令信息:
[0x08048370]> i?


aa

使用 ‘aa’ 命令来分析文件

[0x08048370]> a?

aa?
aaa[?] autoname functions after aa (see afna)


flag

flag 是所有类似特征的集合,展示所有的 flag ,用 ‘fs’ 命令
[0x08048370]> fs

f

f list flags (will only list flags from selected flagspaces
[0x08048370]> fs imports; f


iz

iz – 列出数据段里的字符串


axt

[0x08048370]> axt @@ str.*

axt [addr] find data/code references to this address

@@ # foreach iterator command:


x

| x @@ sym.* run ‘x’ over all flags matching ‘sym.’ in current flagspace


s

s # Help for the seek commands. See ?$? to see all variables


afl

af?
用 ‘afl’ 指令,这个指令代表着分析函数列表(Analyze Functions List).


pdf

s main
用 ‘pdf’(输出反汇编代码)


m

m 可以用来标记特定的偏移地址,之后输入对应的key就可以跳转到你设置的地方.


V

V 视图模式
p进入下一个模式,q退出视图模式

shell 里输入 VV来进入图形模式
Left/Down/Up/Right = h/j/k/l
视图帮助 ?


视图模式直接跳转到 beet 函数
上面说过的方框中的数字吗?这里直接按 3 就可以了

图形模式,使用 g 命令跳转到一个函数
gd 命令,d 就是每一个跳转或者调用代码旁边的 字母
快速跳转命令 o
返回命令q

图形模式执行命令
? 0x88

寻找函数
f sym. 来定位出 sym.beet 函数
s sym.beet
pdf @ sym.beet 命令,‘@’ 表示临时查找


ahi

:> ahi s @@=0x080485a3 0x080485ad 0x080485b7
ahi s set base to string (1)
ahi s 是用来设置字符串特定的偏移地址
@@是一个迭代器,可以用来接受后面输入的多个参数,执行完这条命令后


r

r 图形模式刷新


rahash2

rahash2 包含很多种算法来求证一个文件或者字符串的校验值,具体的用法请使用 ‘man rahash2 ‘.
在r2里执行命令:!rahash2 -E rot -S s:13 -s “Megabeets\n”


00

oo reopen current file
ood [args] # reopen in debug mode (with args)


dc

dc Execution continuation commands
| dc Continue execution of all children