Commit ae558836 authored by swift_gan's avatar swift_gan

fix check logic on android p 32bit

parent 60422367
......@@ -165,9 +165,7 @@ Java_com_swift_sandhook_SandHook_hookMethod(JNIEnv *env, jclass type, jobject or
}
if (SDK_INT >= ANDROID_P && BYTE_POINT == 4) {
isInlineHook = false;
} else if (origin->isAbstract()) {
if (origin->isAbstract()) {
isInlineHook = false;
} else if (!origin->isCompiled()) {
if (SDK_INT >= ANDROID_N) {
......
......@@ -6,6 +6,7 @@
#include "../includes/inst.h"
extern int SDK_INT;
#define SWITCH_SETX0 false
namespace SandHook {
......@@ -25,7 +26,7 @@ namespace SandHook {
public:
bool pcRelated = false;
bool instWillBeDestroy = false;
bool canSafeBackup = true;
int instSize = 0;
......@@ -39,7 +40,7 @@ namespace SandHook {
}
if (instSize > SIZE_DIRECT_JUMP_TRAMPOLINE) {
instWillBeDestroy = true;
canSafeBackup = false;
}
return true;
......@@ -55,12 +56,12 @@ namespace SandHook {
}
}
//check pc relate inst
//check pc relate inst & backup inst len
PCRelatedCheckVisitor visitor;
InstDecode::decode(method->getQuickCodeEntry(), SIZE_DIRECT_JUMP_TRAMPOLINE, &visitor);
return (!visitor.pcRelated) && (!visitor.instWillBeDestroy);
return (!visitor.pcRelated) && visitor.canSafeBackup;
}
Code TrampolineManager::allocExecuteSpace(Size size) {
......@@ -114,7 +115,7 @@ namespace SandHook {
replacementHookTrampoline->setHookMethod(reinterpret_cast<Code>(hookMethod));
hookTrampoline->replacement = replacementHookTrampoline;
if (backupMethod != nullptr) {
if (SWITCH_SETX0 && backupMethod != nullptr) {
callOriginTrampoline = new CallOriginTrampoline();
checkThumbCode(callOriginTrampoline, getEntryCode(originMethod));
callOriginTrampoline->init();
......
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