summaryrefslogtreecommitdiffstats
path: root/src/utils.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils.c')
-rw-r--r--src/utils.c56
1 files changed, 51 insertions, 5 deletions
diff --git a/src/utils.c b/src/utils.c
index 729b74d..d512238 100644
--- a/src/utils.c
+++ b/src/utils.c
@@ -1,6 +1,52 @@
#include "utils.h"
-#include <Windows.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 _MSC_VER
+ #define va_start(ap, x) ((void)(__va_start(&ap, x)))
+ #define va_arg(ap, t) \
+ ((sizeof(t) > sizeof(__int64) || (sizeof(t) & (sizeof(t) - 1)) != 0) \
+ ? **(t**)((ap += sizeof(__int64)) - sizeof(__int64)) \
+ : *(t* )((ap += sizeof(__int64)) - sizeof(__int64)))
+ #define va_end(ap) ((void)(ap = (va_list)0))
+#endif
+
+#define STD_INPUT_HANDLE ((u32)-10)
+#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 ======
+// ========================
u8 is_alpha(char c) {
return ('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z');
@@ -211,8 +257,8 @@ void print(const char* format, ...) {
cur_char += str_len;
} else if(*cur_fmt == 'b') {
- u8 number = va_arg(args, u8);
- u32 str_len = 8U - __lzcnt(number);
+ u64 number = va_arg(args, u64);
+ u32 str_len = 64U - __lzcnt(number);
i64 relative_fill_count = fill_count - str_len;
if (relative_fill_count > 1) {
@@ -283,7 +329,7 @@ void print(const char* format, ...) {
}
va_end(args);
- HANDLE standard_err = GetStdHandle(STD_ERROR_HANDLE);
+ void* standard_err = GetStdHandle(STD_ERROR_HANDLE);
SUCCEEDED(WriteFile(standard_err, formatted_str, (u32)(cur_char - formatted_str), NULL, NULL));
}
@@ -292,7 +338,7 @@ u8 read_memory(const void* addr, void* buffer, size_t size) {
extern PROCESS_INFORMATION proc_info;
size_t b_read = 0U;
- HRESULT hr = ReadProcessMemory(proc_info.hProcess, addr, buffer, size, &b_read);
+ i32 hr = ReadProcessMemory(proc_info.hProcess, addr, buffer, size, &b_read);
return hr > 0 && b_read == size;
}