Android 下 APK 捆绑器的实现
作者: 海东青
利用捆绑器向正常程序捆绑病毒、木马等恶意程序,以达到隐蔽安装、运行的目的,这
在 Windows 平台下是一种很常规的攻击手段。那么,在智能终端十分流行的今天,如何实
现针对手机应用的捆绑器呢?对此,本文针对 Android 平台的应用程序 APK 文件,给出了
类似 Windows 下捆绑器的实现方案。
原理与基础
对任意的两个 APK 应用程序 A 和 B 进行捆绑,并且在手机上安装、运行捆绑生成的
APK 程序 C 后,仍然具备和 A 一样的运行效果,要实现这一目的,捆绑过程可以从两个思
路去实现。
1)对 Android 应用程序 A 进行反编译,通过修改反编译生成的 smali 代码,控制执行
流程,使其具备安装和执行应用程序 B 的功能,最后再打包生成捆绑后的应用 C。此方法
和早期的 Windows 环境下的 PE 病毒类似,插入额外的功能代码,修改入口点改变程序执行
流程,最后再回到原有流程执行 A 的功能。
2)考虑到 A、B 的任意性,以及生成程序 C 的稳定性,在这里重点介绍另外一种通过
宿主程序实现释放、安装、运行 A 和 B 的方法。其思路亦来自 Windows 下的捆绑器,即专
门写一个 host 程序作为宿主,其中应用程序 A、B 作为 host 的资源文件,运行 host 时可以
释放、安装和运行 A 和 B 的功能。此外,若考虑到安全性、免杀性,可对 A 和 B 进行加密、
编码。因此,根据方法2,可得出PC端和Android手机端的软件工作流程如图1和图2所示
QQ图片20140404144049.jpg (50.11 KB, 下载次数: 26)
2014-4-4 15:02 上传
QQ图片20140404150245.jpg (30.84 KB, 下载次数: 20)
2014-4-4 15:04 上传
功能实现
通过上面的介绍,可以知道总共需要实现两个程序,即作为宿主程序的 Android 应用
host.apk,以及作为捆绑器的 Windows 应用程序“捆绑器”,下面将详细介绍这两个程序内
部原理和实现方法。
1.宿主应用程序
1)工作流程
对于宿主程序 host.apk,要实现上文所定义的功能需求,则其内部的工作流程可设计如
成如图 3 所示的结构。在宿主程序初始化时,会调用MainActity 的 onCreate 函数。在 onCreate
函数中,通常用来初始化 MainActivity,但是考虑到最终呈现给用户的界面(即 Activity)
为 A 的界面,所以宿主程序的 onCreate 函数中无需处理自身界面,只需想办法启动 A 的
Activity 即可。