我正在尝试更改IDA Pro v6.1中加载的可执行文件中的指令

例如:

lis       r11, ((qword_90E1B2D8+0x10000)@h)




lis       r10, unk_90E163D0@h


我们非常感谢您的帮助,非常感谢。

评论

嗯,上一次我尝试执行此操作时,我不得不使用IDC(PatchByte(ea,value))对内存中的数据库进行修补,然后再次进行“拆装”。如果您有更大的说明,则可能会遇到困难,需要使用其他方法(代码洞穴等)。

如果“编辑-修补程序”菜单在您的体系结构中可用,则可以仅使用其“汇编”命令编写所需的指令,查看其生成的字节(“选项-常规-显示操作码字节”),然后将其十六进制编辑为可执行文件。

#1 楼

如果您的目标是将更改推回原始二进制文件,那么对于IDA 6.1,最好的选择是结合使用Edit/Patch Program菜单和Hex View窗口的编辑功能来进行所需的更改。如果您正在查看PPC代码,很遗憾,PPC处理器模块不支持Assemble...菜单上的Patch Program命令。进行所需的更改后,请使用File/Produce file/Create DIF file菜单项保存IDA样式dif文件。这里有一个实用程序:http://idabook.com/examples/chapter_14/ida_patcher.c,可用于将dif应用于原始二进制文件以对其进行修补。

评论


如果我只想进行如下更改,是否会有更简单的方法:lis r11,((qq_90E1B2D8 + 0x10000)@h)到lis r11,unk_90E163D0 @ h

–user4128
2014年11月11日在21:57



您能否说明您的意图是将修补程序向下推送到原始二进制文件中,还是只想对IDA数据库进行修补,作为“假设分析”练习?如果是前者,最简单的方法是升级到IDA 6.2或更高版本,其中包括“编辑/补丁/将补丁应用于输入文件”菜单选项,该菜单选项将所有更改推送到原始二进制文件中,而无需生成dif文件。如果是后者,最简单的事情就是简单地使用十六进制视图来编辑数据库。无论哪种情况,IDA的PPC模块都不会为您组装。

–克里斯·鹰(Chris Eagle)
14 Mar 12 '14 at 0:36