1、代码检测,检测debuggable状态是否被修改过,检测签名是否一致
//安全监测,防止反编译
public void securityCheckCode(){
// 如果程序android:debuggable="false"是否被修改过,强制关闭应用
if ((this.getApplicationInfo().flags &= ApplicationInfo.FLAG_DEBUGGABLE) != 0) {
android.os.Process.killProcess(android.os.Process.myPid());
}
// 防止重新编译,检测签名是否一致
try {
PackageInfo packageInfo = context.getPackageManager()
.getPackageInfo(context.getPackageName(),
PackageManager.GET_SIGNATURES);
Signature[] signs = packageInfo.signatures;
Signature sign = signs[0];
int hashcode = sign.hashCode();
//签名hash值
if(hashcode!=-1555711042){
android.os.Process.killProcess(android.os.Process.myPid());
}
} catch (NameNotFoundException e) {
Log.e(TAG, e.toString());
}
}
2.禁用日志
在proguard.cfg中配置
删除-dontoptimize 配置
-assumenosideeffects class android.util.Log {
public static boolean isLoggable(java.lang.String, int);
public static int v(...);
public static int i(...);
public static int w(...);
public static int d(...);
public static int e(...);
}
3、代码混编
在proguard.cfg中配置