c++ - 更改已编译二进制文件的部分

标签 c++ c assembly binary patch

作为第二语言学习英语,对于错误和尴尬感到抱歉

我给了一个特殊的项目来处理。公司丢失了应用程序的源代码,我必须对其进行更改。现在,对整个事情进行逆向工程对于一个人来说是不可能的,它太大了,但是修补单个功能是可行的,因为变化不是那么巨大。

因此,一种可能的解决方案是编译 C 代码并以某种方式 - 在重写地址之后 - 将其修补到实际的二进制文件中,理想情况下,替换 CALL 指令跳转到的代码,或者在我的代码中插入一个 JMP。

有什么方法可以使用 MingW32 完成此操作吗?如果是,你能提供一个简单的例子吗?我也对可以帮助我完成任务的书籍感兴趣。

感谢您的帮助

最佳答案

我使用 OllyDBG对于这种事情。它允许您查看反汇编和调试它,您可以放置​​断点等,您还可以编辑二进制文件。因此,您可以编辑该程序的 PE header ,添加一个代码段,其中包含您的(已编译)代码,然后从原始程序中调用它。
我不能给你任何建议,因为我从来没有尝试过,尽管我想过很多次。你知道,懒惰.. :)

关于c++ - 更改已编译二进制文件的部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5059930/

相关文章:

c++ - 模板类中非模板成员函数的 requires 子句

c++ - 为什么 `std::pmr::polymorphic_allocator` 不会在容器移动时传播?

c - 在 ubuntu 上读取、写入、更新 pci 卡上的 eeprom

assembly - 引导加载程序帮助...为什么 USB 驱动器即使没有引导签名也能引导?

将多个 C 代码编译为一个汇编文件

c++ - 为模板类重载运算符 << 时出现链接器错误

c++ - 如何在 stdin 上强制使用 eof?

c - 咨询文件锁定是否适用于默认文件描述符?

c - 链表的基本问题

c - 汇编器生成否定形式的条件,而不是肯定形式的条件