所以我在这个可执行文件中有一些加密数据。IDA 对它无能为力,因此将其定义为数组。现在我知道如何解密这些数据,而且它有一些加密代码。我当然可以将加密的数据放入某个单独的文件中,对其运行解密,然后让 IDA 处理它,但随后它会失去与原始可执行文件的连接。
是否可以将加密数据 1:1 替换为解密数据,以便在可执行文件的上下文中让 IDA 处理它?
所以我在这个可执行文件中有一些加密数据。IDA 对它无能为力,因此将其定义为数组。现在我知道如何解密这些数据,而且它有一些加密代码。我当然可以将加密的数据放入某个单独的文件中,对其运行解密,然后让 IDA 处理它,但随后它会失去与原始可执行文件的连接。
是否可以将加密数据 1:1 替换为解密数据,以便在可执行文件的上下文中让 IDA 处理它?
根据二进制文件的布局、要修改的数据的位置以及转换的复杂程度,我会选择以下解决方案之一:
如果转换很简单并且可以使用其内置操作之一在十六进制编辑器中轻松完成,我将在十六进制编辑器中打开原始输入文件,运行转换,然后在 IDA 中选择文件,加载文件,重新加载输入文件.
如果转换很复杂和/或导致映射新段,我会创建一个 IDC 或 IDAPython 脚本来为您进行转换。IDAPython的文档可以在 hex ray网站上找到。IDC的文档也可以在他们的网站上找到。他们还有一小组 IDC 教程。您特别感兴趣的 IDC 函数是:AddSeg()、Qword()、Dword()、Word()、Byte()、PatchDword()、PatchWord()、PatchByte()。
只需在 IDA 本身中调试文件,并在数据解密后拍摄内存快照。