返回列表 发帖

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

全局动态调用笔记
1 K  y, ~6 B/ w( Usvchost files工程->插入->类(Generic Class DTDY)->DTDY.cpp DTDY.h- |7 f$ y2 E4 V6 H$ e
----------------------------------------
4 L' _7 Q8 W4 P( {& g* ~DTDY.h:
" P$ W8 d$ T. g$ k2 f# H; p5 j1 W+ p1 ~* W2 ~/ f: W
#if _MSC_VER>1000
& t3 b+ x, I# H& ~8 h#pragma once
/ v" U" v9 c" C8 X/ e7 I+ Q8 F#endif //_MSC_VER>10001 P6 B9 j& b) a- p+ {
#include<windows.h>
' c4 \/ l9 C1 \) ^* z$ ]8 m) h- q9 V, }0 N, t: a4 r8 @/ V# |
typedef DWORD (__stdcall *pGetModuleFileNameA)(HMODULE,LPSTR,DWORD);
* [( n- d6 I% X: g- cclass DTDY3 d- o9 q- i0 F* J! c5 N
{
" l4 C- M+ i  y; m" t" I# J& a3 v2 zpublic:
! Q  C+ V5 {4 G6 YDTDY();
1 u3 K- A& {5 ^. N: ]virtual ~DTDY();* {! s0 k$ {% z7 v
public:
0 P+ R6 ^7 w: astatic pGetModuleFileNameA MyGetModuleFileName;  S- c1 s3 `9 ~) e' [# Q
static BOOL FunInitiallization();
" E2 W( s5 ~; s& P  R+ C% E9 |};
8 G% o: ?. n% K* L7 F' e#endif
2 l* Z/ q2 Z& J, I+ K----------------------------------------/ j( ^+ A3 ]/ L

  W8 b0 K( X2 e8 aDTDY.cpp:# M! ^9 Y/ Z  `9 l+ U1 t( r1 w
" m6 l/ o4 [7 a. B+ R
#include "DTDY.h"/ @" C; T) W: O/ P. K1 A: {
pGetModuleFileNameA DTDY::MyGetModuleFileName=NULL;9 ?3 x" ^; G/ I
DTDY:TDY()  O! m+ v" D# k$ D9 a% p
{1 J/ g! t$ N: L0 t" ]
}# S* k) R7 J: H$ ~
DTDY::~DTDY()
% l: x( c4 J7 P4 O+ k! s' u7 i& H8 p- \{
9 R: A! O' C# @4 j# D& `. B}5 o! H3 ]: X+ V1 ?/ M) u2 ~
BOOL DTDY::FunInitiallization()/ V& ~" P' S: J# B( h
{9 |" V& e: z8 T* b7 a! Q$ S6 q: N
HMODULE hModule=LoadLibrary("kernel32.dll");
1 }8 c3 a& Z; SMyGetModuleFileName=(pGetModuleFileNameA)GetProcAddress(hModule,"GetModuleFileNameA");6 }( X' p& K- Z
if(!MyGetModuleFileName=) return FALSE;, w. {( V2 E* |- G5 P/ w0 j
/ E! H/ o- E) X
return TRUE;* x! U$ F7 M# x
}
; j! \* |, a" [" G* u----------------------------------------
" R" e+ P/ C% F0 c/ asvchost.cpp:" H8 W- I' m- x

! j! t% W' l+ n8 i9 V" \) }. _! l' F#include "DTDY.h"
* o0 b/ |2 V9 @  d# E  e' v9 T
* r1 @8 w. M. |BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
+ V. T  @; w$ p5 d1 O{' E1 Z. G- I4 X* o! i
switch(ul_reason_for_call)# z5 Q! S6 {* J7 a( n
{8 m; ~8 m6 ]- s8 m( c! r! e1 H
case DLL_PROCESS_ATTACH:
) B; C3 e# n+ Q" V6 t1 {' g4 ?  A5 f' vif(!DTDY::FunInitiallization()) return FALSE;# `0 S7 [0 G1 C% }

0 m, V1 |2 k1 m  d& K  K5 v& Tbreak;
6 ^3 }1 a( ]. ?8 [5 l$ {2 Q. q+ m- h5 {}, D4 G6 T7 A7 G) _- F# E
}
- `0 \( Z, g  H" o5 ], |) K" y2 [8 s$ R# W; F& G) E& Q
) j7 {! l# Y. M
GetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));->goto def
. r/ B+ [8 Q) s! W: V+ i' ~$ J+ T改写为' \, A; a9 i- K/ {' [) G
DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));
# U% C( Q6 c* Q* H6 C; G----------------------------------------% K$ @  }. Q% d
KernelManager.cpp:3 o3 u% r5 @$ v& O5 J

4 ?! m) n( l) B7 W- W2 ?. z$ B3 y#include "../DTDY.h"$ ]3 Y6 j5 x% [. @  @
GetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));
+ y# q% Y# U/ ~改写为4 m& I- o  [& Q) C
DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));8 F+ z- ?+ W# K. W! I
----------------------------------------

返回列表