jar-analyzer / jar-obfuscator

Jar Obfuscator - 一个 JAR/CLASS 字节码混淆工具,支持包名/类名/方法名/字段名/参数名引用分析和重命名混淆方式,支持字符串加密/整型异或混淆/垃圾代码花指令混淆/等方式,支持方法和字段的隐藏,支持 NATIVE 层的 JVMTI 代码加密,配置简单,文档教程齐全,容易上手
MIT License
313 stars 29 forks source link

[BUG] 混淆方法被调用处不会修改方法名 #6

Closed KANAZAWA1 closed 4 months ago

KANAZAWA1 commented 4 months ago

[x] java.lang.NoClassDefFoundError: gadget/xxxxxx 师傅,我的gadget/xxxxxx类是被 jar-obfuscator混淆过的(应为it1il/i1il类),但是其他类我没混淆,其他类会去调用这个我混淆过的类,还用的是混淆前的类名gadget/xxxxxx去调用的(而不是it1il/i1il类),导致java.lang.NoClassDefFoundError报错。 这种我需要怎么设置配置文件才会将他这种问题解决呢?

4ra1n commented 4 months ago

一个临时的简单方案是:

以下的混淆不修改引用,如遇 BUG 可以仅开启或搭配使用这些配置

或者完全混淆,对整个项目整个类名包名进行混淆

现在的这种情况,具体原因我需要再排查一下,找到问题后修复

4ra1n commented 4 months ago

master 分支最新的代码我测试

obfuscatePackage: [ me.n1ar4.fake.gadget ]
rootPackages: [ me.n1ar4 ]

我的配置是

enableClassName: true
enablePackageName: true
enableMethodName: false
enableFieldName: true
enableParamName: true

例如这个配置,我观察到结果是 gadget 包下所有类都混淆了且 me.n1ar4 中所有类的引用都改了,可以正常使用

这个问题应该是 enableMethodName 的 BUG 不对方法名进行混淆的话,其他功能测试可以

KANAZAWA1 commented 4 months ago

可以了,按你的这个配置走起来是没有问题的!