问题标签 [radare2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 为什么radare2为非空main()返回一个空的导入列表?
我有以下要为其生成调用图的小程序:
我以一种我希望保留所有信息的方式编译它,以确保可以在二进制文件中找到所有必需的符号:
然后我运行radare2
生成一个调用图,使用 Python 对其进行格式化pprint
并搜索sym.main
:
输出包含:
这意味着(至少我认为是这样)main()
包含对所列符号的调用。
当我现在重复所有内容但添加-static
到g++
调用时,sym.main
条目不再包含任何符号:
结果是
对此我能做些什么吗?当它们被粘在二进制文件上时,我如何才能看到对标准库的调用?
radare2 - 如何隐藏自动生成的评论?
在 Radare2 中反汇编时,输出用内存窥视、十进制转换等的随机注释进行修饰,例如:
我发现它们在很大程度上无关紧要:例如,我不在乎将0x14
其用作位移而不是固定地址时的值。我使用什么命令来隐藏它们,无论是全局还是特定地址?
reverse-engineering - 如何在离线安装中安装radare2插件?
我了解如何正常安装插件
但是当我在一个已经安装了radare2但没有互联网访问的系统上时,我将如何安装r2dec?有没有办法复制源代码并在某处编辑配置文件以通知 r2 它的存在?
dump - 转储中的虚拟地址
当我使用 XDD 和 Radare2 时,为什么转储文件中的虚拟地址不同?
第一张图显示的是 Radare2-dump,第二张图是 xdd-dump。地址并不完全不同。
xdd 是:
000007b0
radare2 是:
0x004007b0
为什么会有偏移量0x00400000
?
编辑:我在 Linux 上工作。
assembly - 注册值与破解套件中的反汇编不匹配
所以我对这整个逆向工程很陌生。我一直在研究 IOLI 破解挑战,它有 10 个关卡,我用radare2 解决了其中的3 个。但是我现在被困在第 4 个,而且我不明白的寄存器发生了一些事情。
在调试器模式下,我在第三个断点 (0x080484f5) 处转储了寄存器值,到目前为止,程序已经创建了一些变量,这些变量在前一行的 add 中使用。据我所知,程序应该将 90 和 492 加在一起并将值存储在 eax 中。但是当我转储寄存器时,值是 0xff8c6bb0。我似乎无法弄清楚为什么寄存器值与反汇编所说的不匹配。如果有人能告诉我我做错了什么,将不胜感激
radare2 - 如何使用雷达获取地址的价值
如果我使用radare2,并且我运行,假设dr
在调试时,它将打印一些寄存器的指针。让我们假装esp
正在解决0x04084308
或类似的事情。如果我想获得esp
指向的值,我该怎么做?
提前致谢。
arm64 - 如何在radare2中修复'无法在第3行组装'bl 0x400588'
我正在连接一个二进制文件(aarch64),我想重写分支指令以分支到特定地址。我正在使用 Radare2 重写分支。但是只要分支的目标地址在当前指令地址之前,它就会说“无法汇编...”。它也不能组装'b.gt ...'
即使我尝试使用 (wa) 编辑具有相同操作码的指令,它也会给出相同的错误(无法汇编),但如果我尝试使用 (wx) 复制十六进制指令,那么它可以工作!.对于其他指令,如 (mov),它也可以正常工作(使用 wa)
c - 如何在安装 r2dec 时修复“r_cons.h/r_types.h:没有这样的文件或目录”
我正在尝试为radare2 安装r2dec 插件。构建失败,因为缺少一些文件。
首先我确实运行了以下命令
$r2pm 初始化
然后
$r2pm 初始化
然后我尝试使用以下方式安装它:
$r2pm -i r2dec
当构建失败时,我安装了 npm,因为对此答案的评论建议它 https://stackoverflow.com/a/51466052/10854709
$sudo apt install nodejs
预期的输出将是一个成功的构建。
实际输出如下:
r2dec make 安装完成:进入目录 '/home/me/.local/share/radare2/r2pm/git/r2dec-js/p' cc -I/home/me/.local/share/radare2/prefix/include - g -O3 -I/usr/include/libr -I./duktape -L/home/me/.local/share/radare2/prefix/lib -lr_core -lr_config -lr_debug -lr_bin -lr_anal -lr_bp -lr_egg -lr_asm - lr_lang -lr_parse -lr_flag -lr_cons -lr_reg -lr_search -lr_syscall -lr_fs -lr_io -lr_socket -lr_magic -lr_crypto -lr_hash -lr_util -ldl -lm -std=c99 -shared -fPIC duktape/duktape.c duktape/duk_console.c core_pdd .c -o core_pdd.so
duktape/duk_console.c:13:20:致命错误:r_cons.h:没有这样的文件或目录
[..]
core_pdd.c:8:21:致命错误:r_types.h:没有这样的文件或目录
[..]
编译终止。Makefile:10:目标“all”的配方失败 make:*** [all] 错误 1 make:离开目录“/home/me/.local/share/radare2/r2pm/git/r2dec-js/p”
linux - 如何动态切换标准输入?- >雷达2
我知道可以将标准输入设置为项目配置文件中定义的文件内容。不过,我想要的是在调试时更改标准输入的能力。有没有办法在linux系统上做到这一点?
基本上我需要这个,因为我对 debuggee 的下一个输入取决于它以前的输出之一。这意味着我无法在开始调试之前设置正确的标准输入内容。
事实上,我需要在调试时设置它!
非常感谢!