将应用程序分发给公众,以便他们可以编译,而不会泄露源代码

The*_*own 9 c++ obfuscation compilation distribute precompile

我有一个专有的应用程序,我想发给几个人进行测试,除了我们不想透露他们的来源.该应用程序是用C++ for Linux编写的.它链接到Fedora/Ubuntu repos上随时可用的包.

有没有办法将源处理为中间...然后分发它,并让用户进行最终编译,实际编译并将中间代码链接到其本机平台.

我试图看看是否有任何替代分发预编译的二进制文件.谢谢.

Joh*_*ohn 5

这不是技术上的答案,但您是否相信他们只需要签署保密协议?


Emi*_*l H 5

只需将其编译为汇编程序即可.可以使用-S选项完成.

helloworld.cpp:

#include <iostream>

using namespace std;

int main(void)
{
    cout << "Hello World" << endl;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

然后做:

emil@lanfear /home/emil/dev/assemblertest $ g++ -S -o helloworld.s helloworld.cpp
emil@lanfear /home/emil/dev/assemblertest $ g++ -o helloworld helloworld.s
emil@lanfear /home/emil/dev/assemblertest $ ./helloworld
Hello World
Run Code Online (Sandbox Code Playgroud)

使用此方法,您只能分发包含非常难以阅读的汇编程序的.s文件.

  • 有道理.我仍然相信它在某些情况下可能是一个选项,所以我会留下帖子而不是删除它. (2认同)

Pau*_*ier 4

您可以处理现有的源代码以“破坏”它;基本上,这包括删除所有注释,将变量名称更改为最小,并删除所有源代码格式。问题是,他们可以相对轻松地改回变量名称并添加格式和注释;虽然他们在生成的源代码中不会拥有与您相同级别的信息,但他们将拥有功能齐全的源代码(因为这就是您分发给他们的内容)。这是做这种事情的唯一方法。