全局动态调用
全局动态调用笔记svchost files工程->插入->类(Generic Class DTDY)->DTDY.cpp DTDY.h;w!E#LFS%?
----------------------------------------)@#f;d#IE
DTDY.h:&BcRVeV
P9Ya#qJd8Y
#if _MSC_VER>1000
#pragma once7qz8q,r]KfZ)]
#endif //_MSC_VER>1000B?:A tgt
#include<windows.h>
typedef DWORD (__stdcall *pGetModuleFileNameA)(HMODULE,LPSTR,DWORD);`,`~jZwJ @u
class DTDY"A"Ix"~k {FQ5m3X
{
public:
DTDY();
virtual ~DTDY();bm5G&E([
public:
static pGetModuleFileNameA MyGetModuleFileName;+[zE,dMF
static BOOL FunInitiallization();s"@"Zu8` {
};%^C"X z Wyy
#endif
-----------------------------------------B)]l5J k&CG"@
DTDY.cpp:
0U5vVmRw s)B
#include "DTDY.h"
pGetModuleFileNameA DTDY::MyGetModuleFileName=NULL;+[X,wY&jR1N"J
DTDY:TDY()
{
}]DJ*^,Aux#u4a
DTDY::~DTDY()4Go SjD#Q/kn
{
}
BOOL DTDY::FunInitiallization()$Snq+a HOS
{ P'?&dj"`5`'fi
HMODULE hModule=LoadLibrary("kernel32.dll");
MyGetModuleFileName=(pGetModuleFileNameA)GetProcAddress(hModule,"GetModuleFileNameA");+[0F u%Q.h~N.v
if(!MyGetModuleFileName=) return FALSE;)b3p&s~[6t2D
return TRUE; Oy*p4@Z0W*}4D
}7]JJc5Xu
----------------------------------------
svchost.cpp:
#include "DTDY.h"2g*B qkW5bX
R\fK&f
BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
{
switch(ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:
if(!DTDY::FunInitiallization()) return FALSE;
break;?0q`#Y;}ND|
}
}
,W2w8nT`
GetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));->goto def
改写为
DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));
----------------------------------------q%f"D'fb*Aj&t
KernelManager.cpp:
2T+JN~(Sy6e7w5\1Fc
#include "../DTDY.h"
GetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));
改写为-Y+t7Wx,a#d
DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));
----------------------------------------
页:
[1]