当我使用 CheatEngine 时(我知道,我知道......)它有这个选项可以让你创建代码洞穴,这意味着你可以用 JMP 替换任何指令到一个新部分,其中包含旧指令和新代码,然后 JMP 会回到原来的地方。
我想对 Ida 做同样的事情,以一种让我将更改保存为可执行文件的方式。这可能吗?
我尝试在段窗口中手动添加新部分,但使用“对输入文件应用更改”保存可执行文件不会更改任何内容,也不会保存“DIF”文件。
当我使用 CheatEngine 时(我知道,我知道......)它有这个选项可以让你创建代码洞穴,这意味着你可以用 JMP 替换任何指令到一个新部分,其中包含旧指令和新代码,然后 JMP 会回到原来的地方。
我想对 Ida 做同样的事情,以一种让我将更改保存为可执行文件的方式。这可能吗?
我尝试在段窗口中手动添加新部分,但使用“对输入文件应用更改”保存可执行文件不会更改任何内容,也不会保存“DIF”文件。
正如 ExtremeCoders 所说,IDA 基本上是用作分析工具,还有许多其他工具可以这样做,例如 OllyDBG 或 x64_dbg ......不过,它并没有那么有限。
我没有尝试这样做,但尝试使用 PEiD(或任何其他可以执行的 PE 工具)获取洞穴代码地址,然后使用 Fentanyl 插件进行更改,并使用 IDAPatcher 插件轻松保存它们。
我最近用 ARM android 应用程序做过类似的事情;然而,IDA 不组装 ARM,并且手动将 ARM 代码转换为二进制并不是一项有趣的任务。我首先在IDA中找到了一个合适的代码洞的地址,写了一个以.org code_cave_address(和另一个.org和我想跳转到我的代码洞的分支指令)开头的汇编文件,使用gnu的arm版本来组装它,然后使用objdump查找组装后的代码,最后使用IDAPatcher将hex代码拷贝到我的IDA数据库中,对原来的共享库打补丁。
不是最直接的方法,而是适用于各种处理器的方法,即使 IDA 不支持对其进行组装。