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

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

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

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

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

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

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

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

© 2021 V2EX