拆开“应用宝”看看:腾讯应用宝 9.2.7 的静态解包报告
本文是对腾讯应用宝 Android 客户端(v9.2.7)的静态分析笔记整理而成,仅供学习研究 Android 逆向工程与大型 App 架构使用。所有信息均来自对公开分发 APK 的解包观察,不涉及任何破解、去签名或二次分发行为。
阅读口径:文中“包含、声明、调用”表示在 APK、Manifest 或反编译结果中观察到;“会、能够、默认开启”只有在给出动态验证条件时才成立。本文没有对服务器策略、ROM 特权、广告触发和后台保活做运行时验证,不能据此推断所有设备上的实际行为。
TL;DR
- 样本:应用宝 9.2.7(versionCode 9272130),APK 体积 31.28 MB,包名
com.tencent.android.qqdownloader - 规模:5 个 dex 共约 40 MB,反编译出 24,116 个 Java 文件;其中约 7,330 个类被混淆进了一个名为
yyb9272855的巨型包 - 签名:一张 2010 年 6 月签发的证书,CN 是
Android QZone Team——应用宝和 QQ 空间共用一张 15 年前的 1024 位 RSA 签名 - 组件密度:Manifest 声明了 122 项权限、317 个 Activity、95 个 Service、32 个 Receiver、37 个 Provider,横跨 8 个以上进程
- 亮点技术栈:腾讯 Shadow 插件框架(内置 13 个动态插件)、Kuikly 跨端框架(5 个预编译页面包)、Photon Lua 动态化(1,160 个 Lua/XML 布局文件)、自研 TQUIC 网络协议
- 安装体系:申请了
INSTALL_PACKAGES/DELETE_PACKAGES等系统级权限,同时保留了无障碍自动安装(”省心装”)、Root 安装、session 安装三条路线——甚至直接内置了 APKPure 的开源 XInstaller 安装链 - 保活体系:一个叫
watermelon(西瓜)的守护模块 +:daemon进程 + 联运保活代理,共 49 个组件跑在:live进程里
一、样本与解包环境
1.1 基本信息
| 项目 | 值 |
|---|---|
| 文件名 | 应用宝.apk |
| 文件大小 | 32,799,814 字节(31.28 MB) |
| SHA-256 | 85c22a39013762bfa1217799d31732f1c1c58dcd13167bfd85356cf514b7a78d |
| 包名 | com.tencent.android.qqdownloader |
| 版本 | 9.2.7(versionCode 9272130,渠道号 1115578,buildno 2855) |
| minSdk / targetSdk | 21(Android 5.0)/ 29(Android 10) |
| compileSdk | 33(Android 13) |
| 签名方案 | APK Signature Scheme v1(JAR signing) |
targetSdk 29 表示该构建面向 Android 10 的兼容行为;它可能影响分区存储和后台启动等系统策略,但具体效果仍取决于设备系统版本、安装渠道和授予的权限。requestLegacyExternalStorage="true" 与 usesCleartextTraffic="true" 也出现在本次样本的 Manifest 中,这只能说明配置存在,不能单独证明运行时一定使用明文流量。
1.2 签名证书:一张 15 年前的 QZone 证书
用 OpenSSL 解析 META-INF/ANDROIDR.RSA,得到了本次解包最有历史感的一个发现:
Issuer/Subject: C=86, ST=Beijing City, L=Beijing City,
O=QZone Team of Tencent Company, OU=Tencent Company,
CN=Android QZone Team
有效期: 2010-06-27 ~ 2035-06-21
算法: sha1WithRSAEncryption + 1024-bit RSA
SHA-1 指纹: 26:77:C0:F3:BC:06:B2:BB:62:7C:56:53:04:0E:6D:A8:B2:F5:E3:9C
三个值得玩味的地方:
- CN 是 “Android QZone Team”。应用宝的前身是”腾讯应用中心”(AppCenter),早期由 QQ 空间团队孵化,这张 2010 年的证书一直沿用到今天,15 年没换过。
- sha1 + 1024 位 RSA。以 2026 年的眼光看这已经是弱签名配置(SHA-1 碰撞在 2017 年已被实际构造出来,1024 位 RSA 也在 NIST 的退役清单上)。但因为签名方案是 v1 且证书只用于 App 身份校验,实际风险有限——不过这也从侧面说明签名一旦公开分发就几乎不可能更换:换了签名,所有依赖签名校验的生态(应用市场比对、风控白名单、公众号跳转校验)全部失效。
- 签名文件名是
ANDROIDR.RSA而不是常见的CERT.RSA,说明构建流水线自定义了签名别名。
1.3 解包流程
应用宝.apk
├─ unzip 直解 → apk/ (原始文件,含 5 个 dex、resources.arsc)
├─ apktool d → app_decoded/(smali + 可读 Manifest + res + assets)
└─ jadx -d → jadx_out/ (24,116 个反编译 Java 文件,167 MB)
工具就三样:unzip、apktool 2.10.0、jadx。没有加固壳——这是本次解包最顺利的地方:应用宝没有使用 360/梆梆/爱加密之类的商业加固,dex 可以直接被 jadx 全量还原(只有 ProGuard 混淆,没有 VMP/抽取)。
二、整体结构:40 MB 的 dex 里装了什么
2.1 dex 分布
| 文件 | 大小 |
|---|---|
| classes.dex | 8.9 MB |
| classes2.dex | 11.0 MB |
| classes3.dex | 10.8 MB |
| classes4.dex | 9.4 MB |
| classes5.dex | 0.9 MB |
五个 dex 加起来约 41 MB,反编译后 167 MB 源码。
2.2 代码包地图
反编译出的顶层包结构如下(按”出身”归类):
| 包 | 体量 | 身份 |
|---|---|---|
com.tencent.assistant |
3,482 个文件 / 26 MB | 应用宝主业务包(assistant = “手机助手”时代的老名字) |
com.tencent.pangu |
1,570 个文件 / 16 MB | UI 层(盘古,应用宝 5.0 重构时的界面框架代号) |
com.tencent.nucleus |
— | 管理模块:无障碍、清理、安装引导、后台扫描 |
yyb9272855.* |
7,330 个文件 | ProGuard 混淆类(xb.java ×1450、xc.java ×1008…) |
com.tencent.* 其余 |
~5,000 | 腾讯系 SDK(bugly/mars/mmkv/shadow/rdelivery/turingfd…) |
com.qq.AppService |
8 个类 | Application 壳入口 |
com.apkpure.* |
64 个文件 | APKPure 开源 XInstaller 安装链 |
com.live.* |
— | watermelon 守护进程模块 + 直播同步 |
kotlin/kotlinx/androidx 等 |
— | 标准库 |
shark |
86 个文件 | Square 的 LeakCanary heap 解析库(生产版内置内存泄漏检测) |
tmsdk |
4 个文件 | 腾讯手机管家 SDK 垃圾清理引擎 |
com.huya / com.immomo |
— | 虎牙直播 SDK / 陌陌 SDK(直播能力) |
com.huawei / com.hihonor |
— | HMS Core、华为/荣耀推送 |
两个细节:
yyb9272855这个包名本身就是个有趣的现象。它不是开发者写的,而是 jadx 在还原混淆代码时的自动命名(yyb前缀 + 一串数字)。7,330 个类挤在几百个形如a/xb.java、zt/xd.java的路径下——ProGuard 只保留了xb~xj这九个类名字轮转,可读性为零。核心业务逻辑大量藏在这个包里,比如开屏上报类yyb9272855.l8.xb。- 主 Application 的名字暴露了产品史:包名是
com.tencent.android.qqdownloader(”QQ 下载器”——应用宝最早就叫”腾讯应用助手/下载器”),Application 类挂在com.qq.AppService.RealAstApp(Ast = Assistant)。
2.3 入口与启动链
AndroidManifest
└─ application android:name="com.qq.AppService.RealAstApp"
└─ extends com.tencent.crabshell.loader.CrabShellApplication ← 内部 Application 代理框架
└─ getApplicationLike() → "com.qq.AppService.RealApplicationLike" ← 真正的 Application 逻辑
LAUNCHER 入口:
com.tencent.pangu.link.SplashActivity
+ SplashActivityAlias1~6(六个备用图标 alias,支持动态换图标)
crabshell(螃蟹壳)不是加固壳,而是腾讯内部的 Application 代理/多形态加载框架——真正的启动逻辑在 RealApplicationLike 里,这层代理为插件化和多进程初始化留了钩子。六个 SplashActivityAlias 则是”动态换图标”能力的载体(节日图标、桌面活动位)。
有个小彩蛋:com.qq.AppService.StartApp 这个遗留入口启动后只弹一个 Toast——
ToastUtils.show(this, "此功能已下线~");
finish();
一段 2015 年的幽灵代码,至今还躺在 dex 里。
三、权限清单:一个”应用市场”为什么需要 122 项权限
去掉自定义权限后,122 项 uses-permission 可以分成几类:
3.1 系统级/特权权限(普通 App 拿不到的)
INSTALL_PACKAGES 静默安装(系统权限)
DELETE_PACKAGES 静默卸载
FORCE_STOP_PACKAGES 强制停止其他应用
REAL_GET_TASKS 获取真实任务栈
MANAGE_USERS 用户管理
ACCESS_CACHE_FILESYSTEM 访问系统缓存分区
WRITE_APN_SETTINGS 改写 APN
CLEAR_APP_CACHE 清除其他应用缓存
DIAGNOSTIC 诊断
这是应用商店类 App 在厂商预装/系统签名场景下的标准配置——在普通用户设备上这些权限是拿不到的,但应用宝长期与手机厂商合作预装(ROM 内置版以系统权限运行,这也是它能做到”免 Root 静默装”的前提)。Manifest 里申请 ≠ 运行时拥有,普通版应用宝实际走的是下面两条路。
3.2 敏感运行时权限
CAMERA / RECORD_AUDIO / ACCESS_FINE_LOCATION
READ/WRITE_EXTERNAL_STORAGE
READ_CALENDAR / WRITE_CALENDAR
QUERY_ALL_PACKAGES 全量应用列表
GET_INSTALLED_APPS (厂商自定义)已装应用列表
BIND_ACCESSIBILITY_SERVICE 无障碍服务(自动安装的核心)
BIND_NOTIFICATION_LISTENER_SERVICE 通知监听
READ_LOGS / READ_SECURE_SETTINGS
SYSTEM_ALERT_WINDOW 悬浮窗
3.3 生态杂项
大量厂商桌面角标权限(华为/OPPO/vivo/三星/索尼/HTC/努比亚 launcher 的 badge 权限共十余项)、com.qq.superuser.READ_PERMISSION(QQ 管家 Root 管理)、oicq.wlogin_sdk.permission.WloginProvider.*(QQ 登录)。
113 个组件声明了 android:exported="true"——对一个 317 Activity/95 Service 的 App 来说这个比例不低,靠的是自建的 component_security 签名级自定义权限做内部组件间鉴权。
四、进程与保活:八进程架构与”西瓜”守护
4.1 进程分布
Manifest 中的 android:process 统计:
| 进程 | 组件数 | 用途 |
|---|---|---|
:live |
49 | 直播/长连接/推送 |
:daemon(@string/ahu) |
17 | 守护进程(下载、核心服务) |
:connect |
9 | 连接服务 |
:plugin / :remote |
8 | 插件进程 |
:midasPay |
3 | 支付 |
| 主进程 + 其他 | — | UI |
4.2 watermelon 守护模块
com.live.watermelon 是一套完整的保活子系统:
DaemonService/MainLiveService—— 常驻前台服务SentryAlphaService/SentryBetaService—— 双哨兵服务(A/B 双进程互相拉起是经典保活结构)com.live.watermelon.Instrumentation—— 声明在 Manifest 顶部的 Instrumentation,targetProcesses=":daemon",可以直接介入守护进程的 Application/Activity 生命周期,用于进程监控与重启- 内部还有
DaemonActivity(1px 活动保活的老把戏)、通知栏checkIfNotificationShowAndTryFix(检测自己的常驻通知被用户关掉后自动补发)
此外还有 com.tencent.alliance.alive.proxy.AllianceAliveServiceProxy——”联盟保活”代理,用于应用宝作为联运分发渠道时为内嵌游戏提供进程保活能力。
配套的 com.knightboot.spwaitkiller 是个开源库(SPWaitKiller),通过 HiddenApiExempter 绕过 Android 9+ 的隐藏 API 限制,解决 SharedPreferences 等待锁死进程的问题——一个第三方工具型 App 的常见优化件。
五、安装体系:三条路线 + 一个借来的安装器
“下载 → 安装”是应用宝的命根子,解包看到的安装实现远比想象中复杂:
5.1 无障碍自动安装(”省心装”)
com.tencent.nucleus.manager.accessibility.YYBAccessibilityService 注册了 BIND_ACCESSIBILITY_SERVICE,配套的 YYBAutoInstallUtil 里有这样的文案:
"省心装开启成功" / "已关闭省心装"
工作流程:用户下载完 APK → 拉起系统安装页 → 无障碍服务监听界面节点 → 自动点击”安装/下一步/完成”。为了把这条链路跑通,还配套了权限引导页(PermissionRequestProxyActivity)、ApkInstallGuideActivity、以及一套完整的场景埋点(GUIDE_SCENE_OPEN_ACCESSIBILITY_AT_*)。
5.2 APKPure XInstaller——开源组件的直接引入
最有意思的发现:com.apkpure.components.xinstaller 这 64 个文件,就是 APKPure 开源的 XInstaller 库(Kotlin 编写,RealExecute.kt 的 SMAP 调试信息里清晰可见 RealExecute.kt、com/apkpure/components/xinstaller/chian/RealExecute 的原始文件名)。
它提供 session-based 安装(SessionInstallReceiverActivity)、XAPK/OBB 支持(配套文案”应用宝需要您的设备许可才能继续安装OBB文件”)、以及各种厂商 ROM 的安装兼容。腾讯没有重造这个轮子,而是直接把竞争对手(第三方市场 APKPure)的开源安装器搬了进来——开源世界的一次奇妙汇合。
5.3 Root 安装与厂商适配
RootUtilInstallActivity—— Root 用户走su静默安装assets/sl/目录下按 ROM 分目录存放布局适配数据,文件名直接暴露了适配目标:
sl/coloros/0/OPPO_OPPO_PBEM00_11_A.10_0_20180930115945.sl
sl/emui/0/HUAWEI_HUAWEI_ELE-AL00 10.1._0_20201001143802.sl
sl/funtouch/... sl/samsung/...
这些 .sl 文件(带具体机型、ROM 版本、时间戳)是一套按机型索引的安装引导/弹窗样式配置,为的是在 ColorOS/EMUI/Funtouch/OneUI 的各种定制系统设置页上准确引导用户开权限。
六、动态化三板斧:Shadow 插件 + Kuikly 跨端 + Photon Lua
大型超级 App 的标配是”把能动态化的都动态化”,应用宝用了三套并行的动态化方案:
6.1 Shadow 插件框架(腾讯开源)
com.tencent.shadow 完整内置(core + dynamic),配套自研的 com.tencent.assistant.plugin 管理层(HookPluginDexLoader、PluginIPCClient、PluginLoadFilter…)。
assets/plugin_config.json 声明了 13 个预置插件:
plugin_qrcode 二维码
plugin_video 视频
plugin_cloudgame 云游戏
plugin_midas 支付(Midas 是腾讯支付中台)
plugin_dawangka 大王卡(腾讯王卡免流)
plugin_startrail 星轨
plugin_replace_monitor 替换监控
plugin_tquic TQUIC 网络库
plugin_pag_animation PAG 动画
plugin_cloudcos COS 对象存储
plugin_ai_face_photo AI 趣拍照
plugin_ai_album AI 相册
plugin_ams AMS 消息通道
注意 plugin_cloudgame——应用宝的云游戏能力是按需下载的插件,不在基础包里。
6.2 Kuikly 跨端框架(腾讯 Kotlin Multiplatform 方案)
assets/kuikly/ 下有 5 个以 .apk 命名的页面包,解包看内容就是纯 classes.dex:
AppDetailPage.apk 526 KB ← 应用详情页(最核心的页面!)
BattlePassPage.apk 213 KB ← 通行证/活动
DiscoverTopicPage.apk 150 KB
KuiklyDialog.apk 261 KB
PageAdBonusTab3.apk 467 KB
应用宝最高频的”应用详情页”已经迁移到 Kuikly 跨端实现,dex 的编译时间戳是 2025-07-22——离发版非常近,说明这条链路是活跃开发中的主干方案,不是实验性残留。
6.3 Photon:Lua 动态化 UI
assets/photon/ 下躺着 1,160 个文件:.lua 逻辑脚本 + .xml 布局 + .out 编译产物,覆盖了首页信息流卡片、应用详情页热点评论卡、频道顶部入口等大量 UI 单元(app_channel_top_entry_card.lua、app_detail_hot_comment_card.xml…)。另有 photonpage/ 12 个 zip 热更包、photondata/ 缓存数据。
也就是:一个页面由三种技术栈共同拼成——原生 View(pangu/nucleus)、Kuikly 跨端页(业务主页面)、Photon Lua 卡片(信息流单元),外加 H5(BrowserActivity + 微博安全键盘 libwbsafeedit)兜底。四条渲染管线并存,这是”祖传超级 App”最真实的形态。
七、网络与协议
7.1 服务端域名
从代码常量中提取的核心 API 域名:
| 域名 | 用途 |
|---|---|
mayybnew.3g.qq.com |
主接口(”ma” = mobile api + yyb) |
mayyb.cs0309.3g.qq.com |
主接口(cs0309 = 移动专线接入层) |
mayybquic.3g.qq.com |
QUIC 专用接入 |
mayybstat*.3g.qq.com |
统计上报 |
mayybkconnnew.3g.qq.com |
长连接 |
cms.myapp.com |
CMS 运营位(出现 19 次,myapp.com 是应用宝老域名) |
cdn.yyb.gtimg.com / dd.myapp.com |
资源/下载 CDN |
qzs.qq.com |
QZone 域上的 H5(王卡选号等) |
privacy.qq.com |
隐私协议 |
dev/pre/test-qzs.yybv.qq.com |
三套测试/预发环境域名也打进了正式包 |
应用宝在移动端接入了自研 TQUIC(腾讯版 QUIC,Facebook/MVAP 的 Mos quitting 同类方案),并且专门为它做了一个按需下载的插件(plugin_tquic)——普通包用 HTTP/2,触达条件后动态换协议。
7.2 URL Scheme
tmast:// 应用宝自有 scheme(tencent mobile assistant)
tmast-gameacc:// 游戏加速
tencent1101070898:// QQ 互联 AppID scheme(1101070898 即应用宝的开放平台 ID)
qwallet100703379:// 财付通支付
market:// 标准应用市场协议
特别的是,Manifest 里还注册了对 apps.wandoujia.cn / apps.wandoujia.com 的响应——能接住豌豆荚的 deeplink。考虑到豌豆荚已并入阿里,这个 2015 年市场大战时代的历史兼容至今未删。
八、安全与风控:一个下载器装了多少”盾”
| 组件 | 来源 | 作用 |
|---|---|---|
libqimei.so(1.65 MB,最大 so) |
腾讯 | QIMEI 设备指纹(全腾讯系统一设备标识) |
libyyb_csech.so(1.37 MB) |
应用宝自研 | 通信安全校验/加密(c-sech ≈ channel security) |
com.tencent.turingfd.sdk + libturingbase.so |
腾讯图灵盾 | 风控/反作弊 |
com.tencent.tmsdk + libbs-sec.so |
腾讯移动安全(手机管家 SDK) | 安全扫描(含 RubbishEntity 垃圾清理引擎) |
com.tencent.securemodule |
内部 | 安全模块(jni/impl/ui 分层) |
com.tencent.pangu.apkdefense |
内部 | APK 防御:ApkDefenseManager + 远程策略下发(GetMonitorStrategyEngine),检测自身被二次打包/被 hook |
com.tencent.tmf.shark 权限 + shark 包 |
Square 开源 | 生产环境 heap dump + 内存泄漏分析 |
libmarsxlog.so / libsm_mq.so / libpcdn.so |
腾讯 | 微信同款日志内核 / 安全消息队列 / P2P CDN 下载加速 |
apkdefense 的存在说明应用宝对”自己被修改重打包上架”有专门的检测与远控策略:客户端定期拉取监控策略(GetMonitorStrategyCallback),上报环境异常。
libpcdn.so 值得单独一提:应用下载走的是腾讯 PCDN——下载热门 App 时你的手机同时会作为 P2P 节点向其他用户分块上传。这是国内应用市场节省 CDN 带宽的通行做法,只是普通用户很难从界面感知到。
九、监控与数据上报全景
| SDK | 归属 | 维度 |
|---|---|---|
| Beacon(灯塔) | 腾讯 | 核心埋点上报 |
Bugly + libBugly_Native.so + libbuglybacktrace.so + libbugly_dumper.so |
腾讯 | 崩溃捕获(含 native dump 进程) |
RMonitor + librmonitor_base.so / librmonitor_memory.so |
腾讯 | 性能监控(卡顿/内存) |
| Mars xlog | 腾讯 | 压缩加密日志 |
| RDelivery | 腾讯 | 特性开关/配置下发 |
Shiply(nativeaegis) |
腾讯 | 灰度发布/远程配置 |
TGPA(vendorpd) |
腾讯 | 游戏性能调优 |
Jacoco agent(jacoco-agent.properties) |
开源 | 代码覆盖率——测试环境的插桩被带进了正式包 |
jacoco-agent.properties 是个标准的 CI 泄漏样本:构建机器上的覆盖率采集配置跟着正式包一起发布了。无害,但很真实。
十、生态兼容:为什么一个应用宝要装下华为、陌陌和虎牙
翻完顶层包,会发现它已经不只是”应用市场”,而是一个流量分发+内容+游戏+服务的混合体:
- 游戏生态:
com.tencent.game(游戏中心/悬浮窗/预加载资源)、com.tencent.tgpa(游戏加速)、plugin_cloudgame云游戏插件、com.tencent.midas支付、msdk(游戏联运 SDK) - 直播内容:
com.huya.*虎牙直播 API(开播/进房)、com.immomo.momo.sdk陌陌连麦 SDK、com.live.*自有直播间(:live进程里 49 个组件) - 厂商通道:华为 HMS(agconnect + push + 分布式数据)、荣耀 push、OPPO/vivo/小米角标与推送适配
- 登录与社交:QQ 互联(
com.tencent.connect)、wlogin(oicq.wlogin_sdk)、微信小程序容器(com.tencent.luggage+wxminigame) - 杂项能力:语音识别
libqcloud_asr_realtime.so(实时 ASR,用于语音搜索/客服)、换机助手(HJBackupService/SwitchPhoneService)、应用备份、WiFi 助手遗留(FROM_FREEWIFI)、阅文(yuewen)、AI 趣拍照/AI 相册插件
十一、资源层速写
- 4,490 个资源文件 / 175 个资源目录,默认 strings.xml 3,331 条,支持简中/繁中/港/英等数十种语言
- 图标与美术以 WebP 为主(
doNotCompress列表里的aed.webp等),动效使用 PAG 格式(腾讯自研,new_yyb_refresh_anim.pag等) res/color-night/、drawable-night-*—— 完整的深色模式资源集assets/dexopt/baseline.prof—— Baseline Profile 已启用(Android 官方的启动优化手段,说明团队在认真做冷启动性能)assets/tcaptcha_webview*.html—— 天御验证码内置离线页assets/fpub.k、licence.conf、10008.dat等 — 加密配置/许可文件(licence.conf实测为加密二进制,无法直接阅读)
十二、写在最后:从这份解包里能读到什么
1. 一部中国 Android 市场的进化史。
包名 qqdownloader、证书 CN QZone Team、域名 3g.qq.com/myapp.com、启动文案”此功能已下线~”——每一层都封存着一个时代。应用宝从 2011 年的”腾讯应用助手”到今天,核心场景(下载→安装)从未变过,但外壳下已经叠了三代技术:Native → 插件化(Shadow)→ 跨端(Kuikly)+ 动态化(Photon)。
2. “应用市场”的本质是安装自动化工程。
这次解包最集中的工程投入不在商店 UI,而在”怎么把 APK 装进用户手机”:系统签名路线、无障碍路线、Root 路线、Session 路线四线并行,外加逐 ROM 逐机型的适配配置库(assets/sl/)。安装链路上甚至集成了竞争对手 APKPure 的开源安装器——工程实用主义压倒一切。
3. 监控与配置链路很密集。
3,482 个文件的主包里可以看到 monitor、st(埋点)、beacon、report、perf 等模块。代码中存在多条事件记录和配置拉取路径,但仅凭类数量无法推出“每一次点击”都会上报,也不能估算混淆类中各模块的占比。
4. 混淆是有效的,但结构藏不住。
ProGuard 把业务代码打碎成 xb/xc/xd,但包结构(pangu/nucleus/assistant/watermelon)、字符串(”省心装”)、资源名(apkdefense)、原生库名(libyyb_csech)依然完整暴露了架构。对逆向者来说,混淆挡住的是”逐行读懂”,挡不住”看懂骨架”。
5. 一些可以改进的小事。
正式包里遗留了 Jacoco 测试配置、三套测试环境域名、”此功能已下线”的幽灵 Activity、2010 年的 sha1/1024bit 证书。都不致命,但每一处都是可以讲 10 分钟的代码评审素材。
附录:解包产物清单
应用宝.apk 31.28 MB(SHA-256 见 1.1 节)
├─ apk/ unzip 直解产物(dex×5, resources.arsc, lib×2 ABI, META-INF)
├─ app_decoded/ apktool 2.10.0 产物(smali×5 套, res 4,490 文件, assets 77 项)
├─ jadx_out/ jadx 反编译产物(sources 24,116 个 .java / 167 MB + resources)
└─ tools/apktool.jar
文中结论均基于该 APK 的静态解包观察,未做动态运行验证。域名、权限和组件的存在不等于请求一定发生或权限一定获得;涉及服务器域名的信息仅用于描述架构,不构成任何访问建议。