Android应用程序包(英语:Android application package,APK)是Android操作系统的一种应用程序包文件格式,用于分发和安装移动应用及中间件。Android应用程序的代码在Android设备上运行必须先进行编译,打包成为”APK“。
IPA文件是Apple程序应用文件iPhoneApplication的缩写。实质是一个zip压缩包,也就是一个苹果应用文件,简称ipa文件。
获取APK
APP通常以二维码形式分享下载,利用https://cli.im/deqr草料二维码解码器可以转换为网址链接固定和下载APK。也可以从目标人手机上直接提取安装包。
建议使用:谷歌浏览器、Microsoft Edge浏览器下载

APK文件下载

打开网址后,点击谷歌浏览器右上角的三点(自定义及控制)-->更多工具-->开发者工具。点击Network,Ctrl+R。选择其中.apk结尾的下载。

Ipa文件下载

方式:使用下载链接用谷歌浏览器打开后抓包获取下载链接
例如:下载链接http://1XX.1XX.1XX.XX:1234/app.php,打开网址后,点击谷歌浏览器右上角的三点(自定义及控制)-->更多工具-->开发者工具。Ctrl+R键后,找到http://XXXXXXX.plist文件。如图1所示:

下载.plist文件,用记事本打开后Ctrl+F搜索.ipa定位到.ipa下载链接。如图2所示:

图2
复制链接在浏览器中打开即可自动下载。
APK静态分析
我们可以获取到以下信息:基础信息、权限、网址IP、签名、打包/客服公司、第三方SDK公司、证书信息、分析程序代码等。对恶意类应用程序重点分析该程序是否具有:发送邮件、监听拦截转发短信息、僵尸修改拨出电话、获取(如GPS)定位等功能,使用截屏、拍照或录像的方式对检验结果进行固定。
可使用的工具有:jadx、Visual Studio Code、APK Messenger等等。

使用APK Messenger分析

使用APK Messenger,直接把apk文件拖入工具即可显示出应用名、包名、版本名、版本号、加固信息等。点击星号位置还可以查看apk使用的相关权限。如图3所示:


使用jadx分析

使用jadx,打开 jadx-gui,点击菜单栏 File → Open,选择目标 APK 文件。或者直接把apk文件拖入工具即可。找到左侧文件目录结构栏里AndroidManifest.xml:应用配置清单(权限、组件、元数据等)。查看应用名、包名、版本名、版本号等。如图4所示:

图4
图4界面左侧是 APK 的文件目录结构,包含以下关键部分:
源代码:包含安卓应用的代码结构(如android.support、com等包名目录)。资源文件:assets:存储应用的资源文件(如配置、多媒体等)。lib:存放 Native 层的 so 库(若有)。META-INF:存储 APK 的签名信息等。res:存储应用的资源(如布局、图片、字符串等)。AndroidManifest.xml:被选中的核心配置文件,是安卓应用的 “说明书”,记录应用的权限、组件、版本等关键信息。classes.dex:安卓应用的字节码文件,是 Java/Kotlin 代码编译后的产物。resources.arsc:资源索引文件,用于管理res目录的资源映射。APK signature:APK 的签名信息,用于验证应用的完整性和开发者身份。
图4界面右侧AndroidManifest.xml内容解析:
AndroidManifest.xml是安卓应用的核心配置文件,这里显示了关键配置:
应用基本信息:versionCode="1":应用内部版本号(用于版本迭代区分)。versionName="0.0.1":对外展示的版本号。compileSdkVersion="29":编译时使用的安卓 SDK 版本(对应安卓 10)。package="com.XXX.XXX":应用的包名(唯一标识应用)。targetSdkVersion="28":应用针对的安卓 SDK 版本(对应安卓 9)。权限声明:应用申请了一系列敏感权限,如:网络类:android.permission.INTERNET(联网权限)、ACCESS_NETWORK_STATE(获取网络状态)。存储类:WRITE_EXTERNAL_STORAGE(写入外部存储)。位置类:ACCESS_COARSE_LOCATION(粗略位置)、ACCESS_FINE_LOCATION(精确位置)。硬件类:CAMERA(相机)、VIBRATE(振动)、FLASHLIGHT(闪光灯)等。其他敏感权限:READ_PHONE_STATE(读取手机状态)、RECORD_AUDIO(录音)、BLUETOOTH_ADMIN(蓝牙管理)等。

关键函数搜索分析

直接在jadx中用快捷键 Ctrl+Shift+F(全局搜索)搜索“http”,查看源码中可能隐藏/调用的相关网址。如图5所示:

图5
这类网站主要提供以下功能:
①在代码中,HttpPost和HttpParams等逻辑用于初始化HTTP请求,相应的url是应用程序与后端服务交互的接口地址(例如数据提交、用户信息获取、业务逻辑处理等)。
②用于调用 APICloud等第三方平台的 API 网址,实现推送通知、统计、支付等功能。
③用于加载远程页面、图片、配置文件等资源,支持应用程序的跨平台界面和功能显示。

在一次实战中,通过源码搜索发现开发人员博客地址,进入博客里面有详细的姓名、地址、联系方式等信息成功落地开发人员。
其他的关键函数搜索:
用快捷键 Ctrl+Shift+F(全局搜索)查找敏感函数或关键词,例如:
网络请求:HttpURLConnection、OkHttpClient、Retrofit(定位 API 接口)。
数据存储:SharedPreferences、SQLiteDatabase(查找存储的敏感数据)。
加密逻辑:AES、RSA、MD5、SHA(定位加密算法实现)。
权限相关:checkSelfPermission、requestPermissions(分析权限使用场景)。
类和方法关系:右键点击类名或方法名,选择 Find Usages 可查看被调用的位置,梳理代码调用链。
匿名类和内部类:Jadx 会将匿名类命名为 类名$数字(如 MainActivity$1),需结合上下文理解其作用(如回调接口实现)。
图片和二进制资源:res/drawable、res/mipmap 中的图片,或 res/raw 中的二进制文件(可能包含配置文件、证书等)。

APP打包公司

常见的打包公司有Dcloud(北京数字天堂公司)、apicloud(柚子科技)等
用jadx搜索“APPID”可以查看到打包公司apicloud为柚子(北京)科技有限公司,APPID为APICloud 平台为应用分配的唯一标识(类似应用的 “身份证”),用于关联开发者账号和应用资源。即可去调证。如图6所示:

图6
APP打包公司可调证内容,如图7所示:

图7
此文如有错误欢迎沟通指正。使用相关工具和方法时须严格遵守法律法规及道德准则,同时亦欢迎其他相关问题和策略的探讨。

夜雨聆风