This topic created in 2474 days ago, the information mentioned may be changed or developed.
我们课题组维护着一个研究用的程序(C语言程序,主要在 linux 上运行),最近想拿到另一个实验室去编译和运算,因为他们有更高性能的计算机。但是我们并不想分享代码,目前的想法是将代码中的所有变量名重命名为随机名称,这样就能有效地保护原始版本的代码。请问各位大佬,有没有这样的工具?
原计划是想编译一个通用 linux 可执行文件给他们。由于程序依赖一些外部库,尽管尝试多次,在本地编译的文件不能在他们远程服务器上运行。
Supplement 1 · Aug 29, 2019
感谢各位大佬的回复,最终采用最简单的技术保护了代码。
具体过程如下:
( 1 )采用 Stunnix-CXX-Obfus-4.7-Linux-trial 版本提取了代码中的变量名,宏名和函数名。
( 2 )采用 python 生成了一系列的随机变量名称。
( 3 )结合 bash 采用 sed 完成了对程序中重要符号名称的重命名。
这里的替换变量名的主要目的是防止程序被用于进一步开发。再次感谢大家提供的思路。
23 replies • 2019-08-29 15:47:59 +08:00
 |
|
4
cheng6563 Aug 28, 2019 via iPhone
做个 docker 镜像?
|
 |
|
5
huoru Aug 28, 2019
》由于程序依赖一些外部库,尽管尝试多次,在本地编译的文件不能在他们远程服务器上运行。
为什么不解决这个问题呢
|
 |
|
8
lff0305 Aug 28, 2019
静态链接依赖的库 在你的机器上和别人的机器上用 ldd 查看具体的依赖,哪些缺少了
|
 |
|
11
jim9606 Aug 28, 2019
如果可以用 docker,你的问题就不存在了,要求是两边环境都能装 docker(kernel 3.10+)而且不需要 GUI。 如果只能用裸程序,可以将程序放到 glibc 版本相同或更低的环境编译(基本上都是因为这个才用不了),编译时设置 rpath,然后将程序和所有用 ldd 找到的所有依赖打包搬过去
|
 |
|
12
exip Aug 29, 2019 via Android
appimage 不知能解决不?
|
 |
|
13
locoz Aug 29, 2019 via Android
前面说的其实就是代码混淆…但是 C 程序无所谓吧…编译器应该自带一些反逆向工程的东西。 后面的问题,建议 docker 解决,方便快捷。
|
 |
|
14
ipwx Aug 29, 2019
Docker
|
 |
|
15
luozic Aug 29, 2019 via iPhone
docker 等各种 image,并且编译应该可选支持把库搞进去啊。
|
 |
|
16
yegle Aug 29, 2019
不能装 docker 的话可以搞个 chroot 环境,然后打个 tar 给对方啊
|
 |
|
18
waruqi Aug 29, 2019 via Android
没用,即使编译完的 binary image 都可以逆向回来
|
 |
|
19
itskingname Aug 29, 2019 via iPhone
ooooooooooo = 1 ooooooooooo = ooooooooooo + 1
|
 |
|
21
chinuno Aug 29, 2019 via Android
打包成 appimage 吧,这样不同 Linux 环境都能运行
|
 |
|
23
RV0n Aug 29, 2019
这不就是混淆加密
|