是否可以提取或以其他方式编辑 .exe 文件的源代码?

逆向工程 视窗 可执行 dos-exe
2021-06-23 16:11:13

我有一个从网上下载的小型可执行文件,它在命令行中运行,这让我认为它可能是一个 DOS 程序。该程序运行良好,但由于是由非英语使用者开发的,因此需要对其界面/演示进行清理,使其看起来更专业一些。是否可以访问文件的源代码并对其进行编辑?

2个回答

主要是:是的。
但是:实际上并非如此。

您可以更改 .exe 中的机器代码,但如果您想更改界面/演示文稿,那实际上并不是这样。此外,您至少需要使用汇编语言进行操作。
如果你想改进软件,我想,最好的办法是联系开发者,问你是否可以帮助他改进软件。

如果你想看看 .exe 的内部,你可以试试OllyDbg

如果你想改变这样一个现有程序中的某些东西,你基本上有 3 种方法来做到这一点:

  1. 改变机器码本身:机器码
    的表示不需要是1和0,你可以使用任何其他数字系统。无论如何,机器代码真的很难阅读和编辑。此外,您也有同样的问题,比如“简单地”反汇编程序。

  2. 使用反汇编程序并修改汇编代码:
    您必须注意要修改的软件的内存布局。由于对某些字符串的任何更改都可能覆盖另一个变量。而且汇编器也不容易读写。因此,根据软件的大小,需要一些时间才能大致了解在何处更改代码。

  3. 或者使用反编译器:
    但是你通常不会得到任何有用的变量名,因为编译器大部分时间都会删除它们。

另一点你必须看看是反调试和逆向工程工具。他们可能会阻止像 OllyDbg 那样在调试器中运行这段代码或获得有用的反编译代码。
也看看彼得费里的回答

简短的回答是否定的 - 如果只有 .exe 可用,则源不可用。源代码是一个完全独立的文件,通常不与公众共享。但是,给定 .exe 文件,可能可以将其“反编译”为一种源代码形式,该形式将允许生成新的 .exe 文件,并且在执行字节换行时应该与现有文件相当匹配- 字节比较。

有了反编译的源代码,就可以对程序的行为或外观进行修改,但这绝非小事,因为变量名等相对重要的东西不会出现,所以推导出的含义某些内存访问将需要大量的时间和精力。

您需要仔细考虑付出的努力是否值得回报。