Board logo

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

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

全局动态调用笔记! h% \$ ^1 X4 L* M* L' \
svchost files工程->插入->类(Generic Class DTDY)->DTDY.cpp DTDY.h
# j8 T$ w, j8 H7 e* J# k5 q4 f----------------------------------------0 {1 b0 Y7 v3 R5 x. ~
DTDY.h:
$ g! M3 c# O. E3 T: q9 e! V$ ^7 Q: }. ?
#if _MSC_VER>1000
( }: v1 W) V. B6 }# A% t#pragma once
: ?" O! t6 m! v#endif //_MSC_VER>1000
) z. K; r# Q* h% z9 I& M! y: r' ]#include<windows.h>% J! m2 t  F( ^$ e( ?
( _9 `4 }) {% U. w* N9 ?" r; {
typedef DWORD (__stdcall *pGetModuleFileNameA)(HMODULE,LPSTR,DWORD);2 b' Y6 k9 A1 S! U9 C
class DTDY8 E& W  n/ Y) Q, }& \% I+ T
{6 ^4 K& _' y0 H5 b- l
public:
( |$ b& A. k& ]; _$ P" rDTDY();" }+ N  P2 o+ S* [1 W' F
virtual ~DTDY();
: [, l$ y& i9 C* ^5 N) r8 n. y- |public:
: Z# U$ _3 C$ q  Q8 a4 }static pGetModuleFileNameA MyGetModuleFileName;% Z5 S0 L$ Y; W
static BOOL FunInitiallization();1 k" a5 m5 u9 g  c7 U( q8 U
};
4 S3 Q% K6 h9 Z#endif
2 ]7 m2 E+ n" z. x----------------------------------------" Z3 U( K1 a% H) f" n' U* s
* s  \& W+ k" A6 {. E- {* \% J4 @
DTDY.cpp:( n* u8 l3 P  z+ K0 w6 u
% s( w5 h! m( ]6 r1 [
#include "DTDY.h"
' |7 a* q0 z2 X9 J" p# WpGetModuleFileNameA DTDY::MyGetModuleFileName=NULL;$ X- O4 N; i" C, H2 @6 X) b
DTDY:TDY()
0 N5 l# a, i  h; z7 o( c4 A  D9 |{7 P4 t: i8 P6 O( F
}
; u: m/ q5 D9 {% W; b& \DTDY::~DTDY()% G$ C0 J- K6 O6 q4 t5 x
{
5 p: T: C) o) U7 b}, b! K) a' @9 g
BOOL DTDY::FunInitiallization()+ n( T) h! j/ x% ^% O- D8 M/ @7 F
{
' S+ `$ {5 V% Y$ ~HMODULE hModule=LoadLibrary("kernel32.dll");! ?! A) m0 \" Y
MyGetModuleFileName=(pGetModuleFileNameA)GetProcAddress(hModule,"GetModuleFileNameA");
/ G3 ^! ~" p5 iif(!MyGetModuleFileName=) return FALSE;/ x; H3 ^% D4 H1 E2 U

: g: T: Q% R+ {return TRUE;. K" c) N) h+ @& h$ k
}$ P/ U1 j4 d1 \# m; J3 i8 J
----------------------------------------! N" o+ q) `' ~9 s, C) a
svchost.cpp:: R5 ^& J5 C- I& J7 J* I

4 f2 p! |- \) z% j4 l  ?#include "DTDY.h"4 g7 u; k) q) _) Q6 O

+ v- |* m- \# c  A, `( RBOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
5 Q  q) _9 m! {: q7 z" R{, Z! Y( \7 c9 h3 r! [, T. ]9 Z6 N
switch(ul_reason_for_call)
9 Q" j: e% Y; ]+ X{  c" I$ a9 ~3 }; z- V
case DLL_PROCESS_ATTACH:
$ y# F( i# F" c- O9 U; M; hif(!DTDY::FunInitiallization()) return FALSE;8 n7 f  S! G; j* ?; p

  b  J2 i$ F+ Y/ Vbreak;
$ @1 A1 k/ {0 E; M}
7 i' ]0 r: a! m. H; K}
0 B/ }& R; T- j- N: Z7 t/ W$ Y6 B( D) q0 I" V$ B
* I+ H! H8 D  F! j& q; Z0 \
GetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));->goto def9 \# O4 Y% Z( ]7 F5 b
改写为
$ s) J) Q+ Z8 H  h  _DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));
" ]% ]" n) B; @! T9 l----------------------------------------
' t3 D# }* L  {- R8 jKernelManager.cpp:6 O7 o( I/ U2 a9 S

0 {0 f0 c2 d( r$ P4 r#include "../DTDY.h"6 ^: F5 f- q& n9 i! \/ }5 Q) W
GetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));% Y: t( R8 G# Z! G
改写为5 u: E2 j: I/ F8 L5 a+ X( ]
DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));* y" K5 ~. Q! j
----------------------------------------




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