apk重打包
是使用反编译工具得到smali代码,然后再由smali代码重打包形成apk,左后重新签名才能够运行
破解方法:在程序中对吧签名值是否和预设值保持一致,可以用来判断程序是否被重新打包了
对抗反编译:让一些反编译工具如apktool、baksmali、dex2jar、JEB等等工具无法正常通过,并有可能使这些工具异常或崩溃
proguard 可以将android.util.Log类的方法置为无效代码,可以去除apk中打印日志的代码
不输出log的两种方式
①可以封装一个logwrapper
②直接删除打印log代码
在prguard-rules。pro添加
-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(...); }
注意:打开优化开关。默认使用proguard-android-optimize.txt。该文件在Sdk\tools\proguard目录下,默认开关是打开的
minifyEnabled false 代表是否使用代码混淆
proguard 基本语法 -keepclassewithmembernames、-keepclassmembers、-keep
①保留类名
②保留方法名
③保留类名和方法名
混淆为什么保留类名或方法名
①让C/C++程序可以通过jni使用对应的Java方法
②四大组件由于在Androidmanifest.xml里面注册了,所以需要保留
③R文件混淆会导致引用错误
很多分编译工具
混淆去除log
签名对比代码。
获得应用签名方法
常见反编译工具
apktool,baksmali,dex2jar,jeb
如何对抗IDA Native层调试
调试so注意事项
调试so第五步
调试so第四步
调试so第三步
调试so第二步
调试so第一步
对抗apk重打包代码
检测Android模拟器的方式
打开优化开关
去除Log
混淆为什么要保留类名或方法名