2010-10-30 74 views
2

如何使用GCC构建可执行文件,以便无法搜索关键字。例如,我使用一个名为“PascalTriangle”的函数编写我的代码,并构建了一个可执行文件并分发。如果我在可执行文件中使用“PascalTriangle”,那么我能够知道二进制文件是使用该函数构建的。我如何隐藏这些信息?如何使用gcc隐藏信息或使可执行功能无法搜索

道歉,如果我的问题是不相关的。谢谢。

回答

3

函数名是由剥离出来的符号可执行的去除的符号的一部分。 在Unix平台上,可以使用条带来完成符号剥离。

例如为:

diciu$ nm ./a.out 
0000000100000f06 s stub helpers 
0000000100001048 D _NXArgc 
0000000100001050 D _NXArgv 
0000000100000ec4 T _PascalTriangle 
0000000100001060 D ___progname 
0000000100000000 A __mh_execute_header 
0000000100001058 D _environ 
       U _exit 
0000000100000ecf T _main 
       U _printf 
0000000100001020 s _pvars 
       U dyld_stub_binder 
0000000100000e88 T start 
diciu$ strip ./a.out 
diciu$ nm ./a.out 
0000000100000000 A __mh_execute_header 
       U _exit 
       U _printf 
       U dyld_stub_binder 
+0

非常感谢。剥离是我一直在寻找的术语。我用google搜索了一下,发现用g ++使用-s会去掉符号。 – blueskin 2010-10-30 23:01:20

0

有一些产品混淆了您的代码并将所有内容更改为“随机”字符串。

有一些编写代码的方法难以对其进行反向工程。

阅读这篇文章:

Code Obfuscation