/Android-ModGamesByInjectZygote

How to Inject So to Zygote And Cheat Games On Android

Primary LanguageC++MIT LicenseMIT

Riru-SsageHook


  • 注入方面 调用了Riru来对Zygote进行注入

    Zygote

    安卓下进程都是从Zygote fork的.
    当注入so到Zygote后,之后启动的进程就都会带有这个so.
    可以自己注入Zygote进程或者使用Riru这个模块.

  • Hook方面

    • 首先,引用Android官方的一些资料

      Android官方的一些资料

      • 使用原生代码时,硬件很重要.NDK 提供各种 ABI 供您选择,可让您确保针对正确的架构和 CPU 进行编译.
      • 不同的 Android 设备使用不同的 CPU,而不同的 CPU 支持不同的指令集.CPU 与指令集的每种组合都有专属的应用二进制接口 (ABI).
        您可以通过多种方式检查代码中的 CPU 功能,但每种方式都需要做出不同的取舍.

      支持的 ABI

      ABI 支持的指令集 备注
      armeabi-v7a armeabi
      Thumb-2
      Thumb-2
      VFPv3-D16
      与 ARMv5/v6 设备不兼容
      arm64-v8a AArch64
      x86 x86 (IA-32)
      MMX
      SSE/2/3
      SSSE3
      不支持 MOVBE 或 SSE4
      x86_64 x86-64
      MMX
      SSE/2/3
      SSSE3
      SSE4.1、4.2
      POPCNT

      有兴趣的请参考Android官方资料


      ABI:使用预处理器的预定义宏
      通常,在构建时使用 #if defined 及以下各项确定 ABI 最为方便:

      • 对于 32 位 ARM,使用 arm
      • 对于 64 位 ARM,使用 aarch64
      • 对于 32 位 X86,使用 i386
      • 对于 64 位 X86,使用 x86_64

      请注意:32 位 X86 称为 i386,而不是 x86,这可能与您预想的有所不同!


    • 而 inlinehook 显然和汇编指令集有不可分割的关联
      因此 对于 hook 我们需要根据 abi 的不同
      再根据 汇编指令集的区别 分别使用不同的hook手法

    • 对于32位进程 也就是 abi 为 armeabi-v7a 的

      • 常见的汇编指令集合为 armeabi 的 arm 模式
      • 以及 Thumb-2 的 Thumb 模式
    • 对于64位进程 也就是 abi 为 arm64-v8a 的

      • 唯一的汇编指令集合为 AArch64 的 arm64 模式
    • 在本项目中

      • 采用一个跨平台 inlinehook 框架 Dobby
      • 使用 KittyMemory 作为内存补充工具

Made By SsageParuders