各位大佬,有没有办法通过重命名所有变量的方式保护代码? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
OceanSea
V2EX    程序员

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

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

    原计划是想编译一个通用 linux 可执行文件给他们。由于程序依赖一些外部库,尽管尝试多次,在本地编译的文件不能在他们远程服务器上运行。
    第 1 条附言    2019-08-29 19:46:01 +08:00
    感谢各位大佬的回复,最终采用最简单的技术保护了代码。

    具体过程如下:
    ( 1 )采用 Stunnix-CXX-Obfus-4.7-Linux-trial 版本提取了代码中的变量名,宏名和函数名。
    ( 2 )采用 python 生成了一系列的随机变量名称。
    ( 3 )结合 bash 采用 sed 完成了对程序中重要符号名称的重命名。

    这里的替换变量名的主要目的是防止程序被用于进一步开发。再次感谢大家提供的思路。
    23 条回复    2019-08-29 15:47:59 +08:00
    Dex7er
        1
    Dex7er  
       2019-08-28 15:31:21 +08:00   1
    这不就是安卓的代码混淆?
    OceanSea
        2
    OceanSea  
    OP
       2019-08-28 15:41:38 +08:00
    @Dex7er 多谢回复,帮助很大!有什么好用的混淆工具吗?
    yulgang
        3
    yulgang  
       2019-08-28 17:13:36 +08:00
    静态编译?
    cheng6563
        4
    cheng6563  
       2019-08-28 17:15:07 +08:00 via iPhone
    做个 docker 镜像?
    ChristopherWu
        5
    ChristopherWu  
       2019-08-28 17:19:00 +08:00
    》由于程序依赖一些外部库,尽管尝试多次,在本地编译的文件不能在他们远程服务器上运行。

    为什么不解决这个问题呢
    zeroDev
        6
    zeroDev  
       2019-08-28 17:20:40 +08:00 via Android
    @ChristopherWu 这个东西应该交叉编译可以解决吧?
    ChristopherWu
        7
    ChristopherWu  
       2019-08-28 17:38:02 +08:00
    @zeroDev #6 是的。依赖的库就不清楚他是啥意思了
    lff0305
        8
    lff0305  
       2019-08-28 17:43:07 +08:00
    静态链接依赖的库
    在你的机器上和别人的机器上用 ldd 查看具体的依赖,哪些缺少了
    yoshiyuki
        9
    yoshiyuki  
       2019-08-28 17:48:35 +08:00
    可以交付一个 docker 容器镜像呀
    jackleeforce3615
        10
    jackleeforce3615  
       2019-08-28 21:20:44 +08:00
    docker 正解
    jim9606
        11
    jim9606  
       2019-08-28 23:16:54 +08:00
    如果可以用 docker,你的问题就不存在了,要求是两边环境都能装 docker(kernel 3.10+)而且不需要 GUI。
    如果只能用裸程序,可以将程序放到 glibc 版本相同或更低的环境编译(基本上都是因为这个才用不了),编译时设置 rpath,然后将程序和所有用 ldd 找到的所有依赖打包搬过去
    exip
        12
    exip  
       2019-08-29 00:22:20 +08:00 via Android
    appimage 不知能解决不?
    locoz
        13
    locoz  
       2019-08-29 00:28:22 +08:00 via Android
    前面说的其实就是代码混淆…但是 C 程序无所谓吧…编译器应该自带一些反逆向工程的东西。
    后面的问题,建议 docker 解决,方便快捷。
    ipwx
        14
    ipwx  
       2019-08-29 00:43:32 +08:00
    Docker
    luozic
        15
    luozic  
       2019-08-29 00:58:51 +08:00 via iPhone
    docker 等各种 image,并且编译应该可选支持把库搞进去啊。
    yegle
        16
    yegle  
       2019-08-29 01:37:53 +08:00
    不能装 docker 的话可以搞个 chroot 环境,然后打个 tar 给对方啊
    b00tyhunt3r
        17
    b00tyhunt3r  
       2019-08-29 03:12:10 +08:00 via iPad
    需要哪些外部库手动链接试下
    waruqi
        18
    waruqi  
       2019-08-29 08:02:26 +08:00 via Android
    没用,即使编译完的 binary image 都可以逆向回来
    itskingname
        19
    itskingname  
       2019-08-29 08:27:02 +08:00 via iPhone
    ooooooooooo = 1
    ooooooooooo = ooooooooooo + 1
    MonoLogueChi
        20
    MonoLogueChi  
       2019-08-29 08:37:00 +08:00 via Android
    @locoz 混淆的目的就是让你看不懂逆向的东西啊
    chinuno
        21
    chinuno  
       2019-08-29 09:05:54 +08:00 via Android
    打包成 appimage 吧,这样不同 Linux 环境都能运行
    zdd2389
        22
    zdd2389  
       2019-08-29 09:52:31 +08:00
    ollvm
    RV0n
        23
    RV0n  
       2019-08-29 15:47:59 +08:00
    这不就是混淆加密
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2683 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 01:14 PVG 09:14 LAX 18:14 JFK 21:14
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86