mirror of
https://github.com/ApfelTeeSaft/Perfectium.git
synced 2026-08-26 19:33:36 +00:00
fix debug, only log stuff on debug builds
This commit is contained in:
@@ -4,6 +4,9 @@ setlocal EnableDelayedExpansion
|
||||
set CONFIG=%1
|
||||
if "%CONFIG%"=="" set CONFIG=Release
|
||||
|
||||
if "%CONFIG:~0,1%"=="/" set CONFIG=%CONFIG:~1%
|
||||
if "%CONFIG:~0,1%"=="-" set CONFIG=%CONFIG:~1%
|
||||
|
||||
if defined VCINSTALLDIR goto :env_ready
|
||||
set "VSWHERE=%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe"
|
||||
if not exist "%VSWHERE%" set "VSWHERE=%ProgramFiles%\Microsoft Visual Studio\Installer\vswhere.exe"
|
||||
|
||||
@@ -0,0 +1,33 @@
|
||||
IFDEF DEBUG
|
||||
|
||||
EXTERNDEF Logger_LogInfo :PROC
|
||||
EXTERNDEF Logger_LogWarn :PROC
|
||||
EXTERNDEF Logger_LogError :PROC
|
||||
|
||||
LOG_DBG MACRO sym
|
||||
lea rcx, sym
|
||||
call Logger_LogInfo
|
||||
ENDM
|
||||
|
||||
LOG_WARN MACRO sym
|
||||
lea rcx, sym
|
||||
call Logger_LogWarn
|
||||
ENDM
|
||||
|
||||
LOG_ERR MACRO sym
|
||||
lea rcx, sym
|
||||
call Logger_LogError
|
||||
ENDM
|
||||
|
||||
ELSE ; Release - all macros are empty
|
||||
|
||||
LOG_DBG MACRO sym
|
||||
ENDM
|
||||
|
||||
LOG_WARN MACRO sym
|
||||
ENDM
|
||||
|
||||
LOG_ERR MACRO sym
|
||||
ENDM
|
||||
|
||||
ENDIF
|
||||
+2
-1
@@ -1,4 +1,5 @@
|
||||
INCLUDE include\enums.inc
|
||||
INCLUDE include\macros.inc
|
||||
INCLUDE include\structs.inc
|
||||
INCLUDE include\externs.inc
|
||||
INCLUDE include\externs.inc
|
||||
INCLUDE include\debug.inc
|
||||
+42
-7
@@ -1,5 +1,7 @@
|
||||
INCLUDE include\master.inc
|
||||
|
||||
IFDEF DEBUG
|
||||
|
||||
EXTRN printf :PROC
|
||||
EXTRN GetLocalTime :PROC
|
||||
EXTRN GetModuleFileNameA :PROC
|
||||
@@ -27,7 +29,6 @@ szFmtInfo DB "[INFO] [%02d:%02d:%02d.%03d] %s", 0Ah, 0
|
||||
szFmtWarn DB "[WARN] [%02d:%02d:%02d.%03d] %s", 0Ah, 0
|
||||
szFmtError DB "[ERROR] [%02d:%02d:%02d.%03d] %s", 0Ah, 0
|
||||
szFmtFatal DB "[FATAL] [%02d:%02d:%02d.%03d] %s", 0Ah, 0
|
||||
szLogPath DB "C:\raider_debug.txt", 0
|
||||
|
||||
.data?
|
||||
|
||||
@@ -40,7 +41,7 @@ Logger_hFile QWORD ?
|
||||
; GetModuleFileNameA(NULL,...)) and appending "raider_debug.txt",
|
||||
; then opens that file with CREATE_ALWAYS. Using the EXE directory
|
||||
;
|
||||
; Frame: 0 pushes + sub 148h = 328; 328 mod 16 = 8; RSP = 0
|
||||
; Frame: 0 pushes + sub 148h = 328; 328 mod 16 = 8; RSP = 0
|
||||
; [rsp+000..+01F] shadow (32)
|
||||
; [rsp+020..+027] CreateFileA 5th arg: dwCreationDisposition
|
||||
; [rsp+028..+02F] CreateFileA 6th arg: dwFlagsAndAttributes
|
||||
@@ -129,7 +130,7 @@ Logger_Shutdown ENDP
|
||||
|
||||
; Logger__Print (internal)
|
||||
; Writes a timestamped log line to the console (printf) and,
|
||||
; if the file handle is valid, also to C:\raider_debug.txt with
|
||||
; if the file handle is valid, also to raider_debug.txt with
|
||||
; an immediate FlushFileBuffers so no data is lost on crash.
|
||||
;
|
||||
; In: RCX = format string* (one of szFmtInfo/Warn/Error/Fatal)
|
||||
@@ -153,11 +154,11 @@ Logger__Print PROC
|
||||
mov QWORD PTR [rsp+40h], rdx ; save msg*
|
||||
mov QWORD PTR [rsp+48h], rcx ; save fmt*
|
||||
|
||||
; ---- GetLocalTime ----
|
||||
; GetLocalTime
|
||||
lea rcx, [rsp+30h]
|
||||
call GetLocalTime
|
||||
|
||||
; ---- Console: printf(fmt, H, M, S, ms, msg) ----
|
||||
; Console: printf(fmt, H, M, S, ms, msg)
|
||||
mov rcx, QWORD PTR [rsp+48h]
|
||||
movzx edx, WORD PTR [rsp+30h + ST_wHour]
|
||||
movzx r8d, WORD PTR [rsp+30h + ST_wMinute]
|
||||
@@ -168,7 +169,7 @@ Logger__Print PROC
|
||||
mov QWORD PTR [rsp+28h], rax ; 6th arg: msg*
|
||||
call printf
|
||||
|
||||
; ---- File: skip if handle invalid ----
|
||||
; File: skip if handle invalid
|
||||
mov rcx, QWORD PTR [Logger_hFile]
|
||||
test rcx, rcx
|
||||
jz @@skip_file
|
||||
@@ -251,7 +252,7 @@ Logger_LogFatal ENDP
|
||||
|
||||
; Logger_LogInfoFmt(RCX=fmt*, RDX/R8/R9/stack=args)
|
||||
; Console-only printf passthrough (variadic - can't redirect to file).
|
||||
; Frame: 0 pushes + sub 28h; RSP = 0
|
||||
; Frame: 0 pushes + sub 28h; RSP = 0
|
||||
Logger_LogInfoFmt PROC
|
||||
sub rsp, 28h
|
||||
call printf
|
||||
@@ -259,4 +260,38 @@ Logger_LogInfoFmt PROC
|
||||
ret
|
||||
Logger_LogInfoFmt ENDP
|
||||
|
||||
ELSE ; Release build - all logger functions are single-instruction stubs
|
||||
|
||||
.code
|
||||
|
||||
Logger_Initialize PROC
|
||||
ret
|
||||
Logger_Initialize ENDP
|
||||
|
||||
Logger_Shutdown PROC
|
||||
ret
|
||||
Logger_Shutdown ENDP
|
||||
|
||||
Logger_LogInfo PROC
|
||||
ret
|
||||
Logger_LogInfo ENDP
|
||||
|
||||
Logger_LogWarn PROC
|
||||
ret
|
||||
Logger_LogWarn ENDP
|
||||
|
||||
Logger_LogError PROC
|
||||
ret
|
||||
Logger_LogError ENDP
|
||||
|
||||
Logger_LogFatal PROC
|
||||
ret
|
||||
Logger_LogFatal ENDP
|
||||
|
||||
Logger_LogInfoFmt PROC
|
||||
ret
|
||||
Logger_LogInfoFmt ENDP
|
||||
|
||||
ENDIF
|
||||
|
||||
END
|
||||
+32
-7
@@ -14,6 +14,15 @@ szNatErr_InitHost DB "[NATIVE] OnlineBeaconHost::InitHost not found", 0
|
||||
szNatErr_ProcessEvent DB "[NATIVE] ProcessEvent vtable resolve failed (null engine)", 0
|
||||
szNatOk DB "[NATIVE] InitializeAll complete", 0
|
||||
|
||||
IFDEF DEBUG
|
||||
szNatDbg_Start DB "[NATIVE] InitializeAll starting", 0
|
||||
szNatDbg_FNameToString DB "[NATIVE] FNameToString found", 0
|
||||
szNatDbg_GObjects DB "[NATIVE] GObjects found", 0
|
||||
szNatDbg_Malloc DB "[NATIVE] FMemory::Malloc found", 0
|
||||
szNatDbg_TickFlush DB "[NATIVE] NetDriver::TickFlush found", 0
|
||||
szNatDbg_ProcessEvent DB "[NATIVE] ProcessEvent resolved", 0
|
||||
ENDIF
|
||||
|
||||
.code
|
||||
|
||||
; Native_InitializeAll()
|
||||
@@ -22,9 +31,11 @@ szNatOk DB "[NATIVE] InitializeAll complete", 0
|
||||
Native_InitializeAll PROC
|
||||
push rbp
|
||||
push rbx
|
||||
sub rsp, 40 ; shadow space; RSP = 0 mod 16 at all CALLs
|
||||
sub rsp, 40 ; shadow space; RSP ≡ 0 mod 16 at all CALLs
|
||||
|
||||
xor ecx, ecx ; lpModuleName = NULL -> returns base of .exe
|
||||
LOG_DBG szNatDbg_Start
|
||||
|
||||
xor ecx, ecx ; lpModuleName = NULL → returns base of .exe
|
||||
call GetModuleHandleA
|
||||
mov QWORD PTR [Imagebase], rax
|
||||
|
||||
@@ -35,7 +46,10 @@ Native_InitializeAll PROC
|
||||
call Utils_FindPattern
|
||||
mov QWORD PTR [FNameToString], rax
|
||||
test rax, rax
|
||||
jnz @@ok_FNameToString
|
||||
jz @@err_FNameToString
|
||||
LOG_DBG szNatDbg_FNameToString
|
||||
jmp @@ok_FNameToString
|
||||
@@err_FNameToString:
|
||||
lea rcx, szNatErr_FNameToString
|
||||
call Logger_LogError
|
||||
@@ok_FNameToString:
|
||||
@@ -47,7 +61,10 @@ Native_InitializeAll PROC
|
||||
call Utils_FindPattern
|
||||
mov QWORD PTR [GObjects], rax
|
||||
test rax, rax
|
||||
jnz @@ok_GObjects
|
||||
jz @@err_GObjects
|
||||
LOG_DBG szNatDbg_GObjects
|
||||
jmp @@ok_GObjects
|
||||
@@err_GObjects:
|
||||
lea rcx, szNatErr_GObjects
|
||||
call Logger_LogError
|
||||
@@ok_GObjects:
|
||||
@@ -59,7 +76,10 @@ Native_InitializeAll PROC
|
||||
call Utils_FindPattern
|
||||
mov QWORD PTR [FMemory_Malloc], rax
|
||||
test rax, rax
|
||||
jnz @@ok_Malloc
|
||||
jz @@err_Malloc
|
||||
LOG_DBG szNatDbg_Malloc
|
||||
jmp @@ok_Malloc
|
||||
@@err_Malloc:
|
||||
lea rcx, szNatErr_Malloc
|
||||
call Logger_LogError
|
||||
@@ok_Malloc:
|
||||
@@ -95,7 +115,10 @@ Native_InitializeAll PROC
|
||||
call Utils_FindPattern
|
||||
mov QWORD PTR [Native_NetDriver_TickFlush], rax
|
||||
test rax, rax
|
||||
jnz @@ok_TickFlush
|
||||
jz @@err_TickFlush
|
||||
LOG_DBG szNatDbg_TickFlush
|
||||
jmp @@ok_TickFlush
|
||||
@@err_TickFlush:
|
||||
lea rcx, szNatErr_TickFlush
|
||||
call Logger_LogError
|
||||
@@ok_TickFlush:
|
||||
@@ -127,7 +150,7 @@ Native_InitializeAll PROC
|
||||
xor r8d, r8d
|
||||
call Utils_FindPattern
|
||||
mov QWORD PTR [Native_OnlineBeacon_PauseBeaconRequests], rax
|
||||
; Also store in the host-specific slot - same function pointer
|
||||
; Also store in the host-specific slot — same function pointer
|
||||
mov QWORD PTR [Native_OnlineBeaconHost_PauseBeaconRequests], rax
|
||||
|
||||
; OnlineBeacon::NotifyAcceptingConnection (direct)
|
||||
@@ -273,6 +296,7 @@ Native_InitializeAll PROC
|
||||
mov rax, QWORD PTR [rax] ; load vtable pointer from engine object
|
||||
mov rax, QWORD PTR [rax + 200h] ; slot 0x40 (64 * 8 = 0x200)
|
||||
mov QWORD PTR [ProcessEvent], rax
|
||||
LOG_DBG szNatDbg_ProcessEvent
|
||||
jmp @@pe_done
|
||||
|
||||
@@err_PE:
|
||||
@@ -280,6 +304,7 @@ Native_InitializeAll PROC
|
||||
call Logger_LogError
|
||||
|
||||
@@pe_done:
|
||||
|
||||
lea rcx, szNatOk
|
||||
call Logger_LogInfo
|
||||
|
||||
|
||||
+20
@@ -10,6 +10,18 @@ szInitHooks DB "Initializing hooks!", 0
|
||||
szFailNetDebug DB "Failed to find NetDebug", 0
|
||||
szBaseAddrFmt DB "[INFO] Base Address: 0x%I64X", 0Ah, 0
|
||||
|
||||
IFDEF DEBUG
|
||||
szDbgUFHooks DB "[DEBUG] UFunctionHooks initialized", 0
|
||||
szDbgDetourBegin DB "[DEBUG] Detour transaction started", 0
|
||||
szDbgAtchTickFlush DB "[DEBUG] Attached Hooks_TickFlush", 0
|
||||
szDbgAtchSpawnPA DB "[DEBUG] Attached Hooks_LocalPlayerSpawnPlayActor", 0
|
||||
szDbgAtchNetDebug DB "[DEBUG] Attached Hooks_NetDebug", 0
|
||||
szDbgAtchProcEvent DB "[DEBUG] Attached Hooks_ProcessEventHook", 0
|
||||
szDbgAtchViewPt DB "[DEBUG] Attached Hooks_GetPlayerViewPoint", 0
|
||||
szDbgDetourCommit DB "[DEBUG] Detours transaction committed", 0
|
||||
szDbgConsoleCreated DB "[DEBUG] SDK console created", 0
|
||||
ENDIF
|
||||
|
||||
.data
|
||||
|
||||
|
||||
@@ -45,8 +57,10 @@ Main PROC
|
||||
call Native_InitializeAll
|
||||
|
||||
call UFunctionHooks_Initialize
|
||||
LOG_DBG szDbgUFHooks
|
||||
|
||||
call DetourTransactionBegin
|
||||
LOG_DBG szDbgDetourBegin
|
||||
|
||||
call GetCurrentThread
|
||||
mov rcx, rax
|
||||
@@ -55,10 +69,12 @@ Main PROC
|
||||
lea rcx, Native_NetDriver_TickFlush
|
||||
lea rdx, Hooks_TickFlush
|
||||
call DetourAttach
|
||||
LOG_DBG szDbgAtchTickFlush
|
||||
|
||||
lea rcx, Native_LocalPlayer_SpawnPlayActor
|
||||
lea rdx, Hooks_LocalPlayerSpawnPlayActor
|
||||
call DetourAttach
|
||||
LOG_DBG szDbgAtchSpawnPA
|
||||
|
||||
lea rcx, Pat_NetDebug
|
||||
xor edx, edx ; bRelative = false
|
||||
@@ -80,6 +96,7 @@ Main PROC
|
||||
lea rcx, QWORD PTR [rbp - 8]
|
||||
lea rdx, Hooks_NetDebug
|
||||
call DetourAttach
|
||||
LOG_DBG szDbgAtchNetDebug
|
||||
|
||||
lea rcx, ProcessEvent
|
||||
lea rdx, Hooks_ProcessEventHook
|
||||
@@ -88,14 +105,17 @@ Main PROC
|
||||
lea rcx, Native_PlayerController_GetPlayerViewPoint
|
||||
lea rdx, Hooks_GetPlayerViewPoint
|
||||
call DetourAttach
|
||||
LOG_DBG szDbgAtchViewPt
|
||||
|
||||
call DetourTransactionCommit
|
||||
LOG_DBG szDbgDetourCommit
|
||||
|
||||
lea rcx, szBaseAddrFmt
|
||||
mov rdx, QWORD PTR [Imagebase]
|
||||
call printf
|
||||
|
||||
call SDK_CreateConsole
|
||||
LOG_DBG szDbgConsoleCreated
|
||||
|
||||
xor eax, eax ; return 0 (DWORD thread exit code)
|
||||
|
||||
|
||||
+5
-1
@@ -96,8 +96,11 @@ szFn_OnRep_DeathInfo DB "Function FortniteGame.FortPlayerStateAth
|
||||
|
||||
szHookCount DB "[UFHOOKS] Registered %d UFunction hooks", 0Ah, 0
|
||||
|
||||
.code
|
||||
IFDEF DEBUG
|
||||
szUFDbg_Start DB "[UFHOOKS] Starting UFunction hook registration", 0
|
||||
ENDIF
|
||||
|
||||
.code
|
||||
|
||||
PEHOOK_CheatScript PROC
|
||||
xor al, al ; return 0
|
||||
@@ -1314,6 +1317,7 @@ UFunctionHooks_Initialize PROC
|
||||
push r12
|
||||
sub rsp, 40 ; 5 pushes: RSP=8; sub40 -> 0
|
||||
|
||||
LOG_DBG szUFDbg_Start
|
||||
; Set public pointers to internal storage
|
||||
lea rax, _ToHook_Storage
|
||||
mov QWORD PTR [UFunctionHooks_ToHook_Data], rax
|
||||
|
||||
Reference in New Issue
Block a user