0Pricing
Ethical Hacking Academy · 课时

Android 应用结构

APK 内部结构

Android 应用结构 是 CoddyKit 上的免费 Ethical Hacking Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Ethical Hacking Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Ethical Hacking Academy 课程共包含 4 节课。

APK 文件

Android 应用以 APK(Android Package)的形式发布。它实际上是一个包含已编译代码、资源和元数据的 ZIP 压缩包。

由于它是 ZIP 文件,您可以直接将其解压来检查内容,这是移动端渗透测试的第一步。

unzip app.apk -d app_extracted/

APK 内部结构

解压后的 APK 包含:

  • AndroidManifest.xml:应用配置。
  • classes.dex:已编译的字节码。
  • res/ 和 resources.arsc:资源。
  • lib/:本地库。
  • META-INF/:签名信息。

清单文件

AndroidManifest.xml 声明应用的组件、权限和配置。在 APK 中,它采用工具可以解码的二进制 XML 形式。

它是了解应用攻击面的最重要文件。

DEX 与运行时

Java/Kotlin 源代码会编译成 classes.dex 中的 DEX(Dalvik Executable)字节码。现代 Android 通过 ART(Android Runtime)运行它。

DEX 可以转换回接近可读代码的形式,这正是 APK 静态分析所利用的特点。

四种组件

Android 应用由四种组件类型构成:

  • 活动:屏幕 / 用户界面。
  • 服务:后台工作。
  • 广播接收器:响应系统事件。
  • 内容提供程序:在应用之间共享数据。

导出的组件

标记为 android:exported="true" 的组件可以被其他应用调用。如果此类组件在未进行检查的情况下执行敏感操作,它就是一个攻击面。

渗透测试人员会查找可能泄露数据或执行特权操作的导出活动、服务和内容提供程序。

<activity android:name=".AdminActivity" android:exported="true"/>

权限

应用会在清单文件中请求权限(例如 INTERNET、READ_SMS、ACCESS_FINE_LOCATION)。

权限范围过大可能暗示存在风险行为或过度的数据访问。自定义权限也可能配置错误,从而允许未经授权的访问。

<uses-permission android:name="android.permission.READ_SMS"/>

应用沙箱

Android 会将每个应用隔离在自己的沙箱中,并为其分配唯一的 Linux UID。默认情况下,应用无法读取彼此的数据。

当应用削弱这道边界时,就会产生漏洞,例如文件可被所有用户读取,或内容提供程序暴露在外。

应用数据存储

已安装的应用会将私有数据存储在 /data/data/<package>/ 下,包括数据库、共享偏好设置和文件。

在已获取 root 权限的设备上,或通过备份,渗透测试人员可以检查此目录,查找以不安全方式存储的机密信息;后续课程将进一步介绍。

/data/data/com.example.app/

签名

每个 APK 都经过数字签名;签名存储在 META-INF/ 中。Android 会在安装和更新时验证签名。

如果您修改并重新打包应用,就必须重新为其签名,这也是开发人员依靠签名检测篡改的原因。

本地库

对性能要求较高的逻辑或混淆逻辑可能位于 lib/ 下的本地库(.so 文件)中,这些库由 C/C++ 编译而成。

它们不在 DEX 中,因此需要使用本地反汇编器单独分析。开发人员有时会将机密信息隐藏在这里,错误地认为本地代码更难检查。

lib/arm64-v8a/libnative.so

快速检查

回忆一下,哪个清单属性会将组件暴露给其他应用。

回顾

现在您已经了解了 Android 应用的结构:

  • APK 是一个 ZIP 压缩包,其中包含 AndroidManifest.xml、classes.dex、资源和签名数据。
  • 应用使用四种组件;导出的组件属于攻击面。
  • 权限和每个应用的沙箱控制访问;私有数据存储在 /data/data/ 中。
  • APK 会经过签名,以检测篡改。

接下来,您将在静态分析中反编译一个 APK。

常见问题解答

「Android 应用结构」课时是免费的吗?

是的 — 「Android 应用结构」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Ethical Hacking Academy 课程的其余内容,请升级到 CoddyKit PRO。 Ethical Hacking Academy 课程共包含 4 节课。

「Android 应用结构」这节课中我会学到什么?

APK 内部结构 你通过在浏览器中直接运行的动手代码来练习 Ethical Hacking Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Ethical Hacking Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Ethical Hacking Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「Android 应用结构」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Ethical Hacking Academy 课中编写并运行代码吗?

能。每节 Ethical Hacking Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. Android 应用结构
  2. APK 静态分析
  3. 使用 Frida 进行动态分析
  4. 不安全的存储与通信
← 返回 Ethical Hacking Academy