From cee4c6d1c8cbf898d6aa9ad555d8dfcece4c7d96 Mon Sep 17 00:00:00 2001 From: ladevieq Date: Sun, 12 Jul 2026 23:26:58 +0200 Subject: Fix runtime crashes due to loaded functions --- src/utils.c | 56 +++++++++++++++----------------------------------------- 1 file changed, 15 insertions(+), 41 deletions(-) (limited to 'src/utils.c') diff --git a/src/utils.c b/src/utils.c index 0b3513d..95a1d80 100644 --- a/src/utils.c +++ b/src/utils.c @@ -1,30 +1,10 @@ #include "utils.h" +#include "win_funcs.h" // ======================= // ====== windows.h ====== // ======================= -typedef struct _PROCESS_INFORMATION { - void* hProcess; - void* hThread; - u32 dwProcessId; - u32 dwThreadId; -} PROCESS_INFORMATION, *PPROCESS_INFORMATION, *LPPROCESS_INFORMATION; - -typedef struct _OVERLAPPED { - u32* Internal; - u32* InternalHigh; - union { - struct { - u32 Offset; - u32 OffsetHigh; - } DUMMYSTRUCTNAME; - void* Pointer; - } DUMMYUNIONNAME; - - void* hEvent; -} OVERLAPPED, *LPOVERLAPPED; - -#define SUCCEEDED(hr) (((i32)(hr)) >= 0) + #if defined(_MSC_VER) && !defined(__clang__) #define va_start(ap, x) ((void)(__va_start(&ap, x))) @@ -44,12 +24,6 @@ typedef struct _OVERLAPPED { #define STD_OUTPUT_HANDLE ((u32)-11) #define STD_ERROR_HANDLE ((u32)-12) -extern void* GetStdHandle(u32 nStdHandle); - -extern i32 WriteFile(void* hFile, const void* lpBuffer, u32 nNumberOfBytesToWrite, u32* lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped); - -extern i32 ReadProcessMemory(void* hProcess, const void* lpBaseAddress, void* lpBuffer, size_t nSize, size_t* lpNumberOfBytesRead); - // ======================== // ====== !windows.h ====== // ======================== @@ -66,19 +40,7 @@ u8 is_hexadecimal_digit(char c) { return ('0' <= c && c <= '9') || ('a' <= c && c <= 'f') || ('A' <= c && c <= 'F'); } - // TODO: Improve basic functions perfs -// max_size: str allocated size -size_t str_len(const char* str, size_t max_size) { - const char* c = str; - size_t count = 0U; - while (*c != '\0' && count < max_size) { - c++; - count++; - } - return count; -} - void str_cat(char* out, const char* str, size_t c_str) { char* cur_out = out; const char* cur_str = str; @@ -91,6 +53,18 @@ void str_cat(char* out, const char* str, size_t c_str) { } } +void memcpy(void* restrict dst, const void* restrict src, size_t size) { + RtlCopyMemory(dst, src, size); +} + +void memset(void* dst, int fill, size_t count) { + if (fill == 0) { + RtlZeroMemory(dst, count); + } else { + RtlFillMemory(dst, count, fill); + } +} + void u64toa(u64 number, char* str, u32 base) { static char codes[16U] = { '0', @@ -201,7 +175,7 @@ void print(const char* format, ...) { if (*cur_fmt == 's') { const char* str = va_arg(args, const char*); if(str != NULL) { - size_t length = str_len(str, sizeof(formatted_str)); + size_t length = str_len(str); i64 relative_fill_count = fill_count - length; if (relative_fill_count > 1) { fill_chars((u8*)cur_char, ' ', (u32)relative_fill_count); -- cgit v1.3