SandHook 开源项目教程

SandHook 开源项目教程

SandHook Android ART Hook/Native Inline Hook/Single Instruction Hook - support 4.4 - 11.0 32/64 bit - Xposed API Compat SandHook 项目地址: https://gitcode.com/gh_mirrors/sa/SandHook

1. 项目介绍

SandHook 是一个用于 Android ART Hook、Native Inline Hook 和 Single Instruction Hook 的开源项目。它支持 Android 4.4 到 11.0 的 32/64 位系统,并且兼容 Xposed API。SandHook 提供了多种 Hook 方式,包括 Java 方法 Hook、Native 方法 Hook 以及单指令 Hook,适用于多种场景下的应用开发和逆向工程。

2. 项目快速启动

2.1 环境准备

  • Android Studio
  • Gradle
  • Android SDK 4.4 及以上

2.2 添加依赖

在项目的 build.gradle 文件中添加以下依赖:

dependencies {
    implementation 'com.swift.sandhook:hooklib:4.2.0'
    // 如果需要支持 Android 11
    implementation 'com.swift.sandhook:nativehook:4.2.0'
}

2.3 编写 Hook 代码

以下是一个简单的 Java 方法 Hook 示例:

import com.swift.sandhook.SandHook;
import com.swift.sandhook.annotation.HookClass;
import com.swift.sandhook.annotation.HookMethod;
import com.swift.sandhook.annotation.HookMethodBackup;
import com.swift.sandhook.annotation.MethodParams;

@HookClass(Activity.class)
public class ActivityHooker {

    @HookMethodBackup("onCreate")
    @MethodParams(Bundle.class)
    static Method onCreateBackup;

    @HookMethod("onCreate")
    @MethodParams(Bundle.class)
    public static void onCreate(Activity thiz, Bundle bundle) throws Throwable {
        Log.e("ActivityHooker", "hooked onCreate success " + thiz);
        SandHook.callOriginByBackup(onCreateBackup, thiz, bundle);
    }
}

2.4 初始化 Hook

在应用启动时初始化 SandHook 并添加 Hook 类:

public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        SandHook.addHookClass(ActivityHooker.class);
    }
}

3. 应用案例和最佳实践

3.1 应用案例

SandHook 可以用于以下场景:

  • 应用逆向工程:通过 Hook 关键方法,分析应用的运行逻辑。
  • 性能优化:Hook 应用中的耗时方法,进行性能监控和优化。
  • 功能扩展:通过 Hook 系统 API,实现应用功能的扩展和定制。

3.2 最佳实践

  • 避免 Hook 过多方法:过多的 Hook 可能会影响应用性能,建议只 Hook 必要的方法。
  • 处理 Hook 失败情况:在 Hook 方法中添加异常处理,避免 Hook 失败导致应用崩溃。
  • 兼容性测试:在不同版本的 Android 系统上进行测试,确保 Hook 的兼容性。

4. 典型生态项目

4.1 SandVXposed

SandVXposed 是一个基于 SandHook 的非 Root Xposed 环境,可以在不 Root 的情况下使用 Xposed 模块。

4.2 EdXposed

EdXposed 是一个基于 SandHook 的 Xposed 框架,支持 Android 8.0 及以上版本,提供了丰富的 Xposed 模块。

4.3 VirtualApp

VirtualApp 是一个基于 SandHook 的虚拟应用框架,可以在不安装应用的情况下运行应用,适用于应用分身和多开场景。


通过以上步骤,您可以快速上手 SandHook 项目,并根据实际需求进行应用开发和逆向工程。

SandHook Android ART Hook/Native Inline Hook/Single Instruction Hook - support 4.4 - 11.0 32/64 bit - Xposed API Compat SandHook 项目地址: https://gitcode.com/gh_mirrors/sa/SandHook

猜你喜欢

转载自blog.csdn.net/gitblog_00232/article/details/142802428