-
Notifications
You must be signed in to change notification settings - Fork 35
[FEAT] 混淆类名、方法名、自动修改 META-INF和加密字符串的一点建议 #19
Comments
感谢你提出的建议! |
1.我的类继承了一个class,但这个class不存在于我的jar中,而是存在于我的依赖jar中,我的jar并不包含依赖jar,会导致报错 |
|
不是老兄你在美国吗不睡觉的吗?? |
getCommonSuperClass 的报错我大概知道了,因为你开了花指令混淆,ASM 使用中增加新指令需要自定义 ClassWriter 并重写该方法,并且需要自定义类加载器,加载目标 CLASS 找不到会出问题。 简单来说只要不开花指令混淆 依赖 JAR 的情景是:输入多个 JAR / 输入一大堆 JAR 输出所有 JAR 的混淆 项目起初的设计是为了混淆单个的可以直接启动的 FAT JAR 类型的程序,没有考虑多个 JAR 文件的处理 可能会有一些挑战,我在工作之余有空的时候会看一下 感谢你提出的多个意见和建议!! |
这patch 3 行代码可以解决罢,不过我是解压版的,我往你的CustomClassLoader的loadClassData中的catch加了点料: |
1.加密字符串时,如果遇到jar没有的类,则会直接报错,建议在config中添加依赖jar以修复。
2.混淆类名时,如果代码中有相应类名字符串不会修改至新类名,可能会导致报错,建议在config中添加相应的选项
或者是做一个白名单列表,不混淆其中类的类名(使用黑名单需要一个个去加,太麻烦了)。
3.还有混淆类名的时候,泛型不会一起改变。
4.混淆方法名时,如果该方法是覆盖的依赖jar的方法,则不混淆方法名。
5.自动修改 META-INF 时,应该把 META-INF中的旧类名全部改成新类名。
6.增加花哨指令时,可以往类里添加没有实力意义方法,然后在正常方法里调用,随机生成参数或者使用类里的参数,增加迷惑性。
7.花哨指令太过规范了,一用反编译器就能出代码,建议让花哨指令不是按编译器标准编译出来的字节码来注入方法,而是根据字节码能不能跑的问题,用不规范的花哨指令来注入方法。
The text was updated successfully, but these errors were encountered: