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

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谭伦延

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值