全局动态调用
全局动态调用笔记seFM-GNusvchost files工程->插入->类(Generic Class DTDY)->DTDY.cpp DTDY.h
----------------------------------------eu8@g*k0`_
DTDY.h:wL-]$[nu7H\5o2I
#if _MSC_VER>1000
#pragma once
#endif //_MSC_VER>1000
#include<windows.h>/ij'Fp ek ]
typedef DWORD (__stdcall *pGetModuleFileNameA)(HMODULE,LPSTR,DWORD);
class DTDY
{zrA}6]'Xw0h
public:J:F0nbwh
DTDY();a[3`%K&[p
virtual ~DTDY();
public:6s[Q| E^G
static pGetModuleFileNameA MyGetModuleFileName;
static BOOL FunInitiallization();
};
#endif'q2Mle*n
----------------------------------------
Ze&AG*^;f%Q
DTDY.cpp:
XC5w%p$d+~R0}5n%@
#include "DTDY.h"^6fK:G.O\'QN3G
pGetModuleFileNameA DTDY::MyGetModuleFileName=NULL;K]5T~WUM;L
DTDY:TDY()"qd+W$p l9vP
{5f&@J&T4HH%O-N
} U8o5l-cjNi
DTDY::~DTDY()(|CcR(Kp
{
}
BOOL DTDY::FunInitiallization()$Z yi_I{.n
{
HMODULE hModule=LoadLibrary("kernel32.dll");
MyGetModuleFileName=(pGetModuleFileNameA)GetProcAddress(hModule,"GetModuleFileNameA");+pyW&ObS V
if(!MyGetModuleFileName=) return FALSE;
return TRUE;J2c4~f5E%Z6f u5G
}$` AG;q'F
----------------------------------------
svchost.cpp: [a"YQ0Lx8W
3Ra%H ? ns,OBa
#include "DTDY.h"6f:L"g5O [d!A/z
BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)Ii\&BJr
{*g V9d\a^ny C
switch(ul_reason_for_call),m$_*og_d U
{C!\^-lR5w
case DLL_PROCESS_ATTACH:;C WjKf"H C
if(!DTDY::FunInitiallization()) return FALSE;
!hi|%xL xyr~(T7^
break;
}
}
}OOWd&\0o
GetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));->goto def
改写为
DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));;D!Q V8b5J
----------------------------------------
KernelManager.cpp:v9cT'h1gbG&Q
#include "../DTDY.h"
GetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));}$CK,J(@Y2t
改写为
DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));
----------------------------------------
页:
[1]
