From 22f7ddddfb02fd6cce42c710031f5b94c782893f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=81=8D=E5=85=AE=E6=83=9A=E5=85=AE?= <101191390+HIllya51@users.noreply.github.com> Date: Tue, 2 Apr 2024 11:51:55 +0800 Subject: [PATCH] Update hookfinder.cc Update hookfinder.cc 1 Update hookfinder.cc Update hookfinder.cc Update hookfinder.cc Update hookfinder.cc --- LunaHook/engine64/yuzusuyu.cpp | 3 +++ LunaHook/engines/ppsspp/ppsspp.cpp | 3 +++ LunaHook/hookfinder.cc | 18 ++++++++++++------ include/types.h | 1 + 4 files changed, 19 insertions(+), 6 deletions(-) diff --git a/LunaHook/engine64/yuzusuyu.cpp b/LunaHook/engine64/yuzusuyu.cpp index 109d04d..720de18 100644 --- a/LunaHook/engine64/yuzusuyu.cpp +++ b/LunaHook/engine64/yuzusuyu.cpp @@ -150,6 +150,9 @@ bool yuzusuyu::attach_function() ConsoleOutput("[Compatibility] Yuzu 1616+"); auto DoJitPtr=getDoJitAddress(); if(DoJitPtr==0)return false; + spDefault.jittype=JITTYPE::YUZU; + spDefault.minAddress = 0; + spDefault.maxAddress = -1; ConsoleOutput("DoJitPtr %p",DoJitPtr); HookParam hp; hp.address=DoJitPtr; diff --git a/LunaHook/engines/ppsspp/ppsspp.cpp b/LunaHook/engines/ppsspp/ppsspp.cpp index 9c1d732..bb9fc6f 100644 --- a/LunaHook/engines/ppsspp/ppsspp.cpp +++ b/LunaHook/engines/ppsspp/ppsspp.cpp @@ -280,6 +280,9 @@ std::unordered_setbreakpoints; bool hookPPSSPPDoJit(){ auto DoJitPtr=getDoJitAddress(); if(DoJitPtr==0)return false; + spDefault.jittype=JITTYPE::PPSSPP; + spDefault.minAddress = 0; + spDefault.maxAddress = -1; HookParam hp; hp.address=DoJitPtr;//Jit::DoJit ConsoleOutput("DoJitPtr %p",DoJitPtr); diff --git a/LunaHook/hookfinder.cc b/LunaHook/hookfinder.cc index ed92502..e7f34be 100644 --- a/LunaHook/hookfinder.cc +++ b/LunaHook/hookfinder.cc @@ -295,7 +295,7 @@ void SearchForHooks(SearchParam spUser) initrecords(); std::vector addresses; - if(jitaddr2emuaddr.empty() || spUser.length !=0) + if( sp.jittype==JITTYPE::PC) { if (*sp.boundaryModule) { auto [minaddr,maxaddr]=Util::QueryModuleLimits(GetModuleHandleW(sp.boundaryModule)); @@ -385,21 +385,27 @@ void SearchForHooks(SearchParam spUser) else { safeautoleaveveh=false; - ConsoleOutput(HOOK_SEARCH_INITIALIZED, jitaddr2emuaddr.size()); + int i=0; + std::vectorsuccessaddr; uintptr_t minemaddr=-1,maxemaddr=0; + + ConsoleOutput(HOOK_SEARCH_INITIALIZED, jitaddr2emuaddr.size()); + for(auto addr:jitaddr2emuaddr){ - minemaddr=min(minemaddr,addr.first); - maxemaddr=max(maxemaddr,addr.first); + minemaddr=min(minemaddr,addr.second.second); + maxemaddr=max(maxemaddr,addr.second.second); } - ConsoleOutput("%p %p",minemaddr); - std::vectorsuccessaddr;int i=0; + ConsoleOutput("%p %p",minemaddr,maxemaddr); + ConsoleOutput("%p %p",sp.minAddress,sp.maxAddress); for(auto addr:jitaddr2emuaddr){ + if(addr.second.second>sp.maxAddress||addr.second.second