学习英语作为第二句话,对不起错误&尴尬
我已经完成了一个特殊的项目。该公司已丢失该应用程序的源代码,我必须对其进行更改。现在,逆向工程对于一个人来说,整个事情是不可能的,它太过庞大,但是修补个别功能是可行的,因为这些变化并不是那么具有纪录意义。
因此,一种可能的解决方案是编译C代码,然后以某种方式 - 重写地址 - 将其修补到实际的二进制文件中,理想情况下,替换CALL指令跳转到的代码,或者将JMP插入到我的代码中。
有没有办法用MingW32来实现这个目的?如果是,你能提供一个简单的例子吗?我也对可以帮助我完成任务的书籍感兴趣。
感谢您的帮助
答案 0 :(得分:2)
我使用OllyDBG来做这类事情。它允许您查看反汇编并对其进行调试,您可以放置断点等,还可以编辑二进制文件。因此,您可以编辑该程序的PE标头,在其中添加您的(已编译)代码的代码部分,然后从原始程序中调用它。
因为我从未尝试过,所以我无法给你任何建议,尽管我多次考虑过这个问题。你知道,懒惰.. :))
答案 1 :(得分:1)
我会用一个高质量的反汇编程序来反汇编程序,它可以生成可以组装回可运行的应用程序的东西,然后用C代码替换你需要修改的部分。
答案 2 :(得分:1)
这样的东西可以让您将机器代码转换为源代码。它不会很漂亮,但确实有效。
http://www.hex-rays.com/idapro/
例如,还有用于运行时修补http://www.dyninst.org/的工具。它们确实不是用于修补,但它们可以做到这一点。
当然最后一种选择是使用汇编程序并编写机器代码:)