我正在观看此视频:最后,它显示了如何使用Radare2做基本操作。
当我尝试使用以下方法设置断点时:

db 0x004005bd

其中“ 0x004005bd”是主要功能的首地址:

push rbp
我运行的db命令告诉我:

Cannot place a breakpoint on 0x004005bd unmapped memory. See dbg.bpinmaps

我知道它在告诉我什么,但是我该如何解决?

对这个非常愚蠢的问题表示抱歉(也对我的英语感到抱歉)。

评论

你从git使用r2吗?

#1 楼

在调试模式下运行radare2。 r2 -d

#2 楼

您可能正在使用radera2的过时版本。

卸载当前的radare2版本,然后git clone https://github.com/radare/radare2 && cdradre2 && ./sys/install.sh

如果您使用的是archlinux,请使用radare2-git

如果您使用的是Windows或其他平台(例如iOS或Android),请使用rada.re上的git链接或进行构建。

最后,如果您遇到与radare2本身有关的问题,我强烈建议您在IRC或Telegram上打个招呼,也可以在github上报告问题。

#3 楼

您可以使用“文件”命令检查可执行文件。
然后您会发现该文件是“ elf共享对象”而不是“ elf可执行文件”。
但是您可以直接执行它。

,因此您需要使用“ gcc xxx.c -no-pie -o xxx”重新编译它
,然后使用“ radare2 -d xxx”对其进行调试


#4 楼

我使用的是Debian OS(kali / parrot),但遇到相同的错误。当您在Mac OS中执行radare2并尝试使用相同的方法添加断点时,它将可以正常工作。但是当涉及到Linux OS时,它可能会给您这个错误。

我尝试了所有操作。然后,当我尝试在radare2控制台中执行ood时,看到了这一点,

警告:bin_strings缓冲区太大(0xffffffffa9a2552c)。在-r2(rabin2)中使用-zzz或设置bin.maxstrbuf(RABIN2_MAXSTRBUF)

首先,必须使用以下命令编译C代码,

gcc <name>.c -no-pie -o <any_name>

然后用-zzz选项打开它,例如,假设我的编译代码名称是“ tool”,然后执行此命令,

$radare2 -zzz tool3

,继续进行。现在您可以添加断点了。

#5 楼

您还可以执行e dbg.bpinmaps=0,因此Radare2允许您设置断点而没有该限制。

评论


解释该标志在r2中的作用可能会有所帮助。

–PawełŁukasik
19年8月6日在5:31

#6 楼

如果将e io.cache设置为true,则断点不起作用