如何强制 IDA pro 将某些字节列为指定指令?

逆向工程 艾达 蟒蛇 idapro-sdk
2021-07-04 06:32:31

请先阅读我之前的问题,然后继续以下操作:

****

加载到 IDA 中的二进制文件大小为 0x1e400 = 123k,当我尝试仅将“加载地址更改为 0x2000000 时,IDA 抛出此错误:
加载地址应该属于 RAM 或 ROM

如果我选中“创建 RAM 部分”并将RAM 大小设置为 0x2000000,并将“ ROM 起始地址”设置为 0x2000000,IDA 可以正确检测到大部分字符串引用和函数调用但是出现了新的问题:

  • IDA 将工作保存在一个 2GB 的文件中,这使得保存/加载速度变慢。
  • 某些引用将无法正确检测(当地址字段没有 0x2000000 时)。

  • (更重要的问题)在 IDA 能够正确检测到它们之前,IDA 没有检测到一些指令)而且不好的是,当我尝试使用 MakeCode 命令将它们转换为指令时,IDA 会出错。

如何手动将那些未检测到的指令添加到指令中。

1个回答

我是建议您更改加载偏移量的人。由于您将二进制文件加载到 IDA 的方式,这听起来像是发生了一些奇怪的事情。我之前在处理段和加载地址时遇到过类似的奇怪问题。希望使分段正常工作将解决引用/定义代码能力的问题。

您可以使用几种相似但不同的方法,其中大部分位于Edit->Segments子菜单中。我会尝试的第一件事是0x0像最初那样在基地址加载程序,然后尝试Edit->Segments->Rebase Program. 如果那不起作用,我会尝试Edit->Segments->Move Current Segment, 或Edit->Segments->Edit Segment