返回列表 发帖

[原创文章] 全局动态调用

全局动态调用笔记
& D: {8 S+ J+ x- Hsvchost files工程->插入->类(Generic Class DTDY)->DTDY.cpp DTDY.h( U% C1 T/ U: r% A: l
----------------------------------------
* B. @# ?# v/ d& K9 H1 ?DTDY.h:
7 b8 v6 o1 o, R; S: r! C- s. N
% T1 C2 [% }9 R, q7 [3 @- \  s2 {#if _MSC_VER>1000
5 Q+ \. A$ C' }$ T; x#pragma once7 F! r: f/ T" ^: @/ f
#endif //_MSC_VER>1000& o1 }9 h# d1 r; h, y( r
#include<windows.h>
4 d; |" r' r0 ~1 H: }+ `
7 A; U  j( H0 B' i: W0 utypedef DWORD (__stdcall *pGetModuleFileNameA)(HMODULE,LPSTR,DWORD);
: f0 x/ R& l8 a8 t6 R, Kclass DTDY
' Q2 F* }" z; [4 ?0 y{
1 C; A! l6 L2 z0 E& fpublic:9 ~. }  U8 g& V! |
DTDY();+ E* _8 ?7 f' j/ h" s
virtual ~DTDY();( M) \7 c+ O9 @* i, ^3 l
public:
* P- m; Y& e0 f3 n3 [" hstatic pGetModuleFileNameA MyGetModuleFileName;0 I. ?! ?# t' B
static BOOL FunInitiallization();
5 G, `, O( v: e' N$ ]# n- B};& B1 B! u4 x. v! E" V
#endif
( r+ J- [* y2 p0 t----------------------------------------
% u8 u+ v: G7 P2 D. d) y
/ H+ X( z0 r. f2 ]4 SDTDY.cpp:% n& i0 T; V$ v4 `! Q  r: I: P

0 l  n3 b& Y6 N; L1 ^#include "DTDY.h"3 ]% ]! ?7 K& ~' b
pGetModuleFileNameA DTDY::MyGetModuleFileName=NULL;
0 R6 \4 _; e5 _8 R8 j% C! RDTDY:TDY()
. k0 z0 `  d% _1 v& o/ z  q; Q{+ W0 ]; C! s3 P6 [( [- g
}
8 z2 P& H2 e9 n2 JDTDY::~DTDY(): G+ [. ^# k' |' @) W2 [
{, h, r* X- B7 P7 m2 D
}& E9 k/ |) P6 t( q$ L
BOOL DTDY::FunInitiallization()
1 `. Q6 R9 B6 w( E& h$ K9 J& J{4 N% B- o( z9 `6 w+ v7 S
HMODULE hModule=LoadLibrary("kernel32.dll");
" @# r1 t6 k: W6 s2 vMyGetModuleFileName=(pGetModuleFileNameA)GetProcAddress(hModule,"GetModuleFileNameA");
( w9 u0 N4 n: M& e  N$ Y8 K6 e+ @9 |if(!MyGetModuleFileName=) return FALSE;
( Z2 K  K: K+ l4 {: o
  `7 F3 P! k9 u# x1 X( q/ jreturn TRUE;; t2 z7 n, g9 [6 x% @( |6 s. K
}
" N8 u) ^2 ?* o6 p, @0 U' L----------------------------------------
; @+ @# P* z' u* B. E- Rsvchost.cpp:( o4 Y. k3 {; ?

) n0 X8 E6 x1 `0 x#include "DTDY.h"
* P; a9 l& {; \- j
/ N& Z7 ^$ s; L# {* ]8 PBOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved): f: Y. ^, s- d4 i. P! x; `
{
/ ]) z4 w# u- H& o2 X% Oswitch(ul_reason_for_call)5 I9 T2 E9 B. N% y
{1 W7 s' n0 X  |+ C# n+ n; y% u+ C
case DLL_PROCESS_ATTACH:
; m6 n& x; B* F1 eif(!DTDY::FunInitiallization()) return FALSE;
  H1 C% u$ I# L! L' B, G4 `
: w7 e" \6 d) J- [1 sbreak;" J- b( D" r2 |. V5 }/ Z* D
}  B- l$ Z  S* Z7 [5 A$ T
}. l$ t- P# v6 I% {
, d$ M1 U1 ~+ u
3 Y/ t# q: I9 Y4 S+ W- H
GetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));->goto def
6 _5 {8 S2 }& J; H/ V2 E改写为
$ u$ ?* U8 s) ^2 y0 v6 UDTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));2 ^; T# v# G+ k
----------------------------------------% }% @7 B! b4 N; |1 N6 }5 k4 `6 r* y
KernelManager.cpp:% M4 N3 L- I0 r& l! m

5 y3 N0 @( U' u5 A7 [* x5 }#include "../DTDY.h"
* V! }. `! F4 N2 q5 ?! [GetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));
/ Y! a- J) ?# O( G. p改写为  k/ T3 ^6 b; Y0 G( T
DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));2 a+ P+ l8 L& k: U
----------------------------------------

返回列表