可以将所有程序转换为汇编吗?

Lar*_*Cat 3 assembly disassembly

假设我们有一个exe,可以很容易地转换为汇编吗?软件作者有没有办法阻止/阻止这种情况?

mar*_*nas 6

不可以.程序只有在能够理解的情况下才能由您的系统运行; 如果它理解它,它可能是机器码,可以直接转换为汇编.

你可以做的是尝试使用代码混淆方法,以使反汇编的二进制文件尽可能难以理解.

http://en.wikibooks.org/wiki/X86_Disassembly/Code_Obfuscation

编辑:想要添加,当然,随着时间和足够的资源,有人将最终弄清楚如何阅读您的混淆代码.这是不可避免的.混淆的做法是尽可能使你的工作逆向工程变得不方便,使它不值得花时间去追求它,所以只有那些想要对它进行逆向工程的人才会这样做.


Jos*_*ond 5

可执行文件被设计为由计算机处理器执行(因此得名)。汇编语言是计算机处理器执行的机器代码之上的一层。如果您的程序可以作为机器代码运行,那么它可以作为程序集读取。

您可能遇到这样的情况:一个专有的 C/C++ 编写的程序正在分发给客户。有些客户不怀好意,他们将程序反编译为汇编语言,更改一些指令(例如防止恶意使用程序的指令、无限期延长程序试用功能的指令),然后重新编译程序。

在这种情况下或类似的情况下,您必须意识到所有未执行的程序都只是磁盘上的数据。任何人都可以读取该数据并根据自己的喜好进行更改。如果这确实是一个问题,那么您将不得不想出另一种方法来保护您的程序:例如,将重要的逻辑委托给执行它并发回结果的 Web 服务。一个例子:谷歌的搜索算法在他们自己的网络服务器上运行 - 没有人确切知道它是如何工作的。