各位大佬,有没有办法通过重命名所有变量的方式保护代码?

2019-08-28 15:09:29 +08:00
 OceanSea
我们课题组维护着一个研究用的程序(C语言程序,主要在 linux 上运行),最近想拿到另一个实验室去编译和运算,因为他们有更高性能的计算机。但是我们并不想分享代码,目前的想法是将代码中的所有变量名重命名为随机名称,这样就能有效地保护原始版本的代码。请问各位大佬,有没有这样的工具? 

原计划是想编译一个通用 linux 可执行文件给他们。由于程序依赖一些外部库,尽管尝试多次,在本地编译的文件不能在他们远程服务器上运行。
3490 次点击
所在节点    程序员
23 条回复
Dex7er
2019-08-28 15:31:21 +08:00
这不就是安卓的代码混淆?
OceanSea
2019-08-28 15:41:38 +08:00
@Dex7er 多谢回复,帮助很大!有什么好用的混淆工具吗?
yulgang
2019-08-28 17:13:36 +08:00
静态编译?
cheng6563
2019-08-28 17:15:07 +08:00
做个 docker 镜像?
ChristopherWu
2019-08-28 17:19:00 +08:00
》由于程序依赖一些外部库,尽管尝试多次,在本地编译的文件不能在他们远程服务器上运行。

为什么不解决这个问题呢
zeroDev
2019-08-28 17:20:40 +08:00
@ChristopherWu 这个东西应该交叉编译可以解决吧?
ChristopherWu
2019-08-28 17:38:02 +08:00
@zeroDev #6 是的。依赖的库就不清楚他是啥意思了
lff0305
2019-08-28 17:43:07 +08:00
静态链接依赖的库
在你的机器上和别人的机器上用 ldd 查看具体的依赖,哪些缺少了
yoshiyuki
2019-08-28 17:48:35 +08:00
可以交付一个 docker 容器镜像呀
jackleeforce3615
2019-08-28 21:20:44 +08:00
docker 正解
jim9606
2019-08-28 23:16:54 +08:00
如果可以用 docker,你的问题就不存在了,要求是两边环境都能装 docker(kernel 3.10+)而且不需要 GUI。
如果只能用裸程序,可以将程序放到 glibc 版本相同或更低的环境编译(基本上都是因为这个才用不了),编译时设置 rpath,然后将程序和所有用 ldd 找到的所有依赖打包搬过去
exip
2019-08-29 00:22:20 +08:00
appimage 不知能解决不?
locoz
2019-08-29 00:28:22 +08:00
前面说的其实就是代码混淆…但是 C 程序无所谓吧…编译器应该自带一些反逆向工程的东西。
后面的问题,建议 docker 解决,方便快捷。
ipwx
2019-08-29 00:43:32 +08:00
Docker
luozic
2019-08-29 00:58:51 +08:00
docker 等各种 image,并且编译应该可选支持把库搞进去啊。
yegle
2019-08-29 01:37:53 +08:00
不能装 docker 的话可以搞个 chroot 环境,然后打个 tar 给对方啊
b00tyhunt3r
2019-08-29 03:12:10 +08:00
需要哪些外部库手动链接试下
waruqi
2019-08-29 08:02:26 +08:00
没用,即使编译完的 binary image 都可以逆向回来
itskingname
2019-08-29 08:27:02 +08:00
ooooooooooo = 1
ooooooooooo = ooooooooooo + 1
MonoLogueChi
2019-08-29 08:37:00 +08:00
@locoz 混淆的目的就是让你看不懂逆向的东西啊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/595897

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX