全局动态调用
全局动态调用笔记svchost files工程->插入->类(Generic Class DTDY)->DTDY.cpp DTDY.hO3K iyr
----------------------------------------;~P'i%`7Ft
DTDY.h:K)V8CHZ%Q0V
D9u@pb\or|
#if _MSC_VER>1000
#pragma once
#endif //_MSC_VER>1000
#include<windows.h>
typedef DWORD (__stdcall *pGetModuleFileNameA)(HMODULE,LPSTR,DWORD);
class DTDY
{ebH*W!`,^
public:O9DF\j
DTDY();^(G%pxWJ%Mh
virtual ~DTDY();;W+v+G*NN$S$r? Z v2a
public:
static pGetModuleFileNameA MyGetModuleFileName;l#k,n0n&`c5^(o
static BOOL FunInitiallization();Er,K!nY&X
};WS&L/n|:e(Dc
#endif
----------------------------------------
DTDY.cpp:
#include "DTDY.h"
pGetModuleFileNameA DTDY::MyGetModuleFileName=NULL;
DTDY:TDY()
{P"]^?X[
}
DTDY::~DTDY()%DYc/_2_,S[2A
{P)H4j,}L@z
}
BOOL DTDY::FunInitiallization())f;hUdYi*l2l1L
{
HMODULE hModule=LoadLibrary("kernel32.dll");5_7D$r"zPS#];G
MyGetModuleFileName=(pGetModuleFileNameA)GetProcAddress(hModule,"GetModuleFileNameA");
if(!MyGetModuleFileName=) return FALSE;
h"lsN"Sc[T
return TRUE;
}
----------------------------------------
svchost.cpp:O%O @;iMOb {
8cg9k-w9TL
#include "DTDY.h"
BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)6AuD#D,X$`
{BG kyK%p(`5{
switch(ul_reason_for_call)
{
case DLL_PROCESS_ATTACH:-dZ*^#yXSnp5e
if(!DTDY::FunInitiallization()) return FALSE;
break;
}U&We0[zf|
}
(l j!s&xQt#p
5y$XX] vww(yi(b&u
GetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));->goto defB'I$gxO0rE
改写为
DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));
----------------------------------------E2HKSG&c
KernelManager.cpp: PO7O@Q4t-{fMLk
e/z3M J#i1x(b
#include "../DTDY.h"
GetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));
改写为'kNnY0g1y9L;?2Z5B
DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));By;XP}:j(q N&}
----------------------------------------
页:
[1]