我是逆向工程的绝对新手。我有一个 32 位 lsb arm 二进制文件,我想使用radare2 对其进行逆向工程。我应该如何开始?
我如何在radare2 中启动RE 进程?(更改寄存器)
逆向工程
手臂
雷达2
二进制
2021-07-11 09:56:27
2个回答
不清楚你到底在要求什么,所以我会从基础开始。
逆向工程101
如果您以前没有组装或逆向工程方面的经验,我建议您从那里开始,因为您需要先了解技术,然后才能了解工具。
您可以从任何适合您的来源开始学习。
雷达2 101
开始学习radare的推荐来源是radare2书
简介
本书旨在涵盖radare2 的大部分使用方面。逆向工程和分析二进制文件的框架
您还可以查看我的关于radare2 的系列教程,其中介绍了开始使用radare2 进行逆向所需的所有信息。您也可以查看radre2 wiki。
我强烈建议您从这些来源开始。你会发现它们很有帮助,我敢肯定!
现在,进入更具体的答案。如何将其用于逆向工程?以下是基本步骤:
安装
Radare2 的开发非常快——项目每天都在发展,因此建议使用当前的 git 版本而不是稳定版本。有时稳定版本不如当前的 git 版本稳定!
$ git clone https://github.com/radare/radare2.git
$ cd radare2
$ ./sys/install.sh
静态会话
要打开基本的静态会话(即无需调试),您只需将程序名称传递给radare2:
$ r2 ./program_name
— Thank you for using radare2. Have a nice night!
[0x08048370]>
调试会话
要使用radare2 pass 进行调试-d:
$ r2 -d /program_name
Process with PID 6972 started...
= attach 6972 6972
bin.baddr 0x00400000
Using 0x400000
asm.bits 64
-- Execute a command on the visual prompt with cmd.vprompt
[0x7fc6b4200c30]>
更改寄存器
由于您特别提到了这个问题,您可以使用dr命令和子命令修改寄存器。只需执行dr?以获取有关命令及其子命令的帮助。例如,如果您想更改RAX,只需执行:
[0x00400697]> dr rax
0x00400697
[0x00400697]> dr rax=0x41414141
0x00400697 ->0x41414141
[0x00400697]> dr rax
0x41414141
我通常使用的工作流程:
$> radare2 -d /path/to/my/bin
[some addr]> aaa
[some addr]> afll
[some addr]> db sym.main
[some addr]> dc
[main addr]> v!
从这里,您将进入可视模式,您可以单步执行二进制 vias并单步跳过行 via S。
这一系列命令的作用是:
- 运行各种分析任务(将在完成时显示)
- 列出二进制文件中的函数(在详细模式下)
- 在
main函数处设置断点(假设它存在) - 一直持续到到达这个断点(即 的开始
main) - 进入视觉模式
当然,这只是我碰巧使用的一个特定工作流程。还有其他对其他事情有用的命令,例如:
s sym.main- 寻找main函数的地址s 0xdeadbeef- 我们可以通过任意地址来查找pdf- 显示您当前所在函数的反汇编iM- 显示程序入口点的地址iZ- 显示在二进制文件中找到的 ASCII 字符串aaaa- 这会运行比aaa上面更详细的分析(可能需要一些时间)VV- 显示当前函数的控制流图(CFG)(无价工具)dr rax- 显示rax寄存器的内容(显然任何寄存器都可以在这里替换,您甚至可以通过 更改值dr rax = 0x12)x @ 0xdeadbeef- e x在地址处访问内存0xdeadbeef? 0xdeadbeef- 将提供的数字 (0xdeadbeef)转换为各种基数和格式
这不是一个完整的教程,但我当然希望它对你有所帮助。我发现一些非常有用的资源:
完全免责声明:以下链接是我自己的链接之一
- Crackerjack - 介绍和拼图 A 解决方案(使用我正在制作的一系列裂纹的radare2 的演练)
其它你可能感兴趣的问题