Commit e5e9b351 authored by swift_gan's avatar swift_gan

fix 5.1, jni need fix

parent 6cb22ff5
...@@ -2,6 +2,7 @@ package com.swift.sandhook; ...@@ -2,6 +2,7 @@ package com.swift.sandhook;
import android.app.Application; import android.app.Application;
import com.swift.sandhook.testHookers.AbsHooker;
import com.swift.sandhook.testHookers.ActivityHooker; import com.swift.sandhook.testHookers.ActivityHooker;
import com.swift.sandhook.testHookers.CtrHook; import com.swift.sandhook.testHookers.CtrHook;
import com.swift.sandhook.testHookers.CustmizeHooker; import com.swift.sandhook.testHookers.CustmizeHooker;
...@@ -15,11 +16,13 @@ public class MyApp extends Application { ...@@ -15,11 +16,13 @@ public class MyApp extends Application {
public void onCreate() { public void onCreate() {
super.onCreate(); super.onCreate();
try { try {
SandHook.addHookClass(JniHooker.class,CtrHook.class, SandHook.addHookClass(JniHooker.class,
CtrHook.class,
LogHooker.class, LogHooker.class,
CustmizeHooker.class, CustmizeHooker.class,
ActivityHooker.class, ActivityHooker.class,
ObjectHooker.class); ObjectHooker.class,
AbsHooker.class);
} catch (HookErrorException e) { } catch (HookErrorException e) {
e.printStackTrace(); e.printStackTrace();
} }
......
package com.swift.sandhook.testHookers;
import android.util.Log;
import com.swift.sandhook.wrapper.HookClass;
import com.swift.sandhook.wrapper.HookMethod;
import com.swift.sandhook.wrapper.HookMethodBackup;
@HookClass(Runnable.class)
public class AbsHooker {
@HookMethod("run")
public static void onRun(Object thiz) {
Log.e("AbsHooker", "Runnable hook success ");
onRunBackup(thiz);
}
@HookMethodBackup("run")
public static void onRunBackup(Object thiz) {
onRunBackup(thiz);
}
}
...@@ -9,12 +9,11 @@ ...@@ -9,12 +9,11 @@
FUNCTION_START(REPLACEMENT_HOOK_TRAMPOLINE) FUNCTION_START(REPLACEMENT_HOOK_TRAMPOLINE)
ldr RegMethod, addr_art_method ldr RegMethod, addr_art_method
ldr Reg0, offset_entry_code ldr Reg0, addr_code_entry
add Reg0, RegMethod, Reg0
ldr pc, [Reg0] ldr pc, [Reg0]
addr_art_method: addr_art_method:
.long 0 .long 0
offset_entry_code: addr_code_entry:
.long 0 .long 0
FUNCTION_END(REPLACEMENT_HOOK_TRAMPOLINE) FUNCTION_END(REPLACEMENT_HOOK_TRAMPOLINE)
...@@ -29,34 +28,34 @@ FUNCTION_END(DIRECT_JUMP_TRAMPOLINE) ...@@ -29,34 +28,34 @@ FUNCTION_END(DIRECT_JUMP_TRAMPOLINE)
FUNCTION_START(INLINE_HOOK_TRAMPOLINE) FUNCTION_START(INLINE_HOOK_TRAMPOLINE)
ldr Reg0, addr_origin_art_method ldr Reg0, origin_art_method
cmp RegMethod, Reg0 cmp RegMethod, Reg0
bne origin_code bne origin_code
ldr RegMethod, addr_hook_art_method ldr RegMethod, hook_art_method
ldr Reg0, offset_entry_code2 ldr Reg0, addr_hook_code_entry
add Reg0, RegMethod, Reg0
ldr pc, [Reg0] ldr pc, [Reg0]
origin_code: origin_code:
.long 0 .long 0
.long 0 .long 0
ldr Reg0, addr_origin_art_method ldr Reg0, addr_origin_code_entry
add Reg0, Reg0, #8
ldr Reg0, [Reg0] ldr Reg0, [Reg0]
add Reg0, Reg0, SIZE_JUMP add Reg0, Reg0, SIZE_JUMP
mov pc, Reg0 mov pc, Reg0
addr_origin_art_method: origin_art_method:
.long 0
addr_origin_code_entry:
.long 0 .long 0
offset_entry_code2: hook_art_method:
.long 0 .long 0
addr_hook_art_method: addr_hook_code_entry:
.long 0 .long 0
FUNCTION_END(INLINE_HOOK_TRAMPOLINE) FUNCTION_END(INLINE_HOOK_TRAMPOLINE)
FUNCTION_START(CALL_ORIGIN_TRAMPOLINE) FUNCTION_START(CALL_ORIGIN_TRAMPOLINE)
ldr RegMethod, origin_art_method ldr RegMethod, origin_method
ldr pc, addr_origin ldr pc, addr_origin
origin_art_method: origin_method:
.long 0 .long 0
addr_origin: addr_origin:
.long 0 .long 0
...@@ -72,7 +71,7 @@ FUNCTION_END(DIRECT_JUMP_TRAMPOLINE_T) ...@@ -72,7 +71,7 @@ FUNCTION_END(DIRECT_JUMP_TRAMPOLINE_T)
FUNCTION_START_T(INLINE_HOOK_TRAMPOLINE_T) FUNCTION_START_T(INLINE_HOOK_TRAMPOLINE_T)
//4 byte //4 byte
ldr RegT, addr_origin_art_method_t ldr RegT, origin_art_method_t
//2 byte //2 byte
cmp RegMethod, RegT cmp RegMethod, RegT
nop nop
...@@ -80,12 +79,9 @@ FUNCTION_START_T(INLINE_HOOK_TRAMPOLINE_T) ...@@ -80,12 +79,9 @@ FUNCTION_START_T(INLINE_HOOK_TRAMPOLINE_T)
bne origin_code_t bne origin_code_t
nop nop
//4 byte //4 byte
ldr RegMethod, addr_hook_art_method_t ldr RegMethod, hook_art_method_t
//4 byte //4 byte
ldr RegT, offset_entry_code2_t ldr RegT, addr_hook_code_entry_t
//2 byte
add RegT, RegMethod, RegT
nop
//4 byte //4 byte
ldr pc, [RegT] ldr pc, [RegT]
origin_code_t: origin_code_t:
...@@ -94,9 +90,7 @@ origin_code_t: ...@@ -94,9 +90,7 @@ origin_code_t:
//4 byte //4 byte
.long 0 .long 0
//4 byte //4 byte
ldr RegT, addr_origin_art_method_t ldr RegT, addr_origin_code_entry_t
//4 byte
add RegT, RegT, #36
//4 byte //4 byte
ldr RegT, [RegT] ldr RegT, [RegT]
//4 byte //4 byte
...@@ -104,18 +98,20 @@ origin_code_t: ...@@ -104,18 +98,20 @@ origin_code_t:
//2 byte //2 byte
mov pc, RegT mov pc, RegT
nop nop
addr_origin_art_method_t: origin_art_method_t:
.long 0 .long 0
offset_entry_code2_t: addr_origin_code_entry_t:
.long 0 .long 0
addr_hook_art_method_t: hook_art_method_t:
.long 0
addr_hook_code_entry_t:
.long 0 .long 0
FUNCTION_END(INLINE_HOOK_TRAMPOLINE_T) FUNCTION_END(INLINE_HOOK_TRAMPOLINE_T)
FUNCTION_START_T(CALL_ORIGIN_TRAMPOLINE_T) FUNCTION_START_T(CALL_ORIGIN_TRAMPOLINE_T)
ldr RegMethod, origin_art_method_t ldr RegMethod, origin_method_t
ldr pc, addr_origin_t ldr pc, addr_origin_t
origin_art_method_t: origin_method_t:
.long 0 .long 0
addr_origin_t: addr_origin_t:
.long 0 .long 0
......
...@@ -41,20 +41,20 @@ ...@@ -41,20 +41,20 @@
#define OFFSET_INLINE_OFFSET_ENTRY_CODE 4 * 20 #define OFFSET_INLINE_OFFSET_ENTRY_CODE 4 * 20
#define OFFSET_INLINE_ADDR_HOOK_METHOD 4 * 22 #define OFFSET_INLINE_ADDR_HOOK_METHOD 4 * 22
#elif defined(__arm__) #elif defined(__arm__)
#define SIZE_REPLACEMENT_HOOK_TRAMPOLINE 4 * 6 #define SIZE_REPLACEMENT_HOOK_TRAMPOLINE 4 * 5
#define OFFSET_REPLACEMENT_ADDR_ART_METHOD 4 * 4 #define OFFSET_REPLACEMENT_ART_METHOD 4 * 3
#define OFFSET_REPLACEMENT_OFFSET_ENTRY_CODE 4 * 5 #define OFFSET_REPLACEMENT_OFFSET_CODE_ENTRY 4 * 4
#define SIZE_DIRECT_JUMP_TRAMPOLINE 4 * 2 #define SIZE_DIRECT_JUMP_TRAMPOLINE 4 * 2
#define OFFSET_JUMP_ADDR_TARGET 4 * 1 #define OFFSET_JUMP_ADDR_TARGET 4 * 1
#define SIZE_INLINE_HOOK_TRAMPOLINE 4 * 17 #define SIZE_INLINE_HOOK_TRAMPOLINE 4 * 16
#define OFFSET_INLINE_ORIGIN_CODE 4 * 7 #define OFFSET_INLINE_ORIGIN_CODE 4 * 6
#define OFFSET_INLINE_OP_OFFSET_CODE 4 * 10 #define OFFSET_INLINE_ORIGIN_ART_METHOD 4 * 12
#define OFFSET_INLINE_OP_ORIGIN_OFFSET_CODE 4 * 12 #define OFFSET_INLINE_ADDR_ORIGIN_CODE_ENTRY 4 * 13
#define OFFSET_INLINE_ADDR_ORIGIN_METHOD 4 * 14 #define OFFSET_INLINE_HOOK_ART_METHOD 4 * 14
#define OFFSET_INLINE_OFFSET_ENTRY_CODE 4 * 15 #define OFFSET_INLINE_ADDR_HOOK_CODE_ENTRY 4 * 15
#define OFFSET_INLINE_ADDR_HOOK_METHOD 4 * 16 #define OFFSET_INLINE_OP_ORIGIN_OFFSET_CODE 4 * 10
#define SIZE_CALL_ORIGIN_TRAMPOLINE 4 * 4 #define SIZE_CALL_ORIGIN_TRAMPOLINE 4 * 4
#define OFFSET_CALL_ORIGIN_ART_METHOD 4 * 2 #define OFFSET_CALL_ORIGIN_ART_METHOD 4 * 2
......
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