📄 patcher1.c
字号:
#if _MSC_VER > 1000
#pragma once
#endif
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include "ApiHooks.h"
#define PatchRVA 0x1081
#define PatchSize 2
BYTE OrigValues[PatchSize] = {0x6a, 0x0};
BYTE WantedValues[PatchSize] = {0x6a, 0x24};
BOOL APIENTRY DllMain( HANDLE hModule,
DWORD ul_reason_for_call,
LPVOID lpReserved
)
{
return TRUE;
}
BOOL FirstTime = TRUE;
HMODULE main_module;
LPBYTE dest;
ULONG OldAttr;
DWORD i, j;
__declspec(naked) NewwsprintfA() {
if(FirstTime) {
FirstTime = FALSE;
if(main_module = GetModuleHandle(NULL)) {
dest = (LPBYTE)main_module+PatchRVA;
if(VirtualProtect(dest, PatchSize, PAGE_READWRITE, &OldAttr)) {
for(i=0, j=0; i<PatchSize; ++i)
if(dest[i] == OrigValues[i]) ++j;
else break;
if (i == j)
while(i--)
dest[i] = WantedValues[i];
VirtualProtect(dest, PatchSize, OldAttr, &OldAttr);
}
}
}
_asm jmp dword ptr wsprintfA;
}
__declspec(dllexport) API_HOOK ApiHookChain[2] = {
{"USER32.DLL","wsprintfA", HOOK_IMPORT, NULL, NULL, NewwsprintfA},
{HOOKS_END}
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -