• 请不要在回答技术问题时复制粘贴 AI 生成的内容
OceanSea
V2EX  ›  程序员

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

  •  
  •   OceanSea · Aug 28, 2019 · 4748 views
    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
    95Q75rQb83nwn2gF
    95Q75rQb83nwn2gF
    Aug 28, 2019❤️1
    1
    这不就是安卓的代码混淆?
    OceanSea
    OceanSea
    OP
    Aug 28, 2019
    2
    @Dex7er 多谢回复,帮助很大!有什么好用的混淆工具吗?
    yulgang
    yulgang
    Aug 28, 2019
    3
    静态编译?
    cheng6563
    cheng6563
    Aug 28, 2019 via iPhone
    4
    做个 docker 镜像?
    huoru
    huoru
    Aug 28, 2019
    5
    》由于程序依赖一些外部库,尽管尝试多次,在本地编译的文件不能在他们远程服务器上运行。

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