This topic created in 2624 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
 |
|
这不就是安卓的代码混淆?
|
 |
|
@ Dex7er 多谢回复,帮助很大!有什么好用的混淆工具吗?
|
 |
|
静态编译?
|
 |
|
做个 docker 镜像?
|
 |
|
》由于程序依赖一些外部库,尽管尝试多次,在本地编译的文件不能在他们远程服务器上运行。
为什么不解决这个问题呢
|
 |
|
静态链接依赖的库 在你的机器上和别人的机器上用 ldd 查看具体的依赖,哪些缺少了
|
 |
|
可以交付一个 docker 容器镜像呀
|
 |
|
docker 正解
|
 |
|
如果可以用 docker,你的问题就不存在了,要求是两边环境都能装 docker(kernel 3.10+)而且不需要 GUI。 如果只能用裸程序,可以将程序放到 glibc 版本相同或更低的环境编译(基本上都是因为这个才用不了),编译时设置 rpath,然后将程序和所有用 ldd 找到的所有依赖打包搬过去
|
 |
|
exipAug 29, 2019 via Android
12
appimage 不知能解决不?
|
 |
|
locozAug 29, 2019 via Android
13
前面说的其实就是代码混淆…但是 C 程序无所谓吧…编译器应该自带一些反逆向工程的东西。 后面的问题,建议 docker 解决,方便快捷。
|
 |
|
Docker
|
 |
|
docker 等各种 image,并且编译应该可选支持把库搞进去啊。
|
 |
|
不能装 docker 的话可以搞个 chroot 环境,然后打个 tar 给对方啊
|
 |
|
需要哪些外部库手动链接试下
|
 |
|
waruqiAug 29, 2019 via Android
18
没用,即使编译完的 binary image 都可以逆向回来
|
 |
|
ooooooooooo = 1 ooooooooooo = ooooooooooo + 1
|
 |
|
@ locoz 混淆的目的就是让你看不懂逆向的东西啊
|
 |
|
打包成 appimage 吧,这样不同 Linux 环境都能运行
|
 |
|
ollvm
|
 |
|
这不就是混淆加密
|