晋中市住房保障和城乡建设局网站,桂林旅游网页设计,安阳网站,云南省建设项目申报网站什么是混淆
Android混淆#xff0c;是伴随着Android系统的流行而产生的一种Android APP保护技术#xff0c;用于保护APP不被破解和逆向分析。简单的说#xff0c;就是将原本正常的项目文件#xff0c;对其类、方法、字段#xff0c;重新命名a,b,c…之类的字母#xff0c…什么是混淆
Android混淆是伴随着Android系统的流行而产生的一种Android APP保护技术用于保护APP不被破解和逆向分析。简单的说就是将原本正常的项目文件对其类、方法、字段重新命名a,b,c…之类的字母达到混淆代码的目的这样反编译出来结构乱糟糟的。
混淆的优缺点
优点 代码混淆后阅读性降低反编译后破译程序难度提高 混淆后字节数减少减少了应用的体积
缺点 混淆后测试不充分可能导致某些功能不能使用 混淆只能提高反编译的门槛并不能完全做到代码安全
如何开启混淆
Android自带一个混淆规则文件proguard-android.txt,这个文件在SDK目录下里面有一些默认自带的规则。
混淆规则基本语法
混淆文件采用白名单法意思是不在白名单里面的都要混淆。
#代表行注释符
-表示一条规则的开始
keep 保留例如keepattributes表示保留属性
dont 不要例如dontwarn表示不要提示警告
ignore 忽略例如ignorewarning表示忽略警告配置中开启混淆
android{buildTypes {release {buildConfigField boolean, LOG_DEBUG, false //不显示logminifyEnabled trueshrinkResources trueproguardFiles getDefaultProguardFile(proguard-android.txt), proguard-rules.prosigningConfig signingConfigs.config}}
}测试面对混淆
如上文所说混淆的缺点部分功能混淆后可能不正常
解决方法 一轮测试尽可能的使用混淆包测试 与开发沟通有新的混淆规则时重点测试 回归测试必须使用混淆包测试
混淆log:
混淆应用产生崩溃时崩溃log也是混淆的
java.lang.NullPointerException:at java.io.File.init(File.java:282)at atx.a(SogouSource:497)at awl.a(SogouSource:1117)at com.sogou.expression.getCommitExpressionResult(SogouSource:297)at com.sohu.inputmethod.sogou.MainImeServiceDel.a(SogouSource:3704)at com.sohu.inputmethod..commitExpression(SogouSource:750)at asz$11.a(SogouSource:505)at asz$11.a(SogouSource:484)at aqj$1.onClick(SogouSource:112)at android.view.View.performClick(View.java:6325)at android.view.View$PerformClick.run(View.java:25126)如何解混淆log
Android SDK 默认提供了混淆解析工具可分别使用命令行和GUI两种方式解析工具位置SDK目录\tools\proguard\bin
解析日志时需要release打包同时生成的mapping.txt文件此文件每次打包都不一样
retrace.bat: 命令行工具windows版本是retrace.bat,Mac/Linux上是retrace.sh
proguardgui.bat: GUI工具
命令行解析
retrace.bat -verbose mapping.txt obfuscated_trace.txtGUI工具 运行proguardgui.bat 从左边的菜单选择“ReTrace” 在上面的Mapping file中选择你的mapping文件在下面输入框输入要还原的代码。 点击右下方的“ReTrace!” 如此就可以给开发提供一份完整的崩溃log了