Commit 5eb40da3 authored by swift_gan's avatar swift_gan

fix param parser of internal stub

parent a9debfed
...@@ -41,13 +41,16 @@ public class HookMethodEntity { ...@@ -41,13 +41,16 @@ public class HookMethodEntity {
public long[] getArgsAddress(long[] oldAddress, Object... args) { public long[] getArgsAddress(long[] oldAddress, Object... args) {
if (oldAddress == null || oldAddress.length == 0) if (oldAddress == null || oldAddress.length == 0)
return new long[0]; return new long[0];
long[] addresses = new long[oldAddress.length]; long[] addresses;
int argStart = 0; int argStart = 0;
if (!isStatic()) { if (!isStatic()) {
argStart = 1; argStart = 1;
addresses = new long[oldAddress.length + 1];
addresses[0] = oldAddress[0]; addresses[0] = oldAddress[0];
} else {
addresses = new long[oldAddress.length];
} }
for (int i = argStart;i < parType.length + argStart;i++) { for (int i = 0;i < parType.length;i++) {
addresses[i + argStart] = ParamWrapper.objectToAddress(parType[i], args[i]); addresses[i + argStart] = ParamWrapper.objectToAddress(parType[i], args[i]);
} }
return addresses; return addresses;
......
...@@ -3,6 +3,7 @@ package com.swift.sandhook.xposedcompat.hookstub; ...@@ -3,6 +3,7 @@ package com.swift.sandhook.xposedcompat.hookstub;
import com.swift.sandhook.SandHook; import com.swift.sandhook.SandHook;
import com.swift.sandhook.SandHookMethodResolver; import com.swift.sandhook.SandHookMethodResolver;
import com.swift.sandhook.utils.ParamWrapper; import com.swift.sandhook.utils.ParamWrapper;
import com.swift.sandhook.xposedcompat.utils.DexLog;
import java.lang.reflect.Constructor; import java.lang.reflect.Constructor;
import java.lang.reflect.Member; import java.lang.reflect.Member;
...@@ -97,6 +98,7 @@ public class HookStubManager { ...@@ -97,6 +98,7 @@ public class HookStubManager {
if (tryCompileAndResolveCallOriginMethod(entity.backup, stubMethodInfo.args, stubMethodInfo.index)) { if (tryCompileAndResolveCallOriginMethod(entity.backup, stubMethodInfo.args, stubMethodInfo.index)) {
return entity; return entity;
} else { } else {
DexLog.w("internal stub <" + entity.hook.getName() + "> call origin compile failure, skip use internal stub");
return null; return null;
} }
} }
......
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