A dynamic instrumentation framework designed for usage within process scope.


How to use

In app module, we use an android project to show how to use the hook toolkit.

Hook with AndHook

/** Define hook configuration */
public class AndHookConfig {
    /** Hook Activity's onStart() method */
    @HookHelper.Hook(clazz = Activity.class)
    private static void onStart(Activity activity) {
        Log.d(AndTest.LOG_TAG, "onStart: HookedActivity::onStart start, this is " + activity.getClass());
        HookHelper.invokeVoidOrigin(activity);// invoke the origin method
        Log.d(AndTest.LOG_TAG, "onStart: HookedActivity::onStart end, this is " + activity.getClass());

public class MainApplication extends Application {
    public void onCreate() {
        // Make sure AndHook's native library is loaded first.
        // Then apply hook configuration before target method running.

public class MainActivity extends Activity {
    protected void onStart() {
        Log.i(TAG, "MainActivity.super::onStart: start");
        super.onStart();// the method which is hooked
        Log.i(TAG, "MainActivity.super::onStart: end");

// After MainActivity launched, you will be able to see log in logcat like:
// AndHook_Test: MainActivity.super::onStart: start
// AndHook_Test: onStart: HookedActivity::onStart start, this is class andhook.test.ui.MainActivity
// AndHook_Test: onStart: HookedActivity::onStart end, this is class andhook.test.ui.MainActivity
// AndHook_Test: MainActivity.super::onStart: end

How does AndHook work?


How the method was intercepted?


Special Thanks