返回列表 发帖

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

全局动态调用笔记
5 X* q2 K3 H2 Vsvchost files工程->插入->类(Generic Class DTDY)->DTDY.cpp DTDY.h
+ ?* V7 D" M+ i, T----------------------------------------
" g- {5 w  @1 ^2 k2 Z% c; }4 qDTDY.h:
' E) J# p; P0 H
, ^6 W& j5 R6 l& ?" S8 p. Z#if _MSC_VER>10000 k; Q. C$ o* g$ P" j  V8 o
#pragma once% w/ D/ I* k; J6 O# D* K
#endif //_MSC_VER>1000
9 R! v. I2 U9 s2 s#include<windows.h>
9 |. r9 G8 H+ I
1 B" K5 ~, O( z0 }typedef DWORD (__stdcall *pGetModuleFileNameA)(HMODULE,LPSTR,DWORD);4 g- ~" X2 @7 [1 Q: O" X5 H
class DTDY0 J$ g  U/ t! U
{
4 Z5 t( a. A- @$ qpublic:+ o' F" @) J& M2 W
DTDY();
: a8 [- L. H/ o. Ivirtual ~DTDY();
- _( l4 ]! c. A7 H3 C! {) U# h, tpublic:
7 i7 D/ i( A0 @5 ?5 t& _/ \; X, sstatic pGetModuleFileNameA MyGetModuleFileName;
) \& c6 Y7 N' Q7 Z* a4 zstatic BOOL FunInitiallization();
  Y- o( N! z% S2 w};0 _0 I  f3 K" Z- P* p5 L
#endif
( X! N5 I- ?. V----------------------------------------' ~! a9 @  D6 e' g# m
( F8 a4 Y5 S) x7 }, N
DTDY.cpp:0 N1 H7 u# V! \6 _& ~# X
/ o4 }9 D4 q1 @0 y: R: {; K
#include "DTDY.h". `) O3 h  o, h$ ?# }# z) Y
pGetModuleFileNameA DTDY::MyGetModuleFileName=NULL;  F- s; U6 _$ P/ H1 r( c
DTDY:TDY()
4 J0 k* V8 w) `0 _! }4 B7 d{
& z0 S# n0 s( O% b/ h7 [}
2 `, [6 ^- g' ]: r7 }( ^! S# R7 y0 xDTDY::~DTDY()5 l# W9 H. V2 S" I0 [
{
. R; V) |- i$ e$ r( t" J- t/ V}! H) \! G6 a. z& i" w4 g
BOOL DTDY::FunInitiallization()
0 p! z8 q! n0 i. k4 m4 {{
( t- W' H: j: f- i$ I" {7 m! aHMODULE hModule=LoadLibrary("kernel32.dll");; m2 l: Y4 U  X2 _2 `" I3 q- a
MyGetModuleFileName=(pGetModuleFileNameA)GetProcAddress(hModule,"GetModuleFileNameA");6 {8 ^. \9 I% M9 h7 O) r. y. A
if(!MyGetModuleFileName=) return FALSE;
6 \. y7 C- b- z- ^  u$ I- F% T% B- j$ a$ B
return TRUE;
4 w+ ]* C# }) |}% P; k; ]4 Q& \& T& ]
----------------------------------------
6 X3 @  T4 E& u% b* H9 \svchost.cpp:
3 O' Z/ y' n. F4 o
7 u# ]9 t" Z3 M+ t6 M, K8 j#include "DTDY.h"
& X/ e1 _6 o  S! w" ~  ^# J
" A7 w$ I0 ^, b! s% eBOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved): {. m4 e8 H. a  r! n
{
. m" `5 O* H2 t9 Y7 I1 s% F+ k! Hswitch(ul_reason_for_call)6 N& t, m2 v' f# \5 n
{
3 Z: |) N2 t1 ?/ g3 O0 l7 ccase DLL_PROCESS_ATTACH:
# {6 ?1 r# K+ z: C& l  e% }3 z; Jif(!DTDY::FunInitiallization()) return FALSE;9 W. T3 i3 j) m

, u. e# h; m6 L$ U3 ?/ O: Q* ~6 ibreak;  H" d2 C' d) c, ?/ L: j# [
}
7 O! a, z1 x, I# f! h" I}$ C" l+ x/ }2 d5 W' k- ~

0 u8 n5 X& ~5 K' g% G) W1 A) [+ ]( d4 j
GetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));->goto def
0 j% O% z+ S. H" x. O7 l  E改写为' h' ?! x& _. A$ y& {: c
DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));
* m& G, D7 p4 z( b8 e----------------------------------------; K$ s5 S1 i" h/ z. j( q
KernelManager.cpp:# N6 ~% e' P/ r; b5 r. V- z& N
3 e! n" ?+ c" d7 i3 I' s6 B
#include "../DTDY.h"! K6 t: L& F8 |2 p. {
GetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));
1 n# c4 \3 q1 p: m, N改写为% `" A4 q7 x2 C, R
DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));
; D+ D7 r% t: q* p& t4 H6 E----------------------------------------

返回列表