编辑:
使用PatchByte解决,如下所示:我不喜欢对易失性调试内存进行编辑,从而导致IDA抱怨在调试后修补IDB ...
#1 楼
在IDA的“十六进制视图”中,可以转到“编辑”->“修补程序”->“更改字节”,但是我认为这一次只能修补16个字节。如果您需要修补更多的字节,则可以使用IDAPython的idc.PatchByte / idc.PatchWord / idc.PatchDword更改IDA数据库中的字节。编辑:
简要说明一下,如果要将补丁应用于加载到IDA中的原始文件,则需要在对idb中的字节进行补丁后转到“编辑”->“补丁程序”->“将补丁应用于输入文件”。 >
#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
评论
谢谢!有了这个,python解决方案开始工作了。当然,手动更改单个字节太慢了,这就是我问这个问题的原因。
– Ditmar Wendt
13-10-24在18:57