APK逆向后到底能看到什么?这份”看文件”指南请收好

admin 2026-09-29 05:44:31 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: 本文是一份APK逆向分析实用指南,核心观点是逆向并非通读全部代码,而是快速定位关键文件。文章详细解析了AndroidManifest.xml、smali代码、lib目录、assets资源等关键位置的查看重点,并指出加壳App的典型特征及应对思路。文章提供了可操作的具体检查项,对安全测试人员具有实用参考价值,同时强调需在授权范围内进行测试。 综合评分: 78 文章分类: 逆向分析,移动安全,恶意软件


APK 逆向后到底能看到什么?这份”看文件”指南请收好

原创

是老A 是老A

老A搞安全

2026年9月24日 07:44 贵州

在小说阅读器读本章

去阅读

在公众号小说中沉浸阅读

一位深耕网络安全的老兵,目前是一家安全公司的技术分管,擅长渗透测试及安全培训方向,老A的愿望是大家没烦恼,一切顺心!

上面这张图,是用apktool解包后的典型结构,如果用 jadx,它不产出文件树,而是直接在界面里分四个视图:Java 源码、Smali、资源、Manifest

工具虽然不同,但看的”内容”是一样的

很多人第一次逆向 APK,解包后面对几百个文件夹和上万行 smali,第一反应是懵的

逆向的核心不是”读所有代码”,而是快速定位关键文件,翻找有用的信息进一步利用

这里,我们重点看些啥呢?

  1. AndroidManifest.xml

这是整个 App 的”核心”,必看这几项:

  • package —— 包名,判断是不是重打包的马甲
  • <application android:name> —— 自定义 Application 类,加壳入口通常在这
  • <activity> —— 所有界面,注意 android:exported="true" 的组件
  • <service> / <receiver> / <provider> —— 后台组件和跨进程通信入口
  • <uses-permission> —— 权限,异常组合(如短信+网络)是恶意软件信号
  • android:debuggable —— 是否可调试,逆向时常手动改成 true

2. smali/ 或 Java 源码

重点盯这些类和方法:

  • Application 子类 —— attachBaseContext() 和 onCreate(),加壳、反调试、环境检测常在这
  • 网络请求 —— OkHttp、Retrofit、HttpURLConnection 的调用点,找 API 地址和加密参数
  • 加密/签名 —— Cipher、MessageDigest、Mac、Signature,找密钥和算法
  • Native 方法声明 —— 带 native 关键字的,说明逻辑在 .so 里
  • 反射调用 —— Class.forName、getDeclaredMethod,混淆和壳常用
  • 动态加载 —— DexClassLoader、PathClassLoader,加壳/热更新标志

3. lib/ —— native 库

.so 文件里通常藏着:

  • 核心算法(加密、协议、授权校验)
  • 反调试、反 Hook 逻辑
  • 壳的解密逻辑

用 IDA/Ghidra 打开,重点看 JNI_OnLoad 和 Java_* 导出函数

4. assets/ —— 原始资源

不被 aapt 编译,常被用来藏东西:

  • 加密的 dex/jar(壳的 payload)
  • 配置文件、证书、模型文件
  • 数据库、字典

这是加壳 App 藏原始 dex 的常见位置

5. res/values/strings.xml —— 字符串

  • API 地址、密钥、提示语
  • 有时敏感信息直接硬编码在这

6. META-INF/ —— 签名信息

  • CERT.RSA —— 签名证书,对比官方版本判断是否重打包

然后,实战中需要注意的是

加壳 App 的特征:Manifest 里 Application 指向陌生类,assets/ 里有 .jar/.dex/.dat 等可疑文件,lib/ 里有名字奇怪的 .so(如 libjiagu.so、libshell.so)。这时 smali/ 里看到的全是壳代码,需要先脱壳

多 dex:大型 App 会有 classes2.dex、classes3.dex,jadx 自动合并展示,apktool 拆成 smali_classes2/ 等目录

资源混淆:有些 App 用 AndResGuard 把 res/ 路径改成 r/a/b,看资源会很难受,但功能不受影响

Kotlin 代码:jadx 对 Kotlin 的反编译质量不如 Java,会出现大量 Intrinsics 调用,读的时候要有心理准备

至此……顺利!!

⚠️ 法律声明:以上内容仅供安全学习和授权测试使用。未经授权的漏洞利用属于违法行为,请勿对未经授权的目标进行测试


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。

本文转载自:老A搞安全 是老A 是老A《APK 逆向后到底能看到什么?这份”看文件”指南请收好》

评论:0   参与:  0