是否可以将一系列字节粘贴到IDA的十六进制视图中?说我有一个很大的缓冲区,我需要填充一个特定的值,并且它以大多数十六进制编辑器输出的形式保存... 0A AB EF FF 00 01 ...是否有一些快速的方法将此值写入段十六进制视图?还是通过IDAPython做到这一点?

编辑:

使用PatchByte解决,如下所示:我不喜欢对易失性调试内存进行编辑,从而导致IDA抱怨在调试后修补IDB ...

#1 楼

在IDA的“十六进制视图”中,可以转到“编辑”->“修补程序”->“更改字节”,但是我认为这一次只能修补16个字节。如果您需要修补更多的字节,则可以使用IDAPython的idc.PatchByte / idc.PatchWord / idc.PatchDword更改IDA数据库中的字节。

编辑:

简要说明一下,如果要将补丁应用于加载到IDA中的原始文件,则需要在对idb中的字节进行补丁后转到“编辑”->“补丁程序”->“将补丁应用于输入文件”。 >

评论


谢谢!有了这个,python解决方案开始工作了。当然,手动更改单个字节太慢了,这就是我问这个问题的原因。

– Ditmar Wendt
13-10-24在18:57



#2 楼

以下是fwrapper的两个函数,提供了有关如何修补IDB和从文件导入数据的示例。我建议检查一下代码。我一直使用它来解码/解密数据的样本,或者当我不得不手动转储内存块并修补IDB时。

#3 楼

即使已经回答了这个问题,IDA仍然是调试器。不是作为修补工具,这与IDA存储的工作方式有很大关系。 IDA创建一个数据库文件,该文件可让您在首次加载后删除该exe。当您使用知识产权/恶意软件时,这可能非常有用。我建议使用ImmDBG满足您的修补需求。

评论


那是错字吗?您的意思是说IDA并不是调试器,对吗?当然,它不是要与各种调试器交互。 IDA无法理解内存段不重要/不应将补丁存储在IDB中是合法错误。 ImmDBG是一个完全独立的用例,相比之下,它支持的平台非常有限。

– Ditmar Wendt
13-10-25在13:16

的确,我很抱歉,这比其他任何事情都更令人费解。我要说的最重要的一点是,IDA是您需要用来分析软件而不破解软件的工具。

– Stolas
13-10-25在22:12