豆包输入法 (Doubao IME) APK 分析报告

分析日期: 2026-06-16 | 分析方法: apktool 静态解包分析


一、基本信息

属性
应用名称豆包输入法 (Doubao IME)
包名com.bytedance.android.doubaoime
版本号1.3.12 (versionCode: 100312006)
构建时间2026-06-15 12:10 (Jenkins: wave_ime_publish_pkg_official_64)
目标SDKcompileSdk: 33, targetSdk: 33, minSdk: 26 (Android 8.0+)
开发者北京字节跳动网络技术有限公司 (ByteDance)
签名方案BYTESIGN (APK Signature Scheme v2: X-Android-APK-Signed: 2)
架构支持arm64-v8a only (纯64位)
语言实现Java + Kotlin + C/C++ (JNI)
DEX Smali文件数18,683 个
Native库总大小~73 MB (54个 .so)
解包后总大小~462 MB

二、整体架构剖析

2.1 包结构概览

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
├── AndroidManifest.xml       # 应用清单(反编译后)
├── apktool.yml # apktool元信息
├── assets/ # 静态资源(149MB)
│ ├── skin/default/ # 皮肤/主题系统
│ ├── dict/ # 输入法词库(24个语言模型文件)
│ ├── lottie/ # Lottie动画资源
│ ├── slardar.properties # 构建信息
│ └── grs_sdk_*.json/bks # 华为GRS SDK配置
├── lib/arm64-v8a/ # Native层(73MB, 54个.so)
├── res/ # Android资源(44MB)
├── smali/ # 主DEX反编译(96MB)
├── smali_classes2/ # 第二DEX反编译(83MB)
├── unknown/ # 未压缩额外文件(~1MB,HMS/ Kotlin元数据等)
└── original/ # 原始签名与清单
└── META-INF/ # BYTESIGN.RSA, BYTESIGN.SF, MANIFEST.MF

2.2 多进程架构

应用采用多进程架构,从AndroidManifest可见以下独立进程:

进程名用途
主进程输入法服务 (ImeService)、核心键盘功能
:Setting设置界面、引导页、WebView、隐私声明、5星好评
:push推送服务 (WsChannel, NotifyService)
:pushservice小米推送 (XMPushService)
:smp多厂商推送进程(小米SMP、Vivo、Oppo SMP)
:widgetProvider小组件推送处理
:upgrade应用增量升级下载
:feedbacker用户反馈系统(浮窗、截图、录屏上报)
:downloader独立下载进程 (SocialBase Downloader)
:uploadLogProcess日志上传

多进程使各功能模块隔离,推送SDK崩溃不会影响IEM服务,下载任务独立运行。


三、核心功能分析

3.1 输入法引擎

组件说明
ImeService继承 InputMethodService,系统IME入口
KeyboardJniJNI桥接,连接 Java 层与 Native libkeyboard.so
ImeContentProvider对外 ContentProvider,提供IME集成接口
SettingsContentProvider设置数据共享 ContentProvider

键盘布局(assets/skin/default/layout/):

布局文件键盘类型
input_kbd_pinyin26.xml全键拼音26键
input_kbd_pinyin9.xml九宫格拼音
input_kbd_english26.xml英文全键
input_kbd_bihua.xml笔画键盘
input_kbd_wubi.xml五笔键盘
input_kbd_number.xml数字键盘
input_kbd_symbol.xml符号键盘
input_kbd_more_symbol.xml更多符号
input_kbd_number_symbol_cn.xml中文数字符号
input_kbd_number_symbol_en.xml英文数字符号
input_more_cand.xml候选词展开
input_switch_keyboard.xml键盘切换面板
input_translate.xml翻译面板
input_toolbar_ai_writing.xmlAI写作工具栏

3.2 语音输入

  • 权限: RECORD_AUDIO, MODIFY_AUDIO_SETTINGS
  • 资源: Lottie语音动画(ime_asr_recognize.json, listeningIcon.json, VoiceLoadingIcon.json
  • 词库: assets/dict/asr/ 下含2个ASR专用模型文件
  • Native支持: libaudioeffect.so(7.4MB)负责音频处理

3.3 AI/ML 能力

Native库大小推断用途
libonnxruntime.so12.7 MBONNX Runtime 推理引擎,运行神经网络模型
libbytenn.so2.1 MB字节跳动自研神经网络推理库 (ByteNN)
libkeyboard.so9.2 MB核心输入法引擎(词频、联想、纠错等)

结合 libonnxruntime.so 和自定义模型文件(assets/dict 下24个hash命名的模型),推断输入法在线/离线集成了深度学习模型用于智能预测、自动纠错、语音识别等。

3.4 AI写作/翻译

  • AI写作: input_toolbar_ai_writing.xml 工具栏专用布局
  • 翻译: input_translate.xml 翻译面板,同时 assets 下有翻译语言文件:
    • default_translation_en.json (英文翻译)
    • default_translation_zh-CN.json (中文翻译)

3.5 皮肤/主题系统

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
assets/skin/default/
├── 2x/ 3x/ 3.5x/ # 多DPI适配
├── dark/ # 深色模式
│ └── drawable/ # 深色工具栏图标
├── floating/ # 悬浮键盘样式
├── land/ # 横屏样式
├── drawable/ # 自定义工具栏图片
├── layout/ # 键盘布局XML
├── input_main.xml # 主输入界面
├── translate_main.xml # 翻译界面
├── style.xml # 主样式
└── values/
├── colors.xml # 颜色定义
├── dark_colors.xml # 深色颜色
└── transparent_colors.xml # 透明颜色

3.6 无障碍服务

  • ImeAccessibilityService: 注册为无障碍服务 (canTakeScreenshot="true")
  • 功能: 监听 typeAllMask 事件,可截取屏幕内容
  • 用途推测: 用于在特定应用场景(如聊天框)中获取上下文以优化输入预测或AI功能

四、权限安全分析

4.1 权限清单

高风险权限

权限等级用途分析风险
RECORD_AUDIOdangerous语音输入功能必需⚠️中
READ_SMSdangerous读取短信验证码自动填充🔴高
RECEIVE_VERIFY_CODE_SMSinternal接收短信验证码(系统接口)🔴高
READ_CONTACTSdangerous读取联系人(可能用于输入法词汇学习)🔴高
SYSTEM_ALERT_WINDOWspecial悬浮窗(语音输入悬浮按钮、引导弹窗等)⚠️中
WRITE_SETTINGSspecial修改系统设置⚠️中
REQUEST_INSTALL_PACKAGESsignature应用内更新/下载安装APK⚠️中
BLUETOOTH / BLUETOOTH_ADMINdangerous蓝牙连接(可能用于耳机语音输入)🟢低
DETECT_SCREEN_RECORDINGnormal检测录屏状态(隐私保护)🟢低

网络权限

权限用途
INTERNET网络通讯
ACCESS_NETWORK_STATE检测网络状态
ACCESS_WIFI_STATE检测WiFi状态
CHANGE_NETWORK_STATE切换网络状态

自定义权限

权限名Protection Level用途
com.bytedance.android.doubaoime.permission.IME_PROVIDERsignatureOrSystemIME Provider 访问控制
com.bytedance.android.doubaoime.permission.PROCESS_PUSH_MSGsignature推送消息处理
com.bytedance.android.doubaoime.permission.PUSH_PROVIDERsignature推送Provider读取
com.bytedance.android.doubaoime.permission.PUSH_WRITE_PROVIDERsignature推送Provider写入
com.bytedance.android.doubaoime.permission.MIPUSH_RECEIVEsignature小米推送接收
com.bytedance.android.doubaoime.permission.RECEIVE_KEYBOARD_HEIGHTnormal键盘高度通知
com.bytedance.android.doubaoime.permission.activity.*signature设置Activity访问控制
com.bytedance.android.doubaoime.ACCESS_LOG_COMPRESSION_PROVIDERsignatureOrSystem日志压缩Provider

4.2 网络安全配置

1
2
3
4
5
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
<certificates overridePins="true" src="system" />
</trust-anchors>
</base-config>
  • CleartextTrafficPermitted=true: 允许HTTP明文流量,存在中间人攻击风险
  • overridePins=true: 覆盖了证书绑定(Cert Pinning),进一步降低安全性
  • 调试模式下同时信任用户证书,便于开发但存在安全隐患

4.3 查询的第三方应用

应用在 <queries> 标签中声明查询以下类别:

  • 社交: 微信 (com.tencent.mm)、QQ (com.tencent.mobileqq)
  • 应用商店 (24个): 华为、小米、OPPO、vivo、三星、酷安、应用宝、百度手机助手、360手机助手、豌豆荚等
  • 推送服务: 华为HMS Push、Huawei Works
  • 相机: IMAGE_CAPTURE
  • Lark SSO: ssoclient (飞书单点登录)

应用商店查询用于引导用户到对应商店完成评分/更新;社交应用查询可能用于特定场景下的输入法功能优化。


五、第三方SDK集成清单

5.1 推送SDK(全厂商覆盖)

SDK厂商相关组件APP ID
华为 HMS Push华为/荣耀PushReceiver, PushMsgReceiver, HmsMsgService, MessageService-
小米 MiPush小米XMPushService, XMJobService, PushMessageHandler, PingReceiver-
Vivo PushVivoCommandClientService, MainCommandClientService-
OPPO/一加 PushOPPO/一加DataMessageCallbackService, CompatibleDataMessageCallbackService, DataMessageReceivingService-
荣耀 Push荣耀独立配置-
自建WebSocket字节跳动WsChannelService, WsClientService, NotifyService-

5.2 字节跳动内部SDK

SDK包名/路径用途
AppLog / Slardarcom.bytedance.applog数据埋点与日志上报
APMcom.bytedance.apm, apm6性能监控(CPU、内存、卡顿等)
CrashSDKcom.bytedance.crash崩溃捕获与上报
Monitorcom.bytedance.monitor运行时监控
News (Push)com.bytedance.news推送平台SDK
ShadowHookcom.bytedance.shadowhook方法Hook框架(性能剖析)
ByteHookcom.bytedance.bytehookPLT Hook库
Slivercom.bytedance.sliver安全检测/加固
IES (Image)com.bytedance.ies图片处理引擎
Lightencom.bytedance.lighten轻量级组件
Legocom.bytedance.lego模块化框架
BDInstallcom.bytedance.bdinstall安装/迁移工具
Frameworkscom.bytedance.frameworks内部基础框架
FeedbackerLibcom.bytedance.feedbackerlib用户反馈SDK(飞书SSO集成)
PraiseDialogLibcom.bytedance.praisedialoglib应用内五星好评弹窗
RPC / Retrofitcom.bytedance.rpc/retrofit2网络请求封装
Kevacom.bytedance.keva内部KV存储
DataPlatformcom.bytedance.dataplatform数据中台SDK
MobSeccom.bytedance.mobsec移动安全 (libmetasec_ml.so)
Speechcom.bytedance.speech语音识别SDK
Tailorcom.bytedance.tailor云端配置下发
Ugcom.bytedance.ug用户增长/应用内升级

5.3 开源/第三方库

用途
AndroidX / Jetpack核心支持库、Lifecycle、Emoji2、Startup等
Kotlin标准库、协程 (Coroutines)
OkHttp3HTTP 客户端
Retrofit2REST API 封装
ONNX RuntimeAI模型推理引擎
Fresco图片加载与缓存
Lottie动画引擎
Material ComponentsUI组件库
Cronet高性能网络库 (libsscronet.so)
libcurlHTTP/网络传输
ThreeTen-BP日期时间库 (assets/org/threeten)
BoringSSL加密/SSL (libttboringssl.so)
Zstd压缩算法 (libbdzstd.so)
MaterialCalendarView日历选择组件

六、Native层详细分析

6.1 核心Native库(按大小排序)

文件名大小推断用途
libonnxruntime.so12.7 MBONNX Runtime AI推理引擎
libkeyboard.so9.2 MB核心输入法引擎
libaudioeffect.so7.4 MB音频效果处理(语音输入用)
libshell.so6.9 MB安全壳/反调试保护
libime_net_sdk.so6.8 MB输入法网络SDK
libsscronet.so6.3 MBCronet网络引擎
libcurl.so5.3 MBHTTP/libcurl
libmetasec_ml.so4.0 MB安全与ML检测 (MobSec)
libttffmpeg.so3.5 MBFFmpeg 音视频处理
libbytenn.so2.1 MB字节跳动自研NN推理 (ByteNN)
libttvideouploader.so1.3 MB视频上传
libttcrypto.so1.2 MB字节加密库
libtrack.so1.1 MB数据追踪/埋点
libime_ui_android_platform.so1.0 MBIME UI渲染平台

6.2 安全/加固相关

文件名大小用途
libshell.so6.9 MB壳保护 / 反调试
libsliver.so141 KB安全检测 (Sliver)
libmetasec_ml.so4.0 MB安全检测 + ML模型
libvcn.so211 KB完整性校验 (VCN)
libvcnverify.so10 KBVCN验证
libttmverify.so10 KB验证库
libttmverifylite.so26 KB轻量验证
libEncryptor.so76 KB加密模块

6.3 性能监控与调试

文件名大小用途
libprofiler.so471 KB性能分析器
libmonitorcollector-lib.so314 KB监控数据采集
libnpth.so178 KBNPTraceHook 主库
libnpth_*.so~500KBNPTraceHook 各插件
libshadowhook.so79 KB方法级Hook
libbytehook.so59 KBPLT级Hook

npth 系列库 (14个) 是字节跳动的 NPTraceHook 框架,用于运行时函数跟踪、内存监控、网络监控等,属于生产环境性能可观测性基础设施。


七、数据采集与隐私分析

7.1 数据上报SDK

SDK采集内容推测
AppLog/Slardar用户行为埋点数据、设备信息、网络状态
APM性能数据(CPU/内存/卡顿/启动时间等)
CrashSDK崩溃堆栈、应用状态快照
Monitor系统资源监控数据
Speech语音输入数据(可能含音频)

7.2 敏感数据访问路径

  • 短信验证码: READ_SMS + RECEIVE_VERIFY_CODE_SMS → 自动填充验证码
  • 通讯录: READ_CONTACTS → 可能用于姓名联想学习
  • 录音: RECORD_AUDIO → 语音输入
  • 无障碍截图: canTakeScreenshot="true" → 反馈系统截图上报

7.3 构建溯源

1
2
3
assets/slardar.properties:
release_build: 686f9f1_20260615_121106_7651463597704726547
jekins_name: wave_ime_publish_pkg_official_64

2026年6月15日由 Jenkins CI/CD 自动构建,构建名为 wave_ime_publish_pkg_official_64,Git commit hash 686f9f1


八、安全评估

8.1 正面因素

  • APK签名验证: 使用 BYTESIGN 方案,支持 APK Signature Scheme v2
  • 自定义权限隔离: 核心 Provider 和 Push 组件使用 signature 级自定义权限
  • 多进程隔离: 推送、下载、反馈等模块独立进程,降低单点故障影响
  • 安全检测层: libshell.so + libsliver.so + libmetasec_ml.so 构成多层安全防护
  • 完整性校验: libvcn.so + libvcnverify.so 提供运行时完整性检测
  • minSdkVersion 26: 运行在 Android 8.0+,避免了旧版系统的许多安全漏洞
  • 纯64位: 仅arm64-v8a,减少内存相关攻击面

8.2 风险点

风险项严重程度说明
明文流量允许🔴 高cleartextTrafficPermitted=true 允许HTTP,存在中间人风险
证书绑定被覆盖🔴 高overridePins=true 进一步弱化证书安全
短信读取🟡 中READ_SMS + 验证码SDK,可能泄露验证码
通讯录读取🟡 中READ_CONTACTS,隐私风险
悬浮窗权限🟡 中SYSTEM_ALERT_WINDOW 可能被滥用
无障碍截图🟡 中canTakeScreenshot=true 可在任意界面截图
大量数据采集SDK🟡 中内部SDK众多(AppLog/APM/Crash/Monitor),数据流向需关注
推送全链路🟢 低集成6个推送通道,推送SDK自身可能存在安全风险
应用安装能力🟢 低REQUEST_INSTALL_PACKAGES 用于应用内自升级
多进程ContentProvider暴露🟢 低ImeContentProvider exported=true 但有 signatureOrSystem 保护

8.3 加固分析

应用未使用常见第三方加固方案(如360加固、梆梆、爱加密等),但内置了字节跳动自研安全体系:

  • libshell.so: 壳保护逻辑
  • libsliver.so: 运行时安全检测
  • libmetasec_ml.so: 基于ML的安全异常检测
  • libvcn.so + libvcnverify.so: 代码完整性验证
  • libnpth系列: 用于行为监控,也可用于安全审计

九、总结

9.1 应用画像

豆包输入法 1.3.12 是一款功能完善、架构复杂的AI输入法产品,由字节跳动团队开发。其特点是:

  1. AI深度融合: 使用 ONNX Runtime + ByteNN 双推理引擎驱动智能预测、纠错、语音识别和AI写作
  2. 全平台适配: 集成了华为/小米/OPPO/vivo/荣耀等主流厂商的推送SDK,覆盖国内市场
  3. 多键盘布局: 支持拼音26/9键、笔画、五笔、英文、数字、符号、翻译等多种模式
  4. 安全的体系: 字节自研安全套件(shell/sliver/vcn/metasec)提供多层保护
  5. 语音输入: 内置语音识别能力,含音频处理模块
  6. 模块化设计: 多进程架构、皮肤系统、插件化的功能组织

9.2 代码混淆程度

  • 应用核心代码(com.bytedance.android.doubaoime)进行了类名混淆(a-z字母 + 数字后缀)
  • 第三方SDK保持原始包名不变
  • 存在4个完全混淆的根包(J, c, d, e in smali; e, f, g in smali_classes2),约800+类
  • 总体混淆覆盖率约 85%

9.3 关键发现

  1. 双AI推理框架: ONNX Runtime (12.7MB) + ByteNN (2.1MB) 并存,暗示同时承载标准模型和字节自研模型
  2. 语言模型加密存储: assets/dict 下24个模型文件使用hash命名,可能是加密/混淆的模型数据
  3. 无障碍截图能力: 反馈系统可截取当前屏幕内容,需关注用户隐私
  4. 网络安全弱配置: 允许明文流量且覆盖证书绑定,建议收紧
  5. 内部生态强依赖: 大量字节跳动内部SDK(20+个),反映字节技术中台的深度赋能
  6. 生产级可观测性: npth系列14个库提供全方位的运行时监控

本报告基于apktool静态解包分析,未进行动态运行分析,部分功能推断可能存在偏差。

via Deepseek-v4-pro.