⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 patcher1.c

📁 window编程,非常的好
💻 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 + -