原文
% N# l" F& v' D% ahttp://www.descipe.net/forum/sol ... -your-wallhack.html2 L! i. P# h# x
t% u* Y/ J' y# j6 l- J视频教学7 C1 G' |( ~* G5 O5 s+ }, b( e/ Y
http://www.youtube.com/watch?v=6b5XMzT-b_U ( Y! g) _' u+ _& A, w6 ]
/ x# O* G$ l T+ T% ]1 ~& MHomeHome User CPUser CP FAQFAQ Members ListMembers List CalendarCalendar SearchSearch
5 f& K9 B" K: W) Z$ A; M' B/ Q
8 E7 ?9 n+ i8 ?& ^: X( E2 i7 v2 { Hello shane007,/ l7 V7 @, k+ ?6 u! C; ?
Our records indicate that you have never posted to our site before! Why not make your first post today by saying hello to our community in our Introductions forum.
, b. ^8 j, ?$ r4 k9 ~
|: Z9 y* p, J6 b7 W2 YWhy not start with your first post today and become an active part of DEScipe.net now!
4 l0 L8 C6 Z9 U4 g4 V 1 m" o4 X" u0 w
3 g% S. T O" J + B3 Q; q9 A4 H* G0 [4 V1 T1 q# f
DEScipe.net > MMOFPS's > Soldier Front > Soldier Front Cheats $ c6 m. B1 d$ r$ H3 @% D
How to make a wallhack and how to hook your wallhack!
]( f, j+ C# W0 |0 z) T Welcome, shane007.
' P9 B# M. C4 o1 r1 dYou last visited: Today at 03:55 9 Y. B3 Z+ j. U) z, F
Private Messages: Unread 0, Total 0. ! v! |) E, F2 g/ V
Credits: 200 [Check]
" N' @/ L/ i' R# Z. Z
; R& f; F6 M. l- S% F0 ~. VHome User CP FAQ Members List Calendar New Posts Search Quick Links Log Out 2 s+ I. j! L4 _2 w
0 M1 Z4 d! o, e* d+ B
: l6 `9 L6 e n' C
% G2 b# W, I' f+ p1 {7 ~- d, [" `
Search Forums 1 X+ m- ^1 ]1 |! o
7 s. ~4 n1 G% u, }$ D; d2 V% O# K3 b. w8 F" ^& N7 t) ?. F( O' G3 g
Show Threads Show Posts 0 d6 H; X" [3 ] m* M0 Q
Advanced Search
6 Y: l, k5 p7 {( `' ]( t. yFind All Thanked Posts 2 r8 _ t' _2 [9 m
% C4 w$ ?& p9 HQuick Links
- a! W7 H ]1 `Today's Posts $ B7 {( E0 G. i- {9 X
Mark Forums Read
! n" D D L1 N8 q8 X 6 ^. y/ J8 P l. G- v, R+ b, F
User Control Panel
! s, I! z* l$ D ~/ QEdit Signature - w6 N0 l8 J1 F! ^9 p; }
9 ~2 o; L0 e6 W1 L9 `3 t$ c% IEdit Options
3 `2 X! O+ c. |) k9 b3 a& w9 ]Miscellaneous
3 n( Y* `6 O7 CPrivate Messages
- {, H V; C" D/ hSubscribed Threads % m8 v9 k6 j* X- t3 S7 O* s
( i6 V, m$ a! h T7 Y
Who's Online
5 @( T0 s, g: P6 e8 x1 O q. A
, F4 A( A& Y R2 jGo to Page... & z3 S- h" H4 s, ?$ G/ v/ M$ I
4 j: f) x6 y# ~8 D( p5 ?/ [How to make a wallhack and how to hook your wallhack!6 w. X* H# \+ \( X) L
This is a discussion on How to make a wallhack and how to hook your wallhack! within the Soldier Front Cheats forum part of the Soldier Front category; I will be showing you how to make a detected wallhack and then hook it for it to be undetected. ...
2 T8 f; h# m9 M% A! W' A( ?: k5 a: ^) {' w. [% G- q/ }
Poll: Was this helpful? ' J+ m/ H1 [) V* \: q! Z6 n
Poll Options+ O' H1 @: F+ _3 D: I( T' S* i
Was this helpful?7 ?! C z1 i( N* u0 D- z# B; X$ @8 H
Yes, I WILL press the thanks button
2 m4 }7 ^( N- J8 g( eNo, I am a failure P# J5 _, e7 v3 V+ w" Q' I
View Poll Results
' W2 k5 j( n# m6 \+ t( i; x4 h; v' L% ]$ R: y+ j
Page 1 of 3 1 2 3 > * `0 I4 B' [: @: d" c" P' ~% F% l
, G9 ~% E* w3 t; {1 a: B( ]; \ View First Unread LinkBack Thread Tools Search this Thread Rate Thread Display Modes 7 P( s2 M: _1 u' e8 Y$ j
. I d1 e, J& z2 |, A* t3 O. a
7 V$ m8 }% J; n" L2 T' l R3 a " Y3 e4 O; b* G- L
05-02-2009, 20:49 #1 8 \+ n$ |# h/ i. X
killax9 2 f7 z* |/ F n" l
Punk1 \: h7 k7 U, l3 ~. I* G/ q, Q
( q+ p! _ I# i) P
- ?4 f) A* N+ p! y6 r/ R& i
1 O% E, P( R# \. i, g( {
% v2 s' [6 v ^Join Date: Jan 2008
- I8 p v7 F( ]( fCredits: 2,701 [Donate]
8 s8 ?% J D! ?% T) \& TPosts: 103
$ v9 S% j9 e8 A2 dThanks: 10+ s, @. |: b/ B. H. l/ r2 T) }: V% s
Thanked 48 Times in 25 Posts How to make a wallhack and how to hook your wallhack! 7 O0 x9 L3 v9 K' Y5 k
/ X/ h4 A, X# y/ L# F! M. b--------------------------------------------------------------------------------4 X* i. U/ V6 K! Z5 z
4 |4 `4 ^) n0 q
I will be showing you how to make a detected wallhack and then hook it for it to be undetected.6 n$ x$ Y+ a4 U5 i& C
Possible Undetected Methods:- c* ~9 c8 j7 Z
1)F5,F6 original this was put into place cuz GG only scanned for wallhack once,until you joined a room.so basically hook a unscanned function then once in game hook d3d.; W( ]/ Y; |" V! n- l; F
2)another way **** it hack GG.! m1 C6 K0 n9 E) O' N. e8 @
3)breakpoint hooking;doesnt change memory... well changes debug registers.4 y/ t- C2 }' M& ~
4)code cave the hook int3->Jmp then in the code cave->Jmp(detour)d3d functions ->jmp back to original flow ;Hook hopin. A1 {% b" E, ]0 A
$ {: n3 m$ H! K* y7 Y% z) i7 f
Vtable: ~! Q& l1 Q1 G# \3 }1 l5 @0 B
it wont work for vista its not a vtable hook =)
6 O5 P2 s( y% q
4 R s1 o' P3 m; rthe reason why my older version worked was cuz it hooked
( n, [& }# ?3 ]% X3 R/ N2 eCreatedevice->pointers to the functions
3 V9 x: `# O' g! c N. d6 i" m2 e: p2 ?% o/ h1 V8 \
kinda like a class or a struct.
" B0 o6 |+ C* `$ l" p. ]- N1 |6 U% u7 g
1 c7 G+ h, s9 e4 _* M" a/ D( sand GG scans createdevice right off the back and the only way u can hook it is a few ways {DETECTED}either when d3d8.dll loaded in....{Undetected}or reversing to internal call inside the game[0x00000] pointer." B7 n$ P X/ d& L; T Z9 L
2 y% W0 Y' m( m3rd maybe- some games recreate the device when a map loads...like BF1942.( c7 f2 W1 s& E
4 g& X4 m: _& q' Q" b$ XThings needed to do this:
' Y3 X3 Y+ `' X) e ^( H9 p1. Microsoft Visual C++ 2008
7 f# s! W: Z, g2. DirectX_SDK_(Summer 2004)
( H2 a c/ Z2 R2 J! t3. D3d_hooks" |$ e" u) Y5 \
4. IndirectX) j0 T0 i6 _. ~. n2 N5 u
I HAVE ATTACHED ALL OF THESE FILES AT THE BOTTEM$ J& l9 }) r8 m9 a7 E0 r/ D
+ H4 Q! j. u# r' xNow most of you don't know how to compile a wallhack so watch this video and you will compile with no errors:* |" z& w2 o4 C$ Y6 L2 Z
9 g4 k/ e4 e- [3 PYouTube - How to Compile WallHack [Tutorial] / P& s1 r: U6 P: u6 n
9 L& z( l- G+ m$ \! |
1 \( k0 X% O0 a( n8 a, M
7 Y( y* `' ^. K* }* \) N/ ZDetected Source Code:7 X. H K' C' F9 Y# T5 o
`$ f" t( P' a1 m#include <windows.h>0 }& z# u S; V- e0 ^
#include <detours.h>
5 p9 Q. E6 Y; V: @ I, J+ Y#include <d3d8.h>
# N6 J* o* Y0 \0 t3 H#include <d3dx8.h>& `4 }: X% M( H* _) D
#include "log.h"
& Z9 E0 B, T+ ~ N#include <fstream>
( h5 u( e$ |- o! _#include <iostream>
; |2 T% E. L E! \8 K- V9 w; E#pragma comment(lib, "d3dx8.lib")3 Z4 y! [& O' _6 ~$ o0 u
#pragma comment(lib, "d3d8.lib")
$ x7 J9 V) t6 Y/ a- ]0 gusing namespace std; v9 Y/ l) `, z
static DWORD dwBeginScene = 0x6D9D9250;
5 @' l' y8 g. ?& D* D" @2 F/ Jstatic DWORD dwEndScene = 0x6d9d93a0;& w9 }6 C8 a: i1 Q4 @
static DWORD dwDrawIndexedPrimitive = 0x6d9d73a0;
+ g& Z0 l: E: t* W8 nstatic DWORD dwSetStreamSource = 0x6d9d6760;. n6 c4 H- W* K1 j6 H
static DWORD dwSetViewport = 0x6d9d5b90 ;' x* c s. j# h7 g2 o# y7 O2 }7 D2 L" p
3 r% k0 M( B I1 Y- E
R ~- g) I1 {% F& L j# f* c* g! W- kint m_Stride;; m2 @. X b; V, J7 j) X
int texnum;& c2 x8 ?: b! k0 D5 @5 g; u
int nNumVertices;5 |" b I% n0 S3 u" u8 v
int nPrimitiveCount;* T" ]! t, T+ r* u
w1 {2 `' e5 D. M5 M+ hLPDIRECT3DTEXTURE8 Red,Yellow,Green,Blue,Purple,Pink,Orange;7 f5 {$ O4 b0 \( _ h0 e$ U c
bool Color = true;1 V$ }! W! p. L8 `' f: Z
bool Logger = false;
: X: v5 V% l4 N% A) ]ofstream ofile;
! E) t& H# i* a1 Z% ~) e9 ~2 u* o3 [char dlldir[320];
5 m# a' U2 d, h+ _float ScreenCenterX = 0.0f;
% Q2 [) Q- T# p* M& u( gfloat ScreenCenterY = 0.0f;' S8 z, M1 L( O
bool xhair = false;6 |7 o( d# y/ Z8 M
bool WallHack = false;
2 c. {' l1 E7 i' ^: Ebool WallHack2 = false;
1 N |* `4 y' G4 RHANDLE hand1 =NULL;
' v& O' k, e$ j: D7 c7 k- cHANDLE hand2 =NULL;9 c5 F. f/ \2 d8 { Y M( Z
9 p( p% D* b0 i4 r) X* nDWORD bytes;( y9 r* L0 g7 {( A3 V0 X
2 p* x/ K. `8 C! _
//Logger
- ~: H) e9 a$ T5 R6 L& C' v: dint texarray[1000];
- R6 C1 g* c* A, r! q+ iint arraycounter;
/ W- H3 Q: \; \3 W+ j: ?int delarray[500]; w8 O9 S( Q' C Z6 x
int dcount; - ]. U+ Z3 N3 h* C
unsigned int arrc;' d# V3 |* U" [ }
int i=0;
# E6 G! W7 ]$ Y2 a4 J
) ^9 a, `' D! P6 Y [: r, i
9 v) b; o% a, X9 f4 w" \D3DCOLOR redt = D3DCOLOR_XRGB( 255, 0, 0 );
8 M$ L8 ^! _! O9 s+ V/ S# P% S4 Z0 c* w0 L$ ]7 _ E. W
z2 c, d @* g% b2 @1 K, l( qchar *GetDirectoryFile(char *filename)' o' _; l. a* ]1 Q' s* J# a
{
/ K E: D' r* A jstatic char path[320];7 p, ^9 e0 \( U3 A C
strcpy(path, dlldir);
/ G6 c$ R3 I! E5 qstrcat(path, filename);8 g! p" T* P9 Q. ~- |$ W0 a" b3 Y
return path;
$ S0 L% E6 f7 v) k. Q( S}" K9 M+ X; H" N6 K7 H: V- H. X
, T1 u* }6 {; p0 }1 c0 pvoid __cdecl add_log (const char *fmt, ...)
, W! e8 X) H; ~- X$ J{
6 ?; @" E! |) Sif(ofile != NULL)* N1 t. g6 ^$ }9 ]; O$ A0 @
{
4 Q F6 K, F% s5 M h* s) x0 t7 n, Qif(!fmt) { return; } l# d. A6 M7 m4 S" p8 a- n
7 ^7 n' F x4 g" f7 h7 ?, G) } r
va_list va_alist;& b* d! `2 P; N2 G- D8 T
char logbuf[256] = {0};
* i# X2 E! ~5 L* s& @/ d* A: c5 A
6 @( H2 q. X. Ava_start (va_alist, fmt);) x( x! R5 Y7 f$ w8 d" [, y
_vsnprintf (logbuf+strlen(logbuf), sizeof(logbuf) - strlen(logbuf), fmt, va_alist);" @9 {4 c) _* C3 ?" l! I- ?
va_end (va_alist);
* N5 [; c+ Y3 M& t8 G( t8 F: `8 ?! `5 M' V: I9 ~
ofile << logbuf << endl;7 r' k0 f* `+ ^. b
}7 H# I8 z; {( d" D$ l+ n
}6 L# L, l) ^% {9 q
9 y, n4 D9 J5 }: g" M# i4 C
HRESULT GenerateTexture(IDirect3DDevice8 *pD3Ddev, IDirect3DTexture8 **ppD3Dtex, DWORD colour32)
% X6 K k; p9 C4 F+ L \4 }9 [4 ]; a$ G{6 U# B) t$ T2 h5 J% }9 j2 {
if( FAILED(pD3Ddev->CreateTexture(8, 8, 1, 0, D3DFMT_A4R4G4B4, D3DPOOL_MANAGED, ppD3Dtex)) )8 c# E, O8 y6 r; M
return E_FAIL;
9 w; E6 _9 T ?1 e, c F
F) Q/ d6 u4 b/ }/ A: VWORD colour16 = ((WORD)((colour32>>28)&0xF)<<12)
0 c3 x" o8 V& ]# C" q|(WORD)(((colour32>>20)&0xF)<<8)
" ]* P& @4 A/ r. \' z: |- V9 i|(WORD)(((colour32>>12)&0xF)<<4)
. K3 d$ n4 }* o6 X6 l|(WORD)(((colour32>>4)&0xF)<<0);: G) }/ S/ V( c. U4 g( }) W/ {
; z& |- v3 R2 A, n. ^3 b, LD3DLOCKED_RECT d3dlr; # l7 g; k8 [; U! Z' X4 L
(*ppD3Dtex)->LockRect(0, &d3dlr, 0, 0);9 u5 o# F' f+ f3 d0 q* {# K
WORD *pDst16 = (WORD*)d3dlr.pBits;' O# Q) S7 {2 S7 p* G2 B$ F' g
% w( c8 O3 V5 sfor(int xy=0; xy < 8*8; xy++)
1 E, k4 y* Z: g8 @& t( N*pDst16++ = colour16;
0 M6 c/ z+ P; j. W- Q
0 Q4 [8 T# Z5 h- P; A- g(*ppD3Dtex)->UnlockRect(0);
# i/ [% a# O: b# E3 C M7 H) G( C
# Y* @; T, f* I9 ]return S_OK;
6 f% e8 ^. d- C Q}
' [- R: q7 I7 b3 Y
* A: R( i5 S- r4 l, h. q* O. C0 K4 b/ `% f
//=================================EndScene_Start=== ================================================== ============================//
$ d; a. W( i2 m. a: q7 Otypedef HRESULT ( WINAPI* oEndScene ) ( LPDIRECT3DDEVICE8 pDevice );6 o# b) {9 E; s# ?2 h% Z( |
oEndScene pEndScene;
1 `4 J& m4 j1 r [/ h8 {: t* Z
9 O/ A" w& n% y" Z( R& @9 \HRESULT WINAPI myEndScene(LPDIRECT3DDEVICE8 pDevice)+ x& @( v2 c! [. W7 b, L
{- ~' U1 t- z2 Y# {" S' t' F
if(Color)5 N7 I, G4 d; ^, {6 m) G
{
. O9 z$ g% ]3 b8 j$ jGenerateTexture(pDevice, &Red, D3DCOLOR_ARGB (255 , 255 , 0 , 0 ));+ [8 L& d! y3 D7 b( M
GenerateTexture(pDevice, &Yellow, D3DCOLOR_ARGB (255 , 255 , 255 , 0 ));
7 m0 k9 h5 v2 o: aGenerateTexture(pDevice, &Green, D3DCOLOR_ARGB (255 , 0 , 255 , 0 ));9 x: l1 N4 p: H9 R6 k; t; @% q7 ]
GenerateTexture(pDevice, &Blue, D3DCOLOR_ARGB (255 , 0 , 0 , 255 ));8 k1 G5 ]0 v4 r. Y( f+ [
GenerateTexture(pDevice, &Purple, D3DCOLOR_ARGB (255 , 102 , 0 , 153 ));& d, Q$ _" ^% P; `: s4 g( M/ _
GenerateTexture(pDevice, &Pink, D3DCOLOR_ARGB (255 , 255 , 20 , 147 ));
! e6 s5 F1 A, j% j d; H: {; _GenerateTexture(pDevice, &Orange, D3DCOLOR_ARGB (255 , 255 , 165 , 0 ));0 E3 A3 w' I+ x( i( ~9 S
Color=false;
2 V6 M& u/ \7 @) P+ Z3 Z}
" }: S* ?% ]% [ _) q) a& z+ i9 ^$ I: L4 Z
if(xhair)8 ^; X7 B5 f( T8 |' `
{
" [6 e- n' A" M# y" A" n9 iD3DRECT rec2 = {ScreenCenterX-20, ScreenCenterY, ScreenCenterX+ 20, ScreenCenterY+2};
: C( C% ?* X: {& t/ T5 UD3DRECT rec3 = {ScreenCenterX, ScreenCenterY-20, ScreenCenterX+ 2,ScreenCenterY+20};
1 S( o; i S) x- J, tpDevice->Clear(1, &rec2, D3DCLEAR_TARGET,redt, 0, 0);
7 a v( J% w4 y1 rpDevice->Clear(1, &rec3, D3DCLEAR_TARGET,redt, 0, 0);: B' |" ^" e! g0 v
}
3 D8 Q. j/ `* A- D& O4 V6 Z% `, L2 \* H6 k$ G( b& Z$ j
//=============================================UnHoo K_Start=========================================== ========//
5 ]" v% r$ B2 t8 r3 F% l& h7 l4 J+ t
if((GetAsyncKeyState(VK_F5)&1))
2 h3 y# K( r) G( a/ W{ 9 \" m, k9 g$ y* ~& y% m+ ^5 }
int end =NULL; Q' D4 k3 y) n6 C& |) h2 v N) W6 U
int dip =NULL;0 @& t+ Q p# G* f$ O D
int svp =NULL;
$ b# t4 m# n# eint sss =NULL;
0 i' Q* `( |7 Z: k v# `" \* Q8 `# A4 ]3 `
5 b U; u9 f" S/ KBYTE Unhook[5] = {0x8B,0xFF,0x55,0x8B,0xEC};//Original Function Bytes.
/ ?0 \* A3 P4 ?( }hand1 = GetCurrentProcess();+ I( V, z4 B* A6 q
DWORD dwmodualBase=(DWORD)GetModuleHandle("d3d8.dll");: y# e0 ^$ E6 e
end = 0x6d9d93a0;
4 _9 D4 ^' b0 G* fdip = 0x6d9d73a0;
5 A8 I/ W- }. m- V5 H: @6 q2 A6 Msvp = 0x6d9d5b90;
, f& Q2 \: T' @& Rsss = 0x6d9d6760;5 a0 `$ o. |' J6 l5 q
& z0 r8 q6 b3 j- j
WriteProcessMemory(hand1, (void*) end, Unhook, 5, &bytes);9 ^: Z5 b/ U4 \% ?4 c
WriteProcessMemory(hand1, (void*) dip, Unhook, 5, &bytes);' |, v7 s9 G+ q# ^% b9 C* J* S- p' v
WriteProcessMemory(hand1, (void*) svp ,Unhook, 5, &bytes);& _% S6 m5 W, Q. b( A* C9 j" K) i
WriteProcessMemory(hand1, (void*) sss,Unhook, 5, &bytes);
* g0 `8 r3 e+ |( G A( r} " S$ K4 c& K' X7 m) {* ]! L2 i
//=========================================UnHook_En d================================================= ========//
. F. w: C/ D) ~( y) A
+ ^& `, ^+ J! l m& `if((GetAsyncKeyState(VK_F1)&1)){xhair=!xhair;} 9 y$ {# g, @9 h
if((GetAsyncKeyState(VK_F2)&1)){WallHack=!WallHack ;}
& z) w( c% L! I$ D# \/ z! m9 E; J1 S
9 ^. s; x9 L3 Y9 Greturn pEndScene(pDevice);! W+ {, J& N* V6 Z+ f Z+ S
}* Q# a7 Y5 p E) S2 ]: H
//====================================EndScene_End== ================================================== ========================//
! Q1 k. D( K/ m" l& q
% r9 [. \0 |! y; y! C$ J9 E8 T( s4 E# ^" L2 o# R. l( B
8 b: [+ J) x! N- I3 {/ z: K9 }
+ h5 |3 T% G% X5 s/ x
//=================================Dip_Start======== ================================================== ==================================//
: A, o: | C. O! l8 j0 |) p9 vtypedef HRESULT ( WINAPI* oDrawIndexedPrimitive ) ( LPDIRECT3DDEVICE8 pDevice, D3DPRIMITIVETYPE pType, UINT nMinIndex, UINT nNumVertices, UINT nStartIndex, UINT nPrimitiveCount );: G. J" F5 x* O3 k
oDrawIndexedPrimitive pDrawIndexedPrimitive;3 f/ A8 K9 R, V h; i
3 p3 J/ {- ?- B! C/ K7 THRESULT WINAPI myDrawIndexedPrimitive(LPDIRECT3DDEVICE8 pDevice, D3DPRIMITIVETYPE pType, UINT nMinIndex, UINT nNumVertices, UINT nStartIndex, UINT nPrimitiveCount)! [8 K Y2 H$ o8 k2 U. W
{, O3 T4 j2 T5 l0 r, N
4 e. T* I% Q4 f( K) E0 W
& O) N0 \: i3 G b2 I
4 s5 m, \: `4 g g/ f ^( B5 B* `; f+ Z! @* q
if(WallHack)1 [1 ~+ C, \& b9 Z
{
7 P0 D# U" L( \0 y) |; ktexnum = (nNumVertices*100000)+nPrimitiveCount;
# ^) E* I% U9 p, ^if(m_Stride==40 && # E" R8 P! Z9 Z1 ?4 ?$ m
( ?1 ]1 x/ q7 x P% U g! `9 l! N
(texnum==7500121 )||(texnum==8500105 )||(texnum==12400168)||(texnum==37000650)||
# g o& O$ c7 C(texnum==18000274)||(texnum==8800105 )||(texnum==36900650)||(texnum==19600314)||
7 L: }! x% q& M" |! l; _: t( @! i( D(texnum==21800306)||(texnum==7500121 )||(texnum==8500105 )||(texnum==12400168)|| ]# q4 s( m% r- N- N1 S& O2 Y
(texnum==21800306)||(texnum==36900650)||(texnum==7 500121 )||(texnum==37000650)||3 M$ Y' T0 m* {+ v
(texnum==18000274)||(texnum==7500121 )||(texnum==8500105 )||(texnum==38000658)||
& G' J1 D2 m; h, c6 W# ?. I1 L(texnum==22100268)||(texnum==62400752)||(texnum==2 7900456)||(texnum==45700654)||
h) r$ Y; x4 ~* u$ [" J4 B' A(texnum==4800040 )||(texnum==83600752)||(texnum==33400477)||(texnum ==38100666)|| # l" f8 Q1 S, H3 p* f, s
(texnum==2800036 )||(texnum==62400752)||(texnum==29700492)||(texnum ==84900778)||
' y8 u Q' O) [5 F# h# M(texnum==27500442)||(texnum==52100658)||(texnum==6 2400752)||(texnum==33600552)||
$ x! c8 N- I2 s7 a(texnum==44100646)||(texnum==18000274)||(texnum==3 7200508)||(texnum==45700654)||
. }3 j& j& h8 M# K& M. F(texnum==37200508)||(texnum==52100658)||(texnum==5 2100658) &&$ a- k+ W+ J v/ G
) M% `$ E+ e4 ~; l: M _2 P
, @2 J' K- }& p* c" b' I! {. l. c j7 z' d" A2 |7 u
(nNumVertices == 100 && nPrimitiveCount == 121) || //Foot
4 m4 ~8 I# [; u/ B/ U3 x( T(nNumVertices == 105 && nPrimitiveCount == 168) || //Right Arm
; d1 s/ y+ j) E/ c6 J(nNumVertices == 132 && nPrimitiveCount == 180) || //Hand
+ P4 Q0 }9 H4 Q6 v( i$ Y) f(nNumVertices == 159 && nPrimitiveCount == 200) || //Left Arm 3 y: v. E# q0 U5 N b* t
(nNumVertices == 338 && nPrimitiveCount == 534) || //Underbody thanks japennese guy =)* _- {3 `, W# [6 N7 B
//(nNumVertices == 448 && nPrimitiveCount == 776) || //Head
7 H" A- r! U: H(nNumVertices == 804 && nPrimitiveCount == 1016) || //Body //SRG Option item 2 v* K' K# z# k1 Z: W
(nNumVertices == 109 && nPrimitiveCount == 110) || //Bulletproof Vest + ^) H# {! s8 g
(nNumVertices == 336 && nPrimitiveCount == 532)) //Battle Pants8 `5 A9 `, N- A# G* N
; ?5 Z/ r* f/ k# o6 w0 u
{
* ]) }. D0 s3 b% t* z0 T' N( OpDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);+ A0 _1 I2 }3 z) `
pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_NEVER);/ x6 |- N; A6 ?9 u5 v: }& g: I/ L
pDevice->SetTexture(0,Orange);
1 v3 i% @) t, h9 E$ H//pDevice->SetRenderState(D3DRS_FILLMODE, D3DFILL_WIREFRAME );* M6 w0 q* h2 w: H6 A
1 S! T7 I( H8 G3 L% {0 B0 ]
pDrawIndexedPrimitive(pDevice, pType, nMinIndex, nNumVertices, nStartIndex, nPrimitiveCount);
7 [4 R2 V% u; ]0 o- l! w' Y+ x6 @5 [3 \3 R7 {( g- b9 g' M. Y
//pDevice->SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID );' K( X. m' ~ S" o& T3 O) C
pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);
, ]( C! }" y' g, L( M2 Z& y8 l# t- gpDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_LESSEQUAL);4 @6 Z: D/ _ h; f0 k' `' ]
pDevice->SetTexture(0,Pink);
$ K( l3 O5 \; G} . ?+ S; `/ b1 v: d
/ E* V7 _; ^ fif(m_Stride==40 && texnum== 21300174)
7 \4 k/ |# I" C; |+ n; i# x{$ _4 G! Z0 X9 n r
pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);0 u# p9 o! s% S2 B
pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_NEVER);
- l4 [9 U# q- `* p/ Z- NpDevice->SetTexture(0,Green);//GreenNade: j7 l+ p8 P& y1 S7 F+ I
pDrawIndexedPrimitive(pDevice, pType, nMinIndex, nNumVertices, nStartIndex, nPrimitiveCount);
4 \ G# ]: i5 T' T3 U9 z! tpDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);
x! s* q& F- c; | e5 o0 ypDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_LESSEQUAL);
, M6 L& O3 X2 o; J- @pDevice->SetTexture(0,Purple);
+ J7 J" @/ g4 v0 d) l/ D: e E' H}
/ ^5 L% e8 u$ r/ E. E/ r! ^! U: x" G8 a
2 _3 \) A. Y6 ]0 I. ^
if(nNumVertices == 158 && nPrimitiveCount == 131)! M, L4 G0 i+ y$ [: u# V9 D2 h
{# H" X3 r# B# |7 r! r* ]
pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);/ W5 c( { m& e6 }4 [. f: Z5 J
pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_NEVER);1 B* l' E5 x3 [* x- `
pDevice->SetTexture(0,Red);//GreenNade& q! I/ f1 [( w( |% t/ Z7 w. g# A3 q' i
pDrawIndexedPrimitive(pDevice, pType, nMinIndex, nNumVertices, nStartIndex, nPrimitiveCount);
, O( G4 e) U2 h4 r+ \pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);) @2 e9 X# Z+ U1 ^6 [! O- X
pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_LESSEQUAL);
+ ]2 O1 x; x& r+ y; H* N/ e; R# ?pDevice->SetTexture(0,Yellow);
' U( A! M _) ^. o/ W$ h}8 R( ~0 \* V) V/ C( u& K, t
& t! b$ U' J8 Q& V- H& }+ I
if (nNumVertices == 171 && nPrimitiveCount == 143)
4 C2 A% c3 w: q{6 }7 U, g3 i* S# _* E
& G* K" @9 |' f* W! DpDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);7 I- O3 w0 w1 r* Z
pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_NEVER);1 Z: x- G3 O! a5 X% m- C
pDevice->SetTexture(0,Red);//GreenNade4 D& G% Q) O- R9 H6 g; `
pDrawIndexedPrimitive(pDevice, pType, nMinIndex, nNumVertices, nStartIndex, nPrimitiveCount);) P* t: H/ z, c t4 ~
pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);
1 `3 y1 w3 D) @0 vpDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_LESSEQUAL);2 V' K; _; I7 i8 d6 {) U
pDevice->SetTexture(0,Yellow);/ t, E8 p1 `1 `# ~/ m1 E
}
( h5 F+ o7 S1 r( [* J! V" P1 ~' S( S( P! u' V" d/ I
- {# p4 A& E- d) \
, y, S! h( ?4 \( U; j$ j
if(m_Stride==40 &&//face,mask etc...
1 g8 T3 ~, F0 Q(texnum==36700612) ||# _) A0 U0 v+ q; U' r! N
(texnum==9600172 ) ||
" Y) p; u- @ q# P7 r7 W8 q(texnum==14200236) ||
7 E: g1 m( a3 Z# L, I' G! N6 ?- W(texnum==37800552) ||
7 l6 x! g! Z8 P5 g5 \' j* T1 d4 |(texnum==28100486) ||
g0 d' ^ Q- t5 z(texnum==35500568) ||
" Z% _% j1 W: s' f(texnum==2200024 ) ||
0 P" p6 n, X' X, m6 h+ o(texnum==16200243) ||7 p- o! r' W3 N4 T" E) s
(texnum==31900466) ||
* ^2 j3 ~* H0 q+ [8 p' W(texnum==19300342) ||! l9 d6 l- A; Y9 n3 ]" t
(texnum==36200604) ||
9 i$ ^# C9 c9 Z% u(texnum==21300290) ||4 b7 r% C9 A7 j) O! }) _3 W
(texnum==35700558) ||
& k. F- w$ F1 H- H) r1 a* Z(texnum==22100396) ||
9 y' S7 N `; ^, F/ ?; e(texnum==36100604) ||
' t' n! v7 Q' F0 P0 }0 m' x. T4 }(texnum==27100464) ||; Z8 }3 H0 ?. |1 T" {/ p' p
(texnum==11400180) ||
/ ]; B- d0 e% I9 u q- y+ i(texnum==34900580) ||
- m' N, ^+ E6 k1 I# k4 t, N(texnum==13200212) ||1 Z( u) k% r% ^
(texnum==34700538) ||' D8 O2 l- F2 F: L" [6 b( U$ x' ^
(texnum==19500352)&&
8 L V* e8 t0 q(nNumVertices == 448 && nPrimitiveCount == 776))3 h" ^; m6 J& R. M5 s) o. b
, d/ h# t, ]! A0 N9 v5 B! O{
" o J& w' J1 [9 r$ t$ {6 a+ i' ]pDevice->SetTexture(0,Blue);
; e, z% O3 l. B6 r}' C0 m/ W2 Y( F0 S' `
: D- p) p* q0 C2 A1 F! w0 K( C' u
6 ~' S& O: _: Z% ?( S* x9 I' t; A{6 N9 g" g0 ~ G" \# v
pDevice->SetRenderState(D3DRS_FOGENABLE,false);, B# w1 `8 O3 g4 y- o! g/ t
}$ y% d: I! ]+ G: l- o, x
9 G6 ]% s$ e2 A' e
/*Logger
2 e7 i% a) a( y( H5 |if(m_Stride==40){
# [/ }9 i0 i C, q
: W5 s/ E* e* B' g+ h [
. A. O* ]9 E" r) r, B0 x' o/ k$ l" fwhile(GetAsyncKeyState(VK_NUMPAD1)&1) arrc--; //Used as manual index for adding textures to delarray, `4 w. L; V4 x7 w4 c) c; P9 R
while(GetAsyncKeyState(VK_NUMPAD3)&1) arrc++;5 \$ A5 p4 W- W# ]
bool alrdy=false;
" Y3 D+ S4 E5 C9 p! cbool inarr=false;
3 M; M3 N" W/ p- K# V% Z1 N# A N' _9 g: a1 _8 z5 V6 N. b
if(texarray[arrc]==texnum)$ d+ K W. D/ u
if(delarray==texarray[arrc])1 b1 ?4 z. n, L9 O. G
alrdy=true;
: x q ?# ?; T9 J! w* ufor(int i=0;i<dcount;i++) //sees if said texture is in delarray
3 q1 `4 K- }/ lif(delarray==texnum)" _) p9 I# v/ t' ^+ ^( D4 s
inarr=true;
4 p1 n# ~- P' y! N8 _if(texarray[arrc]==texnum || inarr){ //If true, color model differently, `4 Q, I Q2 W8 {4 Z! ]- p- J6 D
LPDIRECT3DTEXTURE8 texCol;+ B- b; c1 A( D
DWORD dwOldZEnable = D3DZB_TRUE;
) G7 W+ Y% B( Y1 [, J1 gpDevice->SetTexture(0, NULL);) ^4 j! e+ W# I2 e4 I+ J6 b
pDevice->GetRenderState(D3DRS_ZENABLE, &dwOldZEnable); ! A. q2 N3 a. e- S% a
pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);5 w7 T: r4 q9 z4 [5 d" B2 }
if(alrdy) //Different colors for selected models that are already being logged (For removal from array) c$ T2 K4 g- N5 G; h+ e/ E( b ^
texCol=Blue;
6 V: ]& A0 ]1 _else/ c) ]* N- {0 c4 z" z$ M+ \ L' f
texCol=Red;
) Q3 X9 H$ t! s& GpDevice->SetTexture(0, texCol);( f+ i9 p0 l3 H9 u
pDrawIndexedPrimitive(pDevice, pType, nMinIndex, nNumVertices, nStartIndex, nPrimitiveCount);! b4 r/ l: G/ c' |
pDevice->SetRenderState(D3DRS_ZENABLE, dwOldZEnable);
1 p% E! g# S) L$ `; p0 V/ J& g9 q
}" k3 ]+ Q+ `- o9 K6 P6 q: ]3 f% q4 {* {
}
1 i5 H! S: l/ M2 v6 uif(GetAsyncKeyState(VK_F5)&1) add_log("Logged tesx: %i", texarray[arrc]); //F5 will print currently selected texnum to logfile
7 j2 {+ `7 r5 G; K, xif(GetAsyncKeyState(VK_F6)&1) { //For adding/removing textures to array
* E! ^; W- W) ^* W5 mbool inarr=true;6 ?- s* Z4 Y6 i: Z
for(int k=0;k<dcount;k++){
( x, G2 k& ^" Y# V; d, t0 Kif(delarray[k]==texarray[arrc])
3 \3 I" b0 W! P{. a6 i; o' [, m) T. |# B' p W
inarr=false;//Found selected texture to already exist
$ |. a) }7 v% K. C- V9 Q9 N7 {delarray[k]=0;//Delete texture
* x( z' I; M% V8 U. i; `6 ~% N2 Jbreak;//Cancel loop
9 G0 {2 w6 F8 P8 `' `}
% f' t5 p. S$ s1 j. k0 k. N}: G) @* I: B, O! j3 `4 @# \
if(inarr==true)
7 t! L' I0 K) Q7 i( A{
, K1 _/ K8 w* h! v4 e5 l! Odelarray[dcount]=texarray[arrc];//Add texture
: n: W( j* U! e3 zdcount++;, _2 V+ k/ _3 c
}& d; n0 u, B8 b) t$ l# g" w: H+ N
}8 \2 e3 a* _+ H. r1 {
if(GetAsyncKeyState(VK_F7)&1){2 ~% D3 D) K8 {; ?/ i
int total=1;
6 ?9 f! u: X4 O: ~add_log("omfg values?!? {");/ s- y: z$ t+ a7 ~& c
for(int x=0;x<dcount;x++)//Loops through all recorded variables and prints them in a nice array based format9 z! N }3 o/ J! {: j
if(delarray[x]){
8 v0 ^3 U e. o C5 radd_log("%i,",delarray[x]); //add_log2==add_log but without endl' R) U5 ~, V/ S4 s
total++;% @) k5 K* \9 S
}. d; d7 I: q! j; ]; Q) ~
add_log("}; %i variables in array",total);
* }& B4 \ K3 T9 d" K/ p8 B}
: I5 Q3 E% S# V( @$ @9 ~/ I1 [bool found = false; //THIS PART CREDITS TO KRYPTEC
8 K/ n6 z k0 F" K Ufor(int y=0; y<arraycounter; y++) //THIS IS HIS LOGGING FUNCTION j, w3 v; @: J& H! S) A
{
; E6 I( K" `8 Wif(texnum==texarray[y])found=true; //I JUST CREATED AN INTERFACE FOR IT
( D) W+ Y1 z5 u8 Y7 Y}, l Q* K( u5 I# H: d+ t6 ~
if(!found && arraycounter < 1000)' X& e0 s8 ^2 e. H' N2 Z
{: X. m6 v7 x% E
texarray[arraycounter]=texnum;$ F4 o1 Z9 y9 E e( O
arraycounter++;; v A8 E" M$ M2 D: L$ ~) U. H! X& \
}*/
, R: ~' R' A# J
$ p z. G1 C+ I; |8 |. o1 w5 T0 i% x$ i
3 i& Q$ I! R. V5 W1 Z# s}
/ _6 w5 | x& L! V. i: Z4 S" treturn pDrawIndexedPrimitive(pDevice, pType, nMinIndex, nNumVertices, nStartIndex, nPrimitiveCount);
% R" A3 t! C! e! h. P}( i$ t! K2 U, M! U
//=====================================Dip_End====== ================================================== ===================//" a; R7 n& p8 C+ ?3 _6 J3 J; W2 m# s
9 p3 K6 s- Q, B5 N7 G2 |( y% h+ X- O8 x3 Q, o/ `7 T! l
//=====================================Sss_Start==== ================================================== ====================//7 P9 x% M. R" d/ L9 N% y- k
typedef HRESULT ( WINAPI* oSetStreamSource ) ( LPDIRECT3DDEVICE8 pDevice, UINT nStreamNumber, LPDIRECT3DVERTEXBUFFER8 pStreamData, UINT nStride );
) _6 R& Z+ k0 q: _' R2 C6 MoSetStreamSource pSetStreamSource;
0 c/ Z1 A$ g- C# l
3 d5 s% m, i' O6 kHRESULT WINAPI mySetStreamSource(LPDIRECT3DDEVICE8 pDevice, UINT nStreamNumber, LPDIRECT3DVERTEXBUFFER8 pStreamData, UINT nStride)
+ B; t' @3 l( t/ n, |. A{, g+ l: ~% I4 T! ]( R) m6 N
if(nStreamNumber==0)
9 z* f$ Z9 V- _' X1 n, Xm_Stride = nStride;, {0 k& c: u1 ^1 N0 s, e
7 M. o" r7 H5 ~
return pSetStreamSource(pDevice, nStreamNumber, pStreamData, nStride);" [1 u0 f9 }+ o, Z2 o
}( O9 t1 U9 }0 J' U1 A0 f* c+ @
//====================================Sss_End======= ================================================== ===================//
, v( d2 E+ e& P4 I6 D. c! K! n! P- ^/ o+ }
//====================================Svp_Start===== ================================================== ===================//2 c1 i4 o' W- i0 O) }0 V
typedef HRESULT (WINAPI* oSetViewport)(LPDIRECT3DDEVICE8 pDevice,CONST D3DVIEWPORT8* pViewport);# `6 y, d# {9 y+ K! r: y
oSetViewport pSetViewport;
- { X# e. V0 R- a, G% c% f, F' l m4 r0 ]' {
HRESULT WINAPI mySetViewport(LPDIRECT3DDEVICE8 pDevice,CONST D3DVIEWPORT8* pViewport)
, o, w9 A' A# j$ i( }% H{' c. ~7 G" o, s3 ?5 T7 \/ E6 H
ScreenCenterX = ( float )pViewport->Width / 2;' m# w! ^9 {# l- I+ R+ P
ScreenCenterY = ( float )pViewport->Height / 2; / J8 h6 f; z) g' }5 P" {
" x! L; ]9 w1 _1 I K4 q. \ A( D1 ireturn pSetViewport(pDevice,pViewport); h) d* t s6 S$ b4 Z" c* M; l1 e
}
! H! U: A7 ?2 P* Y0 u, n" Y//===================================Svp_End======== ================================================== ===================//
: F0 Y. u. A- u6 q* t- m7 @7 Q/ C3 m4 n* h' v4 L+ h
typedef HRESULT ( WINAPI* oBeginScene ) ( LPDIRECT3DDEVICE8 pDevice );
& r. C3 }) _) Y1 _& h) g' S9 CoBeginScene pBeginScene;
' J2 f2 z! `9 \2 M2 s4 v& G9 [" G1 {4 I% Y1 F$ _# [; J1 R# p6 @
HRESULT WINAPI myBeginScene(LPDIRECT3DDEVICE8 pDevice)+ x# B4 p( A7 f
{0 n0 D& Y" Z" k; R# `7 t
if((GetAsyncKeyState(VK_F6)&1))
, B% ]2 e! Z: ]{
5 }1 O I+ m, T1 l5 U, i, z9 hpEndScene = (oEndScene)DetourFunction((PBYTE)dwEndScene, (PBYTE)myEndScene);
' V& S* g1 u* e0 \pDrawIndexedPrimitive = (oDrawIndexedPrimitive)DetourFunction((PBYTE)dwDra wIndexedPrimitive, (PBYTE)myDrawIndexedPrimitive);: W2 w N9 r4 i$ e. k% F
pSetStreamSource = (oSetStreamSource)DetourFunction((PBYTE)dwSetStrea mSource, (PBYTE)mySetStreamSource);
; B4 E4 E& E5 g1 j, k$ \pSetViewport=(oSetViewport)DetourFunction((PBYTE)d wSetViewport,(PBYTE)mySetViewport);
: ~6 z. Y. P' I5 F9 T4 s* r- Q}, r2 q4 o8 v/ m% I! p1 \9 x3 N/ k4 h1 N
, ~1 O! s# k7 g |- zreturn pBeginScene(pDevice);
5 @. G5 g! p" K& M}
- B; T+ f" q+ o m3 s2 C9 K; r3 ]8 R3 G, I4 P+ S% _7 N" a
9 D) I- v! V: P2 `, D- \BOOL WINAPI DllMain ( HMODULE hModule, DWORD dwReason, LPVOID lpReserved )3 X8 e! a A: }$ k' U/ [
{/ a8 i- c5 B' k3 e
DisableThreadLibraryCalls(hModule);
( T( C+ h. ^% p4 g. H% {; c
/ V( [; {7 Z# z: w: W8 P* t0 ~if ( dwReason == DLL_PROCESS_ATTACH )& G |# S6 ]8 e- E
{
* C0 m) J. {: N9 f; ? z+ v9 g% `3 c! C
//=========Log==========================//
9 M' B1 u8 G+ q- O4 [1 tGetModuleFileName(hModule, dlldir, 512);
& _: a1 `; `& u N% ^for(int i = strlen(dlldir); i > 0; i--) { if(dlldir == '\\') { dlldir[i+1] = 0; break; } }- l' V" Q/ C" i/ J
ofile.open(GetDirectoryFile("log.txt"), ios::app);
7 o6 S. K4 L: V& L% T& q: n//=========Log=========================//9 f' K, u$ m' C( J. P3 Y& k1 {
# Q% p4 }7 M/ @pBeginScene = (oBeginScene)DetourFunction((PBYTE)dwBeginScene, (PBYTE)myBeginScene);4 _) j; M [+ K6 H
pEndScene = (oEndScene)DetourFunction((PBYTE)dwEndScene, (PBYTE)myEndScene);
9 V0 x$ h5 g. ^pDrawIndexedPrimitive = (oDrawIndexedPrimitive)DetourFunction((PBYTE)dwDra wIndexedPrimitive, (PBYTE)myDrawIndexedPrimitive);& w8 O# r5 o) x# p" r
pSetStreamSource = (oSetStreamSource)DetourFunction((PBYTE)dwSetStrea mSource, (PBYTE)mySetStreamSource);1 W# D; _: e& h
pSetViewport=(oSetViewport)DetourFunction((PBYTE)d wSetViewport,(PBYTE)mySetViewport);( D3 m# m' O8 \% o6 U k W5 M
* p% [$ a- @# u) M+ y- @2 p4 r3 T, F$ e
}4 b2 P, D6 F- N6 r* Q/ Y- Q: A
return TRUE;! T% V4 f/ u0 D$ j- \- s* [* ^
}
8 T. \; q4 p! W1 O( s$ `0 V0 {4 [; O9 @4 m3 E
: N6 |4 z( k$ Z. I) F
Log.h (The header File):
d/ b+ j" \4 F0 c5 w; h# w, ~; o: ^
) d* r2 A3 S4 D9 z7 r7 R$ J1 A p#define WIN32_LEAN_AND_MEAN
5 q! v; {, K$ l7 w- g8 r+ {8 e6 i& D
#ifndef _MAIN_H
# R- h; y& U& A#define _MAIN_H
" Q- x9 n1 r2 p1 ?8 Q7 o! }3 v( ]8 K H8 h/ X- y4 _ T
char *GetDirectoryFile(char *filename);
$ l+ V' ^; n- D: A0 K" [void __cdecl add_log (const char * fmt, ...);
! X1 w7 c- V; \5 ^#endif
/ ^% S9 R3 M( m( n- }9 h6 o8 X- X3 L& F9 z8 F2 s
Now after you have built your wallhack you will be able 2 find it in :, F. F: t; ~( W6 J
C:\Users\Your Name\Documents\Visual Studio 2008\Projects\Wallhack\debug (something like that)
. d3 |/ [( k7 w2 k* B: Y
0 y0 w& m% V2 _5 }$ lNow I will show you how to make your wallhack undetected:
4 K3 m4 m( V% Z4 F' J1. Download D3d hooks# D5 M% g( A0 u2 \
2. Open the file that says "create device code made by me.h"
' Q Y' x2 S% |' U3. You will need to make another header file in your project and then put name it create device and paste that code it.
! I! n% |/ y# I; S1 `9 y0 s4. Your wallhack is now undetected.
) E$ s" C/ p4 V- O- c% T9 X( Z
! Z9 l8 }1 b: Z0 `4 R* A# d6 GCredits:
, r- }5 v. B. @/ o1. ME FOR THE TUTURIAL
0 A) L6 k P9 }+ |5 B3 N0 L2. THE1FEAR FOR THE VIDEO ON HOW TO COMPILE THE SOURCE CODE7 o$ o% B+ R2 A1 A: n3 R
3. FATBOY88 FOR THE SOURCE CODE
n) g2 T( w5 y2 \. g# J& D+ L4. THE INDIRECTX I JUST FOUND :P
" A b4 g$ ?, t0 }$ Z& z) P( E0 f0 J+ Y' u
Attachments:" N) A7 O* m0 p
D3d_hooks: http://www.mediafire.com/?qzz0gwdjvj5% u* _: d$ H8 K; l# Z
IndirectX: http://www.mediafire.com/?gimzgmeny11
& `5 K0 x. i4 O; g) ?9 B* j- `Microsoft Visual C++ 2008: http://www.mediafire.com/?vmyjjnk1qj5, j6 q' F% r! p4 I; Z* H/ R
SEARCH THE LAST ONE UP9 A1 ~# K6 \ ?# V
__________________1 e0 Z7 G8 ]. I ?# M2 @
p. l5 ]6 [7 V% K <---------- WALLHACKED |