Ghidra + IDA 无法检测到字符串,但 Radare2 可以

逆向工程 艾达 雷达2 吉德拉
2021-06-23 01:40:28

我是逆向工程的新手,我尝试使用简单的 CrackMe 尝试 Ghidra、IDA(免费软件)和 Radare2,问题是,Ghidra 和 IDA 都无法检测到字符串,而 Radare2(使用 Cutter GUI)可以找出名称。我对所有 3 个都使用了默认分析。有什么我遗漏的吗?因为即使是 'strings' 命令实际上也可以找到我正在寻找的字符串。

吉德拉:

在此处输入图片说明

国际开发协会:

在此处输入图片说明

Radare2(刀具):

在此处输入图片说明

1个回答

我不知道字符串的确切长度。但是,这里需要注意的几点如下:

  1. Ghidra 和 IDA 对恢复正确类型的字符串大小有最小限制(ghidra 有一个限制 - 或下限为 5)。
  2. 这对于避免任何误报或冲突类型是必要的。并在不将指针标记为字符串的情况下恢复正确的类型。请查看此图以供参考。使用 Ghidra 自动分析生成。

在此处输入图片说明

在 Ghidra 中,您可以在分析部分更改此限制(最小为 4)。

在此处输入图片说明

  1. Strings命令输出最小大小为 4 的可打印字符(另外它不使用复杂的类型恢复算法,如 ghidra 或 Ida)。我相信你有一个长度小于 5 的字符串,我猜它必须是 4 才能精确。
  2. 字符串通常在.rodata节中定义如果双击 DAT_xxxx,它将带您到定义该字符串的位置。在那里,您将看到 Ghidra 或 IDA 将连续字节串在一起(如图 1 所示)。但是,该类型不会解析为“字符串”。
  3. 在 Ghidra 中,通过更改 DAT_xxxx 标签的数据类型来快速解决此问题:右键单击 -> 数据 -> 选择数据类型 -> 选择字符串

在此处输入图片说明

参考资料: