IDA Pro - 在手动创建的段中加载数据

逆向工程 艾达
2021-07-07 23:26:02

我目前正在逆向的程序缺少包含一堆有趣字符串的部分。我看到这些应该在哪里的内存地址,而不是对字符串的引用。

这些字符串在 IDA 分析的二进制文件中,但由于没有任何段可用于它们,因此 IDA 忽略了它们。

我尝试手动创建该段,该段有效(它现在引用未知变量而不是内存地址),但我不知道如何将正确的数据加载到该段中。(整个部分归档于db ? ;

我试过使用File > Load File > Load additional binary file(使用文件偏移量和大小),以及重新加载当前文件。我还转储了我对另一个文件感兴趣的文件部分,并尝试将该文件作为附加二进制文件加载。

我能从中得到的唯一结果是:

  • IDA 在所有其他段的末尾创建一个新段(不遵循Loading Segment我填写地址。
  • 如果我取消选中Create Segments,IDA 什么也不做。(即使我在Loading Segment

我手动创建的段具有以下设置: 段设置 .

这是我在加载包含我想要的数据的二进制文件时填写的表格。 加载二进制文件设置 .

我以前从未这样做过,所以很可能我做错了什么,但我想不通。

1个回答

使用菜单:File -> Load file -> Additional binary file,然后只需输入你想要的段地址。
您在此操作中失败的原因是您误解了 IDA 中的“段”。
在 IDA 中,段由 (selector, base) 和偏移量定义。最终地址由 计算
(base << 4) + offset
实际上,IDA 是在告诉您输入“在段落中”,即 IBM PC 上的每个段落 0x10。
但是由于 x86 现在正在使用“平面内存模型”,您应该使用的是这样的: 在此处输入图片说明 您的原始操作将创建一个 EA 为 0x1431A20000(注意最后一个零)的段,以及您将在 IDA 视图中看到的内容将是 segXXX:XXXXX 而不是像 .text 这样的“扁平”段