// blog / 安卓逆向

安卓逆向 · 安卓基础知识

一,系统架构

安卓系统分层架构

安卓可看成一个由下至上高度整合的linux发行版,官方架构如下:

464

和Windows的对比:

  • Windows逆向常见的是 .exe/.dll 在用户态,驱动在 ntoskrnl;安卓里多了“Java层”,多数应用逻辑跑在ART虚拟机上,但底层原生代码在Native层。

  • 安卓没有传统的 main() 入口,应用由 Zygote进程 孵化,入口在 ActivityThread.main()。

逐层拆解(从下至上)

1.Linux 内核层

  • 作用:提供基本的系统功能 和 与硬件交互的驱动,像Display Driver(显示驱动)、Camera Driver、WIFI Driver 等。进程隔离、内存管理、驱动、网络栈、文件系统、安全机制(SELinux)。
  • 关键机制:
    • Binder驱动:安卓独有的IPC,所有跨进程通信几乎都走它。
    • SELinux:强制访问控制,限制进程能访问的资源,是沙箱的基石。
    • 用户ID隔离:每个APP是一个独立的Linux用户(u0_aXXX),天然隔离。

2.硬件抽象层(HAL)

硬件抽象层 (HAL) 

  • 作用:把硬件驱动封装成用户态 .so 库,供上层通过HIDL/AIDL调用。

3. Native层 + Android runtime

提供核心库( C/C++ 库 )(如 libc、binder、WebKit)和运行环境(虚拟机),执行 so 代码与编译后的 Java 代码(.dex)。 Native层 虚拟机

4. Java 框架层 (Framework)

提供系统服务与 API(Activity 管理、包管理、窗口管理等),所有 Java 应用依赖它。

5. 系统应用与第三方应用

  • 预装应用(/system/app, /system/priv-app)拥有更高级的权限(signatureOrSystem)。

  • 第三方应用安装在 /data/app/,沙箱隔离。

  • APK结构:本质是一个zip包,包含:

    • classes.dex(可能有多个)
    • lib/ (各ABI的so)
    • res/ 资源文件
    • AndroidManifest.xml(二进制XML,描述组件、权限、入口)
    • META-INF/ 签名信息

简单apk打包流程图


数据信息参考来源

平台架构  |  Platform  |  Android Developers deepseek

// comments

评论

加载中…

正在读取评论…