学习英语作为第二个郎,对错误和尴尬感到抱歉
我已经给出了一个特殊的项目。 该公司已丢失该应用程序的源代码,我必须对其进行更改。 现在,逆向工程整个事情对于一个人来说是不可能的,它太过庞大,但是修补个别function是可行的,因为这些变化并不是那么具有纪念意义。
因此,一种可能的解决方案是编译C代码,然后以某种方式 – 重写地址 – 将其修补到实际二进制文件中,理想情况下,替换CALL指令跳转到的代码,或者将JMP插入到我的代码中。
有没有办法用MingW32来实现这个目的? 如果是,您能提供一个简单的例子吗? 我也对可以帮助我完成任务的书籍感兴趣。
谢谢你的帮助
我使用OllyDBG来做这类事情。 它允许您查看反汇编并对其进行调试,您可以放置断点等,还可以编辑二进制文件。 因此,您可以编辑该程序的PE头,在其中添加一个包含您的 (已编译)代码的代码段,然后从原始程序中调用它。
因为我从未尝试过,所以我无法给你任何建议,尽管我多次考虑过这个问题。 你知道,懒惰.. ?
我会用一个高质量的反汇编程序来反汇编程序,它可以生成可以组装回可运行应用程序的东西,然后用C代码替换你需要修改的部分。
这样的东西可以让你将机器代码转换为源代码。 它不会很漂亮,但确实有效。
例如,还有用于运行时修补的工具https://www.dyninst.org/ 。 它们确实不是用于修补,但它们可以做到这一点。
当然最后的选择是只使用汇编程序并编写机器代码:)
以上就是c/c++开发分享更改已编译二进制文件的部分相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/c-cdevelopment/522120.html