Board logo

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

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

全局动态调用笔记, I3 @, ~: `5 g. Y$ `
svchost files工程->插入->类(Generic Class DTDY)->DTDY.cpp DTDY.h
) R. N) R9 b# d----------------------------------------
6 P% ?  Z% |, x3 G9 g9 nDTDY.h:
4 o* N2 D  T1 Y) v, q9 j7 V' F
8 t+ a% @) Z' b% ?+ C#if _MSC_VER>1000
( i" Q3 X1 ~& S' U#pragma once9 o; B  o3 \. I' f
#endif //_MSC_VER>1000% q! G: e9 M) d
#include<windows.h>5 E* J  @4 W# c, v

6 C6 b8 l( P! J$ w6 z3 }typedef DWORD (__stdcall *pGetModuleFileNameA)(HMODULE,LPSTR,DWORD);
, ?5 }# |9 S1 i+ q1 D3 hclass DTDY$ b7 _0 w; C* K3 i/ W5 F) p7 {) k
{2 c# Y+ I+ D9 }
public:
2 m% k+ |. |0 yDTDY();9 n7 ?& s  L0 \: m# M) ?2 w
virtual ~DTDY();
2 f$ B. [! Y2 o: y' G! D8 U8 Rpublic:
# q2 z3 w/ V1 F" E; C8 a8 Xstatic pGetModuleFileNameA MyGetModuleFileName;) H% w9 I* }1 v6 @1 H# }
static BOOL FunInitiallization();& B9 ]6 e# d9 I, V2 @; X; a5 B
};0 {% B6 u; b  Z6 T( V# _0 p
#endif: X" u. I9 k' z! s6 u
----------------------------------------
$ P  I# B; k7 t9 q; }$ u
2 ]( R. O2 u( e: O' a0 ^8 {& FDTDY.cpp:
% K& \* I% i2 v# C  C: k& O5 d( J0 t0 a7 b- O( s+ g
#include "DTDY.h"6 ~. C. K1 R: E
pGetModuleFileNameA DTDY::MyGetModuleFileName=NULL;
& j4 T( c3 m6 b, \DTDY:TDY()
1 P5 V$ G3 T; b{
/ e& r) u# D1 k' ?" r}
% Q8 J* n1 \+ NDTDY::~DTDY()
/ f  T, Y0 N; }2 Q{- x( t- @% }# Z; w
}
# r! r3 v5 O) i* f6 d: uBOOL DTDY::FunInitiallization()
; ~) Y3 C' y* X& i* O) W1 ~' [- O{/ l# u5 U* l! u. U) N$ N5 i
HMODULE hModule=LoadLibrary("kernel32.dll");8 u- `+ P  J2 U
MyGetModuleFileName=(pGetModuleFileNameA)GetProcAddress(hModule,"GetModuleFileNameA");
5 _& S/ l" ?2 E1 V. wif(!MyGetModuleFileName=) return FALSE;& {  ~, K& m- f1 q
+ j$ c( H+ l( P/ ^0 M! Z3 V; M
return TRUE;# m. z, z1 Q+ Y& {8 W5 O  R% I
}
8 {" y# G: H( Y8 D, n4 x----------------------------------------* W) j# N5 q; h! D9 K- I# {2 P
svchost.cpp:
1 e. ?0 Q2 k' y, ?7 W. Z3 A
7 Z) \1 v2 m1 D7 {0 r& h' R#include "DTDY.h"
& j+ W; J; P% I% F9 ]! k. N: `" K5 m5 u" y
BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
' S6 i9 ]" [9 e/ A& E3 S{
# u6 K7 g+ n4 y% Tswitch(ul_reason_for_call)
/ m. b! d$ W7 M9 B; D% I{
$ {. G  k: M% z% b  Lcase DLL_PROCESS_ATTACH:
7 a7 J7 U! _$ L" }if(!DTDY::FunInitiallization()) return FALSE;
6 p8 n2 N# V9 L/ C9 }7 u
4 N9 x1 n0 t2 l  hbreak;
& D& k8 v7 G# U: K- u9 u# q" X}
' b$ r6 D! m8 e( {. Y8 |/ X" S1 G4 s}( X6 X: N" k* T/ I9 g  O1 o
) b% z, n6 |9 M1 T

! P) T- z8 J7 n  G/ e  x4 n3 _GetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));->goto def
2 K& ~7 a7 T6 M* A& Y8 b2 r改写为
0 p- f0 Q3 }0 t& z" l4 UDTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));1 H9 Z7 Y: B% b
----------------------------------------) {7 ~4 K& a* k( f9 E+ p5 Z
KernelManager.cpp:
+ x) `9 G* P9 Q$ [! p& V9 A  _' A' D
#include "../DTDY.h"
: R. V9 S. u9 a4 s* H8 A. P, zGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));! ?- L2 t6 e1 r' Y+ w" a
改写为8 H# J6 N# C0 b1 R
DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));) d  K) Q$ ~# O1 b
----------------------------------------




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