首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
宝塔
V2EX  ›  程序员

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

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

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

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

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

    为什么不解决这个问题呢
        6
    zeroDev   82 天前 via Android
    @ChristopherWu 这个东西应该交叉编译可以解决吧?
        7
    ChristopherWu   82 天前
    @zeroDev #6 是的。依赖的库就不清楚他是啥意思了
        8
    lff0305   82 天前
    静态链接依赖的库
    在你的机器上和别人的机器上用 ldd 查看具体的依赖,哪些缺少了
        9
    yoshiyuki   82 天前
    可以交付一个 docker 容器镜像呀
        10
    jackleeforce3615   82 天前
    docker 正解
        11
    jim9606   82 天前
    如果可以用 docker,你的问题就不存在了,要求是两边环境都能装 docker(kernel 3.10+)而且不需要 GUI。
    如果只能用裸程序,可以将程序放到 glibc 版本相同或更低的环境编译(基本上都是因为这个才用不了),编译时设置 rpath,然后将程序和所有用 ldd 找到的所有依赖打包搬过去
        12
    exip   82 天前 via Android
    appimage 不知能解决不?
        13
    locoz   82 天前 via Android
    前面说的其实就是代码混淆…但是 C 程序无所谓吧…编译器应该自带一些反逆向工程的东西。
    后面的问题,建议 docker 解决,方便快捷。
        14
    ipwx   82 天前
    Docker
        15
    luozic   82 天前 via iPhone
    docker 等各种 image,并且编译应该可选支持把库搞进去啊。
        16
    yegle   82 天前
    不能装 docker 的话可以搞个 chroot 环境,然后打个 tar 给对方啊
        17
    b00tyhunt3r   82 天前 via iPad
    需要哪些外部库手动链接试下
        18
    waruqi   82 天前 via Android
    没用,即使编译完的 binary image 都可以逆向回来
        19
    itskingname   82 天前 via iPhone
    ooooooooooo = 1
    ooooooooooo = ooooooooooo + 1
        20
    MonoLogueChi   82 天前 via Android
    @locoz 混淆的目的就是让你看不懂逆向的东西啊
        21
    chinuno   82 天前 via Android
    打包成 appimage 吧,这样不同 Linux 环境都能运行
        22
    zdd2389   82 天前
    ollvm
        23
    RV0n   81 天前
    这不就是混淆加密
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   4095 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 22ms · UTC 07:46 · PVG 15:46 · LAX 23:46 · JFK 02:46
    ♥ Do have faith in what you're doing.