这里写目录标题
- 一、前言
- 1.1 相关工具
- 二、Apk 分析
- 2.1 apk 解压文件
- 2.2 apk 签名信息
- 2.3 apk AndroidManifest.xml
- 2.4 apk code
- 三、Apk 处理
- 3.1 添加垃圾文件
- 3.2 AndroidManifest.xml 处理
- 3.3 dex 混淆处理
- 3.4 zipalign对齐
- 3.5 apk 重新签名
- 3.6 apk 安装测试
- 四、总结
一、前言
提供apk给到外部,外部对apk进行二次处理后重新给我们一个新apk。尝试分析源apk文件和处理后的apk文件区别,根据其中区别推测外部的混淆处理方案,尽可能还原外部对apk的处理方式。以下对处理和未处理的apk文件用新、旧apk名称表示。
1.1 相关工具
- jadx-gui
- apktool
- baksmali
- BlackObfuscator
- Beyond Compare
二、Apk 分析
2.1 apk 解压文件
通过Beyond Compare 比对可以发现,新旧 apk 解压出来的文件中 apk 签名信息、AndroidManifest.xml
、dex、resources.arsc 文件存在差异。其中 resources.arsc
文件存储了应用程序中所有资源的信息,字符串、布局、图像等都会被编译成二进制格式打包到 apk 文件内,暂时先不管这个文件。
2.2 apk 签名信息
从上面几张图可以看出旧 apk 和新 apk 的签名信息是不一样的。旧 apk 的签名信息只包含v1、v2签名,而新 apk 则拥有v1、v2、v3的签名方案。由此可以推断出外部在对apk处理过后对apk进行了重新签名的操作。
2.3 apk AndroidManifest.xml
通过 对比新旧 apk 的 AndroidManifest 文件可以发现新 apk 的 AndroidManifest
文件中多出了一大段代码,这段代码的格式都基本一致。
<activity android:theme="@android:style/Theme.NoTitleBar.Fullscreen" android:name="com.cleronomybouhdg.wyomissingmludvzc.g756Z5WBuO" android:taskAffinity="" android:launchMode="standard" android