Commit bd2c91b1 authored by swift_gan's avatar swift_gan

add hookmode sample

parent d1c1b69e
...@@ -2,6 +2,7 @@ package com.swift.sandhook.testHookers; ...@@ -2,6 +2,7 @@ package com.swift.sandhook.testHookers;
import android.util.Log; import android.util.Log;
import com.swift.sandhook.annotation.HookMode;
import com.swift.sandhook.test.TestClass; import com.swift.sandhook.test.TestClass;
import com.swift.sandhook.annotation.HookClass; import com.swift.sandhook.annotation.HookClass;
import com.swift.sandhook.annotation.HookMethod; import com.swift.sandhook.annotation.HookMethod;
...@@ -25,6 +26,7 @@ public class CtrHook { ...@@ -25,6 +26,7 @@ public class CtrHook {
} }
@HookMethod("add1") @HookMethod("add1")
@HookMode(HookMode.INLINE)
public static void onAdd1(TestClass thiz) { public static void onAdd1(TestClass thiz) {
Log.e("TestClassHook", "add1 been hooked"); Log.e("TestClassHook", "add1 been hooked");
try { try {
......
...@@ -2,6 +2,7 @@ package com.swift.sandhook.testHookers; ...@@ -2,6 +2,7 @@ package com.swift.sandhook.testHookers;
import android.util.Log; import android.util.Log;
import com.swift.sandhook.annotation.HookMode;
import com.swift.sandhook.test.TestClass; import com.swift.sandhook.test.TestClass;
import com.swift.sandhook.annotation.HookClass; import com.swift.sandhook.annotation.HookClass;
import com.swift.sandhook.annotation.HookMethod; import com.swift.sandhook.annotation.HookMethod;
...@@ -11,6 +12,7 @@ import com.swift.sandhook.annotation.HookMethodBackup; ...@@ -11,6 +12,7 @@ import com.swift.sandhook.annotation.HookMethodBackup;
public class JniHooker { public class JniHooker {
@HookMethod("jni_test") @HookMethod("jni_test")
@HookMode(HookMode.INLINE)
public static int onJni(TestClass thiz) { public static int onJni(TestClass thiz) {
Log.e("JniHooker", "hooked success "); Log.e("JniHooker", "hooked success ");
return onJniBackup(thiz); return onJniBackup(thiz);
......
...@@ -5,6 +5,7 @@ import android.util.Log; ...@@ -5,6 +5,7 @@ import android.util.Log;
import com.swift.sandhook.annotation.HookClass; import com.swift.sandhook.annotation.HookClass;
import com.swift.sandhook.annotation.HookMethod; import com.swift.sandhook.annotation.HookMethod;
import com.swift.sandhook.annotation.HookMethodBackup; import com.swift.sandhook.annotation.HookMethodBackup;
import com.swift.sandhook.annotation.HookMode;
import com.swift.sandhook.annotation.MethodParams; import com.swift.sandhook.annotation.MethodParams;
@HookClass(Log.class) @HookClass(Log.class)
...@@ -12,6 +13,7 @@ public class LogHooker { ...@@ -12,6 +13,7 @@ public class LogHooker {
@HookMethod("w") @HookMethod("w")
@MethodParams({String.class, String.class}) @MethodParams({String.class, String.class})
@HookMode(HookMode.INLINE)
public static int onCreate(String tag, String msg) { public static int onCreate(String tag, String msg) {
Log.e("LogHooker", "hooked success " + tag); Log.e("LogHooker", "hooked success " + tag);
return onCreateBackup(tag, msg); return onCreateBackup(tag, msg);
......
...@@ -5,11 +5,13 @@ import android.util.Log; ...@@ -5,11 +5,13 @@ import android.util.Log;
import com.swift.sandhook.annotation.HookClass; import com.swift.sandhook.annotation.HookClass;
import com.swift.sandhook.annotation.HookMethod; import com.swift.sandhook.annotation.HookMethod;
import com.swift.sandhook.annotation.HookMethodBackup; import com.swift.sandhook.annotation.HookMethodBackup;
import com.swift.sandhook.annotation.HookMode;
@HookClass(Object.class) @HookClass(Object.class)
public class ObjectHooker { public class ObjectHooker {
@HookMethod("toString") @HookMethod("toString")
@HookMode(HookMode.INLINE)
public static String toStr(Object thiz) { public static String toStr(Object thiz) {
Log.e("ObjectHooker", "hooked success "); Log.e("ObjectHooker", "hooked success ");
return toStrBackup(thiz); return toStrBackup(thiz);
......
...@@ -41,7 +41,9 @@ public class HookWrapper { ...@@ -41,7 +41,9 @@ public class HookWrapper {
fillBackupMethod(classLoader, clazz, hookEntityMap); fillBackupMethod(classLoader, clazz, hookEntityMap);
for (HookEntity entity:hookEntityMap.values()) { for (HookEntity entity:hookEntityMap.values()) {
if (entity.target != null && entity.hook != null) { if (entity.target != null && entity.hook != null) {
SandHook.hook(entity.target, entity.hook, entity.backup); if (!SandHook.hook(entity.target, entity.hook, entity.backup)) {
throw new HookErrorException("hook method <" + entity.target.getName() + "> error in native!");
}
globalHookEntityMap.put(entity.target, entity); globalHookEntityMap.put(entity.target, entity);
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment