使用 Olly 将代码翻录/粘贴到可执行文件中

逆向工程 拆卸 聚乙烯 ollydbg 修补
2021-07-05 07:49:25

我正在处理一些 x86 汇编代码,我需要从一个可执行文件中提取并将该代码粘贴到另一个可执行文件中。

最初,我有一个可执行文件,它旨在接受两个命令行参数并在它们上运行手写函数。但是,我遇到了使用GetCommandLineet al 的烦恼在我的 ASM 中返回参数。也就是说,它返回 Unicode 而我需要 ANSI 中的参数。我没有处理设置库调用并以这种方式进行转换,而是编译了一个使用命令行参数的小程序,目的是重用代码。

所以现在我有两个可执行文件:

  • 一个解析了命令行参数并在适当的位置
  • 两个里面有实际组装的功能代码。

第一个可执行文件有用于NOP删除函数的空间,但我需要一个很好的方法来粘贴逻辑。我看过 Asm2clipboard、Code Ripper 和 data ripper,但它们只有删除程序集的功能,但不要把它贴回去。

我知道我必须修复地址和类似的东西,但我无法在 Olly 或其他工具中找到在可执行文件之间移动代码的方法。我可以进入 HexEdit 或类似的东西,但我希望有一种更简单的方法。

3个回答

对于 OllyDbg,它是

  1. 从 CPU 窗口中选择代码

  2. 右键单击并选择 Binary

  3. 选择 Binary Copy

  4. 在目标 CPU 窗口中,执行相同操作但选择 Binary Paste

解散

使用 IDA(为什么只使用 olly?IDA free 可以解决问题),或者使用 BeaEngine 插件的 OllyDbg(它有一些特定的 ASM 语法选项)

在反汇编中改进

使用增量地址重命名尽可能多的标签 - 稍后这样做很痛苦

出口到 ASM

重新设计 ASM 语法以使其可重新组装

修补

任何一个:

  • 使您的 ASM 代码独立于 EIP 并将其修补为十六进制

  • 使用 Iczelion 的Code Snippet Creator重新注入它(它注入从 OBJ 编译的 ASM 代码)

Multiline Ultimate Assembler是 OllyDbg 的多行(和终极)汇编(和反汇编)插件。它是用于修改和扩展已编译的可执行功能、编写代码洞穴等的完美工具。