java代码混淆2
来源:互联网 发布:廖雪峰java视频百度云 编辑:程序博客网 时间:2024/06/05 08:49
上一篇java代码混淆只是proguard的基本配置,如果应用到实际工程里面,就需要有所提升。
1 定义不需要混淆的注解
下面的注解,可以应用到类、方法及属性中
@Retention(RetentionPolicy.CLASS)@Target({ElementType.TYPE,ElementType.METHOD,ElementType.CONSTRUCTOR,ElementType.FIELD})public @interface NotProguard {}
2 @NotProguard实例
@NotProguard public void export(String keystorePath, String cerPath, String password) { String[] arstringCommand = new String[] { "cmd ", "/k", "start", // cmd Shell命令 "keytool", "-export", // - export指定为导出操作 "-keystore", // -keystore指定keystore文件,这里是d:/demo.keystore keystorePath, "-alias", // -alias指定别名,这里是ss "ss", "-file",// -file指向导出路径 cerPath, "-storepass",// 指定密钥库的密码 password }; execCommand(arstringCommand); }
@NotProguard@NotProguardpublic class CheckedException { /** * 将CheckedException转换为UncheckedException. */ public static RuntimeException unchecked(Exception e) { if (e instanceof RuntimeException) { return (RuntimeException) e; } else { return new RuntimeException(e); } }
3 proguard.conf详细配置
#忽略警告信息 -ignorewarnings#不做 shrink -dontshrink#指定不去忽略包可见的库类的成员-dontskipnonpubliclibraryclassmembers# 通过指定数量的优化能执行-optimizationpasses 3# 指定不去忽略非公共的库类-dontskipnonpubliclibraryclasses# 输出生成信息-verbose#混淆时应用侵入式重载 -overloadaggressively#优化时允许访问并修改有修饰符的类和类的成员-allowaccessmodification#确定统一的混淆类的成员名称来增加混淆-useuniqueclassmembernames#这里添加你不需要混淆的类 # --------- 保护类中的所有方法名 ------------ -keeppackagenames-keep @com.dzmsoft.framework.base.command.NotProguard class * {*;}-keep class * {@com.dzmsoft.framework.base.command.NotProguard <fields>;}-keepclassmembers class * {public <methods>;} -keepclassmembers class * {@com.dzmsoft.framework.base.command.NotProguard <methods>;} # Signature:避免混淆泛型,这在JSON实体映射时非常重要,比如fastJson# SourceFile,LineNumberTable:抛出异常时保留代码行号,在异常分析中可以方便定位# Annotation:保护代码中的Annotation不被混淆,这在JSON实体映射时非常重要,比如fastJson-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,LocalVariable*Table,*Annotation*,Synthetic,EnclosingMethod-keepclasseswithmembers public class * { public static void main(java.lang.String[]);}-keep class **.$* { *; } -keep enum * { *;}# 保留序列化对象-keepnames class * implements java.io.Serializable-keepclassmembers class * extends java.io.Serializable { static final long serialVersionUID; static final java.io.ObjectStreamField[] serialPersistentFields; private void writeObject(java.io.ObjectOutputStream); private void readObject(java.io.ObjectInputStream); java.lang.Object writeReplace(); java.lang.Object readResolve();}
0 0
- java代码混淆2
- Jocky混淆JAVA代码
- Java代码混淆
- java代码混淆 proguard
- Jocky 混淆 Java 代码
- Java 代码混淆器
- Java代码混淆
- Java代码混淆
- Java代码混淆()
- JAVA 代码混淆,加密。
- ProGuard混淆java代码
- Android(Java):代码混淆
- Java Proguard 代码混淆
- Android java代码混淆
- Java代码混淆----ZKM
- java 代码混淆 转载
- Java 代码混淆器
- java代码混淆
- oracle学习笔记_2_oracle入门
- MyEclipse中普通Java项目convert(转化)为Maven项目(互转)
- 虚拟机和电脑之间通信
- 基本数据结构练习
- PHP用特殊符号分割小说内容和章节
- java代码混淆2
- 03-S3C2440u-boot学习之u-boot分析_uboot启动内核
- java基本数据类型数据范围
- 网关IP地址和IP地址的区别
- C#托管与非托管
- Spring缓存注解@Cache,@CachePut , @CacheEvict,@CacheConfig使用
- CentOS6.5下二进制多实例安装mysql-5.6.27
- 咒真的有种种不可思议的力量吗?
- 贪心之活动选择问题