欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

[翻译]Radare2文档(1)

[翻译]Radare2文档(1)

简介

本文旨在介绍一款用于逆向工程和分析二进制文件的框架radare2,涵盖该框架常见的使用情境。

历史

Radare项目于20062月开始,提供了一个免费简单的命令行模式的十六进制编辑器,支持64位偏移。设计之初的目的是使用该工具执行搜索并帮助从硬盘恢复数据。

此后,该项目得到进一步发展,成为一个分析二进制文件的完整框架,同时利用了基本的* NIX概念。 这些概念包括了著名的一切皆文件在使用stdin/stdout(标准输入/输出)交互的小程序保持简单的思想。

该项目本身是一个单人项目。非常感谢作者将这个想法和源码分享出来。

该项目的重点是十六进制编辑器。 此外,该项目还包含汇编器/反汇编程序,代码/数据分析和图形工具,脚本,易于Unix集成等功能。

概览

Radare2项目是一组可以一起使用或独立使用的小型命令行实用程序。

l  Radare2

       十六进制编辑器和调试器的核心。 Radare2允许用户打开一些输入/输出源,就像它们是简单的普通文件,包括磁盘,网络连接,内核驱动程序,调试过程等等。它实现了一个高级命令行界面,用于移动文件,分析数据,拆卸,二进制修补,数据比较,搜索,替换,可视化。 它可以配合各种脚本语言,包括RubyPythonLuaPerl

l  Rabin2

       从可执行二进制文件中提取信息的程序,如ELFPEJava CLASSMach-O rabin2被主要用于获取导出的符号,导入,文件信息,交叉引用(外部参照),库依赖性,节等信息。

l  Rasm2

    用于多种架构(包括Intel x86x86-64MIPSARMPowerPCJavaMSIL)的命令行汇编和反汇编程序。

$ rasm2 -a java 'nop'

00

$ rasm2 -a x86 -d '90'

nop

$ rasm2 -a x86 -b 32 'mov eax, 33'

b821000000

$ echo 'push eax;nop;nop' | rasm2 -f -

509090

l  Rahash2   

      基于块的哈希生成工具。 从小文本字符串到大型磁盘,rahash2支持多种算法,包括MD4MD5CRC16CRC32SHA1SHA256SHA384SHA512parxorxorpairmod255hamdistentropy rahash2可用于检查大文件,内存转储和磁盘的完整性或跟踪更改。

$ rahash2 file

file: 0x00000000-0x00000007 sha256: 887cfbd0d44aaff69f7bdbedebd282ec96191cce9d7fa7336298a18efc3c7a5a

 

$ rahash2 file -a md5

file: 0x00000000-0x00000007 md5: d1833805515fc34b46c2b9de553f599d

l  Radiff2

      实现多种算法的二进制差分实用程序。 它支持二进制文件的字节级或增量差异对比,可以使用Radare代码分析或者使用rsc idc2rdb脚本进行IDA分析,从而查找基本代码块中的更改。

l  Rafind2

在文件中查找字节模式的程序。

l  Ragg2

       ragg2将用简单的高级语言编写的程序编译成x86x86-64ARM的小二进制文件。

$ cat hi.r

   /* hello world in r_egg */

   write@syscall(4); //x64 write@syscall(1);

   exit@syscall(1); //x64 exit@syscall(60);

   main@global(128) {

     .var0 = "hi!\n";

     write(1,.var0, 4);

     exit(0);

   }

   $ ragg2 -O -F hi.r

   $ ./hi

   hi!

 

   $ cat hi.c

   main@global(0,6) {

     write(1, "Hello0", 6);

     exit(0);

   }

   $ ragg2 hi.c

   $ ./hi.c.bin

   Hello

l  rarun2

       用于在不同环境中运行程序的启动器,具有不同的参数,权限,目录和覆盖的默认文件描述符。 rarun2可用于:

n  破解小程序

n  模糊测试

n  测试组件

简单的rarun2脚本

$ cat foo.rr2

   #!/usr/bin/rarun2

   program=./pp400

   arg0=10

   stdin=foo.txt

   chdir=/tmp

   #chroot=.

   ./foo.rr2


进行Socket连接

  $ nc -l 9999

   $ rarun2 program=/bin/ls connect=localhost:9999

通过将IO重定向到另一个终端来调试程序

        1 打开一个新的控制台,并且输入“tty”来获得终端名称

$ tty ; clear ; sleep 999999

/dev/ttyS010

    2 创建一个包含以下名为foo.rr2rarun2配置文件的新文件:

#!/usr/bin/rarun2

program=/bin/ls 

stdio=/dev/ttys010

    3 启动以下radare2命令:

r2 -R foo.rr2 -d ls

l  rax2

     一个用于shell的简约数学表达式求值器,用于在浮点值,十六进制表示,十六进制字符串到ASCII之间进行基本转换,八进制到整数等。它还支持字节顺序设置,如果没有参数,可以用作交互式shell 给出。

$ rax2 1337

0x539

 

$ rax2 0x400000

4194304

 

$ rax2 -b 01111001

y

 

$ rax2 -S radare2

72616461726532

 

$ rax2 -s 617765736f6d65

awesom

获得radare2

您可以从网站http://radare.org/GitHub存储库https://github.com/radare/radare2获取radare

二进制包可用于多个操作系统(UbuntuMaemoGentooWindowsiPhone等)。 然而,非常鼓励您获取源代码并自行编译以更好地了解依赖关系,使示例更易于访问,当然也可以使用最新版本。

通常每个月都会发布一个新的稳定版本。 有时可以在http://bin.rada.re/获得压缩包。

radare开发库通常比稳定版本更稳定。 要获取最新版本:

$ git clone https://github.com/radare/radare2.git

这可能需要一段时间,稍微等待一下。

要更新存储库的本地副本,请在radare2源代码树中的任意位置使用git pull

$ git pull

如果您对源进行了本地修改,您可以使用以下命令恢复它们:

$ git reset --hard HEAD

或者提交补丁:

$ git diff > radare-foo.patch

获得r2更新和系统安装的最常见方法是使用:

$ sys/install.sh
帮助脚本

查看sys目录下的脚本,那些脚本通常用于自动化与同步,构建和安装r2及其绑定相关的内容。

最重要的是sys / install.sh脚本。它会拉,清洁,构建和部署 r2系统。

部署过程是使用符号链接安装所有程序,库,文档和数据文件而不是复制文件的过程。

默认情况下,它将安装在/ usr中,但您可以定义一个新的前缀作为参数。

这对于开发人员是有用的,因为它允许他们只需运行'make'并尝试更改,而无需再次运行make install

清理

清理源代码树对于避免在ABI更改后链接到旧对象文件或不更新对象等问题很重要。

以下命令可能会帮助您获得最新的git克隆:

$ git clean -xdf

$ git reset --hard @~10

$ git pull

如果要从系统中删除以前的安装,则必须运行以下命令:

$ ./configure --prefix=/usr/local

$ make purge


注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功