Android开发应用上架安全漏洞修复
本文于 959 天之前发表,文中内容可能已经过时。
对于审查应用安全漏洞后需要整改,如何解决安全漏洞过程记录等。
Apk文件结构概览
- 简单描述下:资源文件+源代码,其中资源文件通过aapt工具会产生R.java文件和编译后的资源文件,aidl文件通过aidl编译产生java接口文件,前面两种文件和源码Jvva文件,通过java编译器产生java文件,然后通过dex打包生成dex文件,最后在通过apkbuilder打包编译后的资源文件,其他资源文件asset,dex文件
dex文件
- 多个class文件打包成dex文件。
res目录
- 资源目录,布局文件,颜色,字符串,动画文件等
清单文件
- 应用中页面配置信息
jni下的so文件
- 第三方sdk中比较多,一般是比较核心的代码使用C或者C++写的
asset目录
- 资源文件,比如说webview中使用到的js文件可以放这里,还有提示的音频文件等。
反编译和重新打包
工具
apktool
简单来说是用来解码apk文件和打包解码的内容,环境的话,搞个jdk下载下,需要1.8以上,用法的话看官网就可以,简单来说,看下面的两组命令就行。apktool.jar的就是官方下的jar包后改了下名字
解码
- java -jar apktool.jar d -s apk文件的路径
- 打包
- java -jar apktool.jar b apk解码文件夹路径 -o 输出的apk文件路径
- 友盟的libumeng-spy.so使用第三方加固后替换有问题,不要替换
jadx-gui
- 用来看反编译后的内容
常见的安全漏洞
dex中java代码破解风险
- 目前市面上有免费的加固软件来加固,比如360,腾讯加固等。
- 360是把dex文件加到so文件中做到保护作用
so文件被破解风险(第三方sdk中so文件)
- so文件可以通过ida等软件分析,我们加固的话一般分为有源加固和无源加固,源指的是源码,第三方sdk中的so文件加固属于无源加固。实现方式可以通过加壳实现,比如upx加壳
应用签名验证
- 被反编译后如果恶意修改重新打包上架应用市场换壳导致损失,验证打包时的签名信息,防止被恶意使用。
asset目录中网页和js文件明文显示
- 可以做混淆处理
StrandHogg漏洞
- android:allowBackup=”false”,关闭备份模式
- 目前报告有个StrandHogg漏洞,需要把taskAffinity属性设置为空字符串