summaryrefslogtreecommitdiffstats
path: root/src/events.c
diff options
context:
space:
mode:
authorladevieq <ladevie.quentin@gmail.com>2026-07-12 23:26:58 +0200
committerladevieq <ladevie.quentin@gmail.com>2026-07-12 23:26:58 +0200
commitcee4c6d1c8cbf898d6aa9ad555d8dfcece4c7d96 (patch)
treea5c9710ca65e4bc1183d365a013d4494882e0eb3 /src/events.c
parent7b6964eb1bcf30a0ae7ed3391adce30565b262b4 (diff)
Fix runtime crashes due to loaded functions
Diffstat (limited to 'src/events.c')
-rw-r--r--src/events.c103
1 files changed, 2 insertions, 101 deletions
diff --git a/src/events.c b/src/events.c
index fd96966..8c0f8ad 100644
--- a/src/events.c
+++ b/src/events.c
@@ -1,5 +1,6 @@
#include "utils.h"
#include "pdb.h"
+#include "win_funcs.h"
// =======================
// ====== windows.h ======
@@ -23,94 +24,6 @@ typedef PTHREAD_START_ROUTINE LPTHREAD_START_ROUTINE;
#define EXCEPTION_MAXIMUM_PARAMETERS 15 // maximum number of exception parameters
-//
-// Exception record definition.
-//
-
-typedef struct _EXCEPTION_RECORD {
- u32 ExceptionCode;
- u32 ExceptionFlags;
- struct _EXCEPTION_RECORD *ExceptionRecord;
- void* ExceptionAddress;
- u32 NumberParameters;
- u64* ExceptionInformation[EXCEPTION_MAXIMUM_PARAMETERS];
- } EXCEPTION_RECORD;
-
-typedef EXCEPTION_RECORD *PEXCEPTION_RECORD;
-
-typedef struct _EXCEPTION_DEBUG_INFO {
- EXCEPTION_RECORD ExceptionRecord;
- u32 dwFirstChance;
-} EXCEPTION_DEBUG_INFO, *LPEXCEPTION_DEBUG_INFO;
-
-typedef struct _CREATE_THREAD_DEBUG_INFO {
- void* hThread;
- void* lpThreadLocalBase;
- LPTHREAD_START_ROUTINE lpStartAddress;
-} CREATE_THREAD_DEBUG_INFO, *LPCREATE_THREAD_DEBUG_INFO;
-
-typedef struct _CREATE_PROCESS_DEBUG_INFO {
- void* hFile;
- void* hProcess;
- void* hThread;
- void* lpBaseOfImage;
- u32 dwDebugInfoFileOffset;
- u32 nDebugInfoSize;
- void* lpThreadLocalBase;
- LPTHREAD_START_ROUTINE lpStartAddress;
- void* lpImageName;
- u16 fUnicode;
-} CREATE_PROCESS_DEBUG_INFO, *LPCREATE_PROCESS_DEBUG_INFO;
-
-typedef struct _EXIT_THREAD_DEBUG_INFO {
- u32 dwExitCode;
-} EXIT_THREAD_DEBUG_INFO, *LPEXIT_THREAD_DEBUG_INFO;
-
-typedef struct _EXIT_PROCESS_DEBUG_INFO {
- u32 dwExitCode;
-} EXIT_PROCESS_DEBUG_INFO, *LPEXIT_PROCESS_DEBUG_INFO;
-
-typedef struct _LOAD_DLL_DEBUG_INFO {
- void* hFile;
- void* lpBaseOfDll;
- u32 dwDebugInfoFileOffset;
- u32 nDebugInfoSize;
- void* lpImageName;
- u16 fUnicode;
-} LOAD_DLL_DEBUG_INFO, *LPLOAD_DLL_DEBUG_INFO;
-
-typedef struct _UNLOAD_DLL_DEBUG_INFO {
- void* lpBaseOfDll;
-} UNLOAD_DLL_DEBUG_INFO, *LPUNLOAD_DLL_DEBUG_INFO;
-
-typedef struct _OUTPUT_DEBUG_STRING_INFO {
- char* lpDebugStringData;
- u16 fUnicode;
- u16 nDebugStringLength;
-} OUTPUT_DEBUG_STRING_INFO, *LPOUTPUT_DEBUG_STRING_INFO;
-
-typedef struct _RIP_INFO {
- u32 dwError;
- u32 dwType;
-} RIP_INFO, *LPRIP_INFO;
-
-typedef struct _DEBUG_EVENT {
- u32 dwDebugEventCode;
- u32 dwProcessId;
- u32 dwThreadId;
- union {
- EXCEPTION_DEBUG_INFO Exception;
- CREATE_THREAD_DEBUG_INFO CreateThread;
- CREATE_PROCESS_DEBUG_INFO CreateProcessInfo;
- EXIT_THREAD_DEBUG_INFO ExitThread;
- EXIT_PROCESS_DEBUG_INFO ExitProcess;
- LOAD_DLL_DEBUG_INFO LoadDll;
- UNLOAD_DLL_DEBUG_INFO UnloadDll;
- OUTPUT_DEBUG_STRING_INFO DebugString;
- RIP_INFO RipInfo;
- } u;
-} DEBUG_EVENT, *LPDEBUG_EVENT;
-
#define FILE_NAME_NORMALIZED 0x0 //default
#define FILE_NAME_OPENED 0x8
@@ -261,8 +174,6 @@ typedef struct _IMAGE_DEBUG_DIRECTORY {
typedef struct _IMAGE_RUNTIME_FUNCTION_ENTRY RUNTIME_FUNCTION, *PRUNTIME_FUNCTION;
-extern u32 GetLastError(void);
-
//
// Code Page Default Values.
// Please Use Unicode, either UTF-16 (as in WCHAR) or UTF-8 (code page CP_ACP)
@@ -276,10 +187,6 @@ extern u32 GetLastError(void);
#define CP_UTF7 65000 // UTF-7 translation
#define CP_UTF8 65001 // UTF-8 translation
-extern i32 WideCharToMultiByte(u32 CodePage, u32 dwFlags, const u16* lpWideCharStr, i32 cchWideChar, i8* lpMultiByteStr, i32 cbMultiByte, i8* lpDefaultChar, i32* lpUsedDefaultChar);
-
-extern u32 GetFinalPathNameByHandleA(void* hFile, i8* lpszFilePath, u32 cchFilePath, u32 dwFlags);
-
#define PAGE_NOACCESS 0x01
#define PAGE_READONLY 0x02
#define PAGE_READWRITE 0x04
@@ -337,9 +244,6 @@ extern u32 GetFinalPathNameByHandleA(void* hFile, i8* lpszFilePath, u32 cchFileP
#define MEM_EXTENDED_PARAMETER_EC_CODE 0x00000040
#define MEM_EXTENDED_PARAMETER_NUMA_NODE_MANDATORY MINLONG64
-extern void* VirtualAlloc(void* lpAddress, size_t dwSize, u32 flAllocationType, u32 flProtect);
-extern i32 VirtualFree(void* lpAddress, size_t dwSize, u32 dwFreeType);
-
#define PROCESS_TERMINATE (0x0001)
#define PROCESS_CREATE_THREAD (0x0002)
#define PROCESS_SET_SESSIONID (0x0004)
@@ -355,9 +259,6 @@ extern i32 VirtualFree(void* lpAddress, size_t dwSize, u32 dwFreeType);
#define PROCESS_QUERY_LIMITED_INFORMATION (0x1000)
#define PROCESS_SET_LIMITED_INFORMATION (0x2000)
-extern void* OpenProcess(u32 dwDesiredAccess, i32 bInheritHandle, u32 dwProcessId);
-extern i32 TerminateProcess(void* hProcess, u32 uExitCode);
-
// ========================
// ====== !windows.h ======
// ========================
@@ -496,7 +397,7 @@ void load_symbols(const void* base_addr, struct module* module) {
assert(string_stack_current - 16U * 4096U < string_stack_base);
void* name_address = (void*)((u64)module->base_addr + names_address[name_index]);
read_memory(name_address, name, 256U);
- length = str_len((const char*)name, 256U);
+ length = str_len((const char*)name);
break;
}
}