APK 静态分析
反编译
APK 静态分析 是 CoddyKit 上的免费 Ethical Hacking Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Ethical Hacking Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Ethical Hacking Academy 课程共包含 4 节课。
APK 静态分析
对 APK 进行静态分析,是指在不运行应用的情况下检查其代码和资源。目标是从已编译的 DEX 中恢复出类似源代码的可读代码。
这可以揭示硬编码的机密信息、逻辑缺陷以及应用的真实行为。
使用 apktool 解码
apktool 可以将 APK 解码为可读资源和 smali(一种人类可读的 DEX 字节码形式)。它还可以解码二进制的 AndroidManifest.xml。
您可以使用它阅读清单文件,也可以重新打包修改后的应用。
apktool d app.apk -o app_srcSmali 代码
Smali 是 Dalvik 字节码所使用的类汇编语言。它虽然冗长,但可以进行精确修改,例如更改比较操作来绕过检查。
您可以修改 smali 并重新构建 APK,以改变应用行为。
const/4 v0, 0x1 # force a boolean to true使用 jadx 获取 Java 代码
jadx 可以直接将 DEX 反编译为可读的 Java 代码。图形界面版本 jadx-gui 允许您浏览类、搜索字符串并跟踪方法调用。
这是理解应用逻辑最快的方法。
jadx-gui app.apkdex2jar 流程
另一种流程是使用 dex2jar 将 DEX 转换为 JAR,然后在 JD-GUI 等 Java 反编译器中打开。
jadx 通常能生成更整洁的输出,但当 jadx 遇到困难时,dex2jar 仍然很有用。
d2j-dex2jar app.apk -o app.jar寻找机密信息
反编译后的代码通常包含硬编码的机密信息:API 密钥、令牌、加密密钥和后端 URL。
请在源代码中搜索 password、secret、apikey 和 http 等关键词。开发人员错误地认为编译后的代码会隐藏这些内容。
grep -ri "api_key\|secret\|password" app_src/检查清单文件
解码清单文件后,请检查以下内容:
- 导出的组件。
android:debuggable="true"。android:allowBackup="true"(可以通过备份提取数据)。- 危险权限或自定义权限。
网络安全配置
网络安全配置控制 TLS 行为。允许明文流量或信任用户添加的 CA 的配置,会削弱传输安全性。
此类设置会让拦截(后续主题)变得容易得多。
<application android:usesCleartextTraffic="true">使用 MobSF 自动扫描
MobSF(移动安全框架)可以自动执行静态分析。上传 APK 后,它会报告权限、硬编码的机密信息、不安全的设置以及风险评分。
它非常适合进行初步分类,但人工检查仍然能够发现更深层的问题。
重新打包与重新签名
修补 smali 后,请使用 apktool 重新构建,并对 APK 重新签名(Android 会拒绝未签名的应用)。apksigner 或 uber-apk-signer 等工具可以处理签名。
这一流程是篡改测试和运行时修改的基础。
apktool b app_src -o patched.apk
uber-apk-signer -a patched.apk深层链接与 WebView
请查找 深层链接意图过滤器以及 WebView 的使用情况。配置错误的深层链接可能会使用攻击者控制的数据启动内部界面。
包含 JavaScriptInterface 或加载不可信内容的 WebView 可能使应用遭受注入攻击和数据窃取。这两类问题都是静态审查中常见的发现。
快速检查
回想一下,哪个工具可以直接从 APK 中生成可读的 Java 代码。
回顾
现在您已经了解了 APK 静态分析:
- 使用 apktool 处理 smali 和解码后的清单文件;使用 jadx 获取可读的 Java 代码。
- 查找硬编码的机密信息,并检查清单中的导出、可调试和备份标志。
- 检查网络安全配置;使用 MobSF 进行自动化初步分析。
- 修补 smali,然后重新构建并重新签名,以测试篡改。
接下来,您将使用 Frida 操作正在运行的应用。
常见问题解答
「APK 静态分析」课时是免费的吗?
是的 — 「APK 静态分析」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Ethical Hacking Academy 课程的其余内容,请升级到 CoddyKit PRO。 Ethical Hacking Academy 课程共包含 4 节课。
「APK 静态分析」这节课中我会学到什么?
反编译 你通过在浏览器中直接运行的动手代码来练习 Ethical Hacking Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Ethical Hacking Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Ethical Hacking Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「APK 静态分析」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Ethical Hacking Academy 课中编写并运行代码吗?
能。每节 Ethical Hacking Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。