有没有 Java 代码混淆工具,不是混淆 jar 包,是混淆代码! - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
paranoiagu
V2EX    Java

有没有 Java 代码混淆工具,不是混淆 jar 包,是混淆代码!

  •  
  •   paranoiagu 2017-01-10 23:10:19 +08:00 13405 次点击
    这是一个创建于 3272 天前的主题,其中的信息可能已经有所发展或是发生改变。
    客户要求提供源代码,实在没办法了,能不能混淆源代码,编译不影响,运行不影响,但是就是美观方面差点。

    求工具。
    35 条回复    2018-11-19 18:16:47 +08:00
    Monstercat
        1
    Monstercat  
       2017-01-10 23:13:11 +08:00
    Proguard+JD
    Valyrian
        2
    Valyrian  
       2017-01-10 23:13:13 +08:00   2
    客户看了你给混淆了再问你要不混淆的代码怎么办?
    可以考虑多要点钱。。
    paranoiagu
        3
    paranoiagu  
    OP
       2017-01-10 23:13:53 +08:00 via Android
    @Valyrian 不给,关键就是不能给阿
    paranoiagu
        4
    paranoiagu  
    OP
       2017-01-10 23:14:21 +08:00 via Android
    @Monstercat 关键还能编译过吗?
    rockyou12
        5
    rockyou12  
       2017-01-10 23:20:09 +08:00
    看来是最开始没谈好坑爹了吧(σ-`д)
    wdlth
        6
    wdlth  
       2017-01-10 23:29:48 +08:00
    如果原来没谈好,现在你混淆了对你也没好处,客户可以此为把柄来坑你,毕竟你不能说混淆后的代码是开发时的源代码……
    ihuotui
        7
    ihuotui  
       2017-01-11 00:40:20 +08:00 via iPhone
    java 注定不行,从 class 规定就确定了可以反编译
    slixurd
        8
    slixurd  
       2017-01-11 00:55:36 +08:00   2
    那你就发个反编译后的代码给客户就好了= =......
    wmhx
        9
    wmhx  
       2017-01-11 00:57:43 +08:00
    简单点,关键点给整成一个复杂的内部类, 这样可以编译运行,但反编译出来的代码会有少量的语法错误,
    hellojinjie
        10
    hellojinjie  
       2017-01-11 08:38:49 +08:00 via Android
    自己写这一个变量替换工具啊,把变量都提换成 a b c d
    mritd
        11
    mritd  
       2017-01-11 08:56:10 +08:00 via iPhone   3
    混希手段还是有的……不要说从 class 就注定了不能混希……我只是提供个思路,也是前两天反编译别人代码看到的,所有类名变量名全部替换成超长的 0O0O000OO0O000O 这种玩意……其他还有 1I1II1I 这种玩意……我成功反编译……然后就看傻了
    wyntergreg
        12
    wyntergreg  
       2017-01-11 08:58:48 +08:00
    注释全删了, JS 混淆一下就行了
    depress
        13
    depress  
       2017-01-11 09:21:39 +08:00   2
    ①注释全删
    ②类名、方法名、变量名写的乱七八糟
    ③每个类里弄 N 多个没用的方法,在有用的方法里偶尔调用一下没用的方法,实际上调用那行什么意义都没有
    ④如果后续不用维护了,把方法都合并,一个方法四五千行
    混淆不了还不能恶心人么~
    814084764
        14
    814084764  
       2017-01-11 09:30:56 +08:00
    @mritd 我之前看别人混淆后的代码,全是 _ 这个玩意。。。长短还不一样。。妈蛋!
    顺便问一下,哪里可以修改 proguard 的混淆的字母?
    scnace
        15
    scnace  
       2017-01-11 09:42:29 +08:00 via Android
    我记得逼乎上有一个 怎样编写不可维护代码 的问答 楼主可以去看看啊(逃
    baoguok
        16
    baoguok  
       2017-01-11 09:59:00 +08:00
    给就是了,代码不值钱。

    合同没约定代码版权问题,那就只能给
    leloext
        17
    leloext  
       2017-01-11 10:01:57 +08:00
    @hellojinjie proguard 就可以做到这个的
    Chrisplus
        18
    Chrisplus  
       2017-01-11 10:26:16 +08:00
    手动使用 proguard shrink & obfuscate
    AlisaDestiny
        19/span>
    AlisaDestiny  
       2017-01-11 10:52:08 +08:00
    @mritd 哈哈。这 TM 谁想出来的。真是高。 abc 还将就着能分清楚变量。要是 0O 这玩意。看的真是头疼。
    mritd
        20
    mritd  
       2017-01-11 11:43:55 +08:00 via iPhone
    @AlisaDestiny 不是头疼的问题……是根本没法看
    mritd
        21
    mritd  
       2017-01-11 11:44:44 +08:00 via iPhone
    @814084764 是不是 tcpxxxx
    yidinghe
        22
    yidinghe  
       2017-01-11 11:52:22 +08:00 via Android
    用重构,类名手工改成 A,B,C,D,E ,包名也这样改,方法名、参数名、变量名也是。
    Adia
        23
    Adia  
       2017-01-11 12:58:30 +08:00
    Proguard 啊
    Bairrfhoinn
        24
    Bairrfhoinn  
       2017-01-11 13:40:11 +08:00
    @mritd @depress 厉害,真是好方法。:doge:
    liuzhen
        26
    strong>liuzhen  
       2017-01-11 13:47:15 +08:00
    @liuzhen 未亲测,楼主试过后可以写下测试结果
    nicevar
        27
    nicevar  
       2017-01-11 14:12:19 +08:00
    谈判问题啊,用技术来解决怎么行
    zgqq
        28
    zgqq  
       2017-01-11 14:26:19 +08:00
    @ihuotui 反编译有个毛用?全部都 a,b,c,d 你看得懂?
    chilaoqi
        29
    chilaoqi  
       2017-01-11 14:28:04 +08:00
    本来自己写的就自带混淆。。。。
    yutian2211
        30
    yutian2211  
       2017-01-11 16:30:06 +08:00
    hmmm....关注一下
    正常给客户之后,你就不要想拿到尾款了
    814084764
        31
    814084764  
       2017-01-11 17:19:38 +08:00
    @mritd 不是。。哈哈
    paranoiagu
        32
    paranoiagu  
    OP
       2017-01-11 21:24:39 +08:00 via Android
    谢谢各位。
    imnpc
        33
    imnpc  
       2017-01-12 13:24:15 +08:00
    一般建议 O0 或者 ILil 各种混淆即可
    bk201
        34
    bk201  
       2017-01-12 16:17:15 +08:00
    反编译后的代码一般都很恶心,然后对变量做个批量替换就可以了。
    virbox
        35
    virbox  
       2018-11-19 18:16:47 +08:00
    VirboxProtector Standalone 加壳工具可对代码加密的技术有:代码混淆、代码虚拟化、代码加密。

    代码混淆:利用花指令和代码非等价变形等技术,将程序的代码,转换成一种功能上等价,但是难于阅读和理解的代码,可充分干扰静态分析。

    虚拟化:将指令编译为虚拟代码,放在指定虚拟机中运行,目前对指令有一定的格式要求,有的函数可能不能被保护。

    代码加密:将代码块作为数据,用许可加密函数存储,程序执行到该函数时验证许可并解密,内存中不会暴露完整的代码块,目前有的函数不可添加到保护中。


    Virbox Protector Standalone 将被保护的程序代码转换为虚拟机代码,程序运行时,虚拟机将模拟程序执行,进入和离开虚拟机都有高级代码混淆。虚拟机配合代码混淆可以达到很好的保护效果,尤其是开发者的私有逻辑。高级混淆利用花指令和代码非等价变形等技术,将程序的代码,转换成一种功能上等价,但是难于阅读和理解的代码,可充分干扰静态分析。应用程序的解压缩含有动态密码,让一切自动脱壳工具失效,有效的阻止.Net 、PE 程序的直接反编译。

    使用 Virbox Protector Standalone 时,选择被保护的函数列表,添加需要保护的函数,可以使用性能分析功能,对程序进行分析,并选择重要的函数来保护。

    性能分析:点击性能分析按钮,运行需要保护的程序,执行正常的业务操作,程序中各个函数模块调用的次数实时显示在列表中。如果当前分析的程序位为 DLL 程序,则需要选择启动主程序,主程序启动的工作目录为主程序所在目录。目前仅支持 Windows 的 exe 程序或 DLL 库。

    可保护的函数列表:展示了需要保护程序的所有的函数模块,托管代码程序和非托管代码程序有细微的差别。

    试用地址:shell.virbox.com
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     912 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 35ms UTC 19:51 PVG 03:51 LAX 11:51 JFK 14:51
    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