Skip to content

How to Inject So to Zygote And Cheat Games On Android

License

Notifications You must be signed in to change notification settings

gmh5225/Android-ModGamesByInjectZygote

 
 

Repository files navigation

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

About

How to Inject So to Zygote And Cheat Games On Android

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 64.4%
  • C 33.8%
  • CMake 1.3%
  • Shell 0.3%
  • Assembly 0.1%
  • HTML 0.1%