logo头像

勤求古训,博采众方

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

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属性设置为空字符串

参考资料