原文
& _, k) f6 e9 x F! o* s4 phttp://www.descipe.net/forum/sol ... -your-wallhack.html
6 _; ^% x; b U/ h$ \" H- m6 {
# [& \8 b1 {$ h8 U9 H视频教学
$ c! A, H* H6 r# G. a! yhttp://www.youtube.com/watch?v=6b5XMzT-b_U
+ `1 l' [2 c2 Q. x( }+ U( N/ `) n. r
HomeHome User CPUser CP FAQFAQ Members ListMembers List CalendarCalendar SearchSearch
X5 J, y) X7 u M# p: U
) ]) `1 e; ~7 t& K Hello shane007,& u' \' M' @# y4 k0 ~
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. ( o! ~- v; q, M0 w1 f# v4 I9 C
! j) t1 b) g% ^+ i+ t5 Y; D
Why not start with your first post today and become an active part of DEScipe.net now! , ^: ]6 t/ n. ?! ~) @( k
. x& @: |; T) @7 P6 g0 X5 w
1 u8 ]# Q' n1 D- N) Z
+ v" p6 X! o3 n" k: q DEScipe.net > MMOFPS's > Soldier Front > Soldier Front Cheats $ \# S. M' a' i
How to make a wallhack and how to hook your wallhack! 2 O; p4 B W ~
Welcome, shane007.
' z+ _5 k! W& d5 w: B9 cYou last visited: Today at 03:55 / l- ~2 h1 A" ?# G _' ?2 ~8 h
Private Messages: Unread 0, Total 0.
% o- L7 @& @) ^1 T, A( bCredits: 200 [Check]
4 k9 B" V: b' B/ q e. Q' A6 h
3 g/ ]) a7 A; i; `! ?, U' ~9 x8 E0 KHome User CP FAQ Members List Calendar New Posts Search Quick Links Log Out 2 I- `, W$ c( E9 _. S" t. @
) l8 F& w* g: Q
- ]( M' `$ B: t+ {1 l
! p! d c" t( k, N+ E& Y. `Search Forums
* _5 ?( t& H$ ~1 d 0 r/ `% Q8 [7 [+ g' c
/ l) k" g3 c, L
Show Threads Show Posts 1 s% \0 a5 Y# n
Advanced Search & f/ P5 W1 M4 ^, n
Find All Thanked Posts }4 R7 v2 j% t: z
# I' B% E4 a3 T2 {+ M" Q5 D+ EQuick Links . B ^+ r' [8 x4 T5 D
Today's Posts 4 E T6 i/ k7 \: Z
Mark Forums Read ' J1 m0 F& |0 K
& i7 y6 {) |$ gUser Control Panel
* H/ R L7 ]( l; h% }4 YEdit Signature 6 U/ b5 m9 c% D6 _: A6 Z$ h: y& r! \
4 z6 ]1 t2 W3 {9 k7 E2 NEdit Options 2 c. g7 C7 E# p0 j/ t3 g0 Q: h; F
Miscellaneous * [" u4 a) e5 }6 n7 Y7 K
Private Messages
1 e0 h1 ?7 ~- z( _- w7 zSubscribed Threads
! G& l! l* N5 ~! _' E
5 N4 \$ X4 C+ Y7 g( N8 M# LWho's Online ; i' S0 r; j4 d5 _, L% C
+ i( v8 f$ c t( x( S$ `Go to Page...
6 m' _ A5 c, x* z) w8 e' r! W ( B$ \; f+ A/ i
How to make a wallhack and how to hook your wallhack!
' |) [! X0 r2 A7 d5 b) x5 SThis 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. ...
1 a' g3 O6 f" j5 O0 j8 C( l t `4 A0 C8 k; K
Poll: Was this helpful?
8 K5 I4 O/ H1 d2 j& L; q6 DPoll Options
$ J% b& z- _ | t; b+ n. ]9 X2 dWas this helpful?
F& d& j6 e: \, w+ ~8 C% dYes, I WILL press the thanks button/ _5 N! R: m S1 V" v
No, I am a failure # t: h9 M3 Q/ O
View Poll Results
0 A* t8 w$ ~$ q: {+ Y3 j2 \
# @, _/ @4 V" s1 `8 l Page 1 of 3 1 2 3 >
" ~' V* ]; W5 R9 x8 p9 U
8 X$ P+ |; P# j5 A+ D- O! V View First Unread LinkBack Thread Tools Search this Thread Rate Thread Display Modes
6 V* V1 v5 x( r0 O
" {% b" Z/ x$ D8 v+ P( J- \+ p3 c# b" q
) }0 H2 x3 h% w4 j 05-02-2009, 20:49 #1
: x3 y4 K+ \2 O& Ikillax9
) S+ Q8 ]" d2 GPunk o0 X" w) E) O/ d% }9 b+ U1 Q
2 O4 E# L D! a8 t
# {" ]/ k3 h: O 7 @& Q5 e! P3 i1 E( S" A% I3 b/ s& q' R
1 x+ p" F8 c, g/ S/ l5 GJoin Date: Jan 2008
, m* ~3 X5 P9 r ]$ ]9 o- \Credits: 2,701 [Donate]
+ Q$ ?$ \9 ~( h! ]8 k4 k; SPosts: 103
& t& ^3 v+ u S9 K5 o" HThanks: 103 y* p# G6 s2 ~9 F+ K. S
Thanked 48 Times in 25 Posts How to make a wallhack and how to hook your wallhack! % ~8 X0 ] z: A" C3 ~* y$ o
1 o4 `2 q0 o( a: z--------------------------------------------------------------------------------+ {; m6 S" [% w
9 d/ ~) V6 E* @" E' E# |5 gI will be showing you how to make a detected wallhack and then hook it for it to be undetected.* p2 f0 E( V& N% O% h& l
Possible Undetected Methods:
( d$ ^9 T* ^+ ^, Q) c% K6 Y* W) T# g1)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.
" ?1 g2 H1 \+ }' X5 N1 r5 g5 n2)another way **** it hack GG.
0 ^( Y0 [* G3 c& D- E3)breakpoint hooking;doesnt change memory... well changes debug registers.# H0 g; N* d# d' ^' b
4)code cave the hook int3->Jmp then in the code cave->Jmp(detour)d3d functions ->jmp back to original flow ;Hook hopin
+ F) }* W: }9 |4 t) x% I0 d. D4 q! o7 X; }
Vtable:0 q6 {( [7 O; Z
it wont work for vista its not a vtable hook =)
' P; W5 r$ }" e. S6 ^6 [) o; c8 D( f& D5 C0 U \* h
the reason why my older version worked was cuz it hooked
! R/ A3 w* H# [$ `Createdevice->pointers to the functions
, ~! y6 x: m& Q9 Z/ M: N; o; h" S% d5 a& w; @/ U9 x
kinda like a class or a struct.
; o% v/ k2 H4 S: u' _7 P/ G) ]3 x3 y+ h
. g- {2 \6 ?3 n5 r; ?8 A, u2 k3 oand 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.
% \' W" @9 E2 Y& ?) b `% l, |- Z5 ]( E' ?- l/ y3 L
3rd maybe- some games recreate the device when a map loads...like BF1942.+ N2 L. P" \& d3 h9 i& ?
2 _* ~" B; T5 S* UThings needed to do this:( R' e4 u, l9 V. Z5 J2 m( Y
1. Microsoft Visual C++ 2008
% T5 p2 \6 g1 _ G8 B0 W2. DirectX_SDK_(Summer 2004)
& `4 i9 c& }) f$ r" F, l1 V3. D3d_hooks
7 b. |" L8 T. n* X% z: |$ w4. IndirectX
7 n# ?2 D8 U/ UI HAVE ATTACHED ALL OF THESE FILES AT THE BOTTEM
: f5 j6 y% @( ~3 c; E" t
9 g. \) \& X" [5 v* m. NNow most of you don't know how to compile a wallhack so watch this video and you will compile with no errors:
- B) O1 J: Z* K: A2 O* b
/ X+ Y) d1 L" g! ?YouTube - How to Compile WallHack [Tutorial]
9 t- z) G; q/ l% \0 [8 i
9 V; L- K( B$ Y+ P- Y) A9 X- t m v' X& J' H% ~+ x9 a( U! Q
1 J. \+ Y3 j9 ` x0 hDetected Source Code:8 Y7 B' ]+ Q" D6 V
6 d) n: \/ W4 f& D( P9 |) f1 M#include <windows.h>0 C, E0 I3 Y1 T
#include <detours.h>5 Y6 O4 t- r# L; T& B
#include <d3d8.h>
; c) T7 z, F1 d#include <d3dx8.h>8 B9 f& e* i7 q' ]
#include "log.h"
/ z [3 f: C6 S#include <fstream>: ?5 Y+ P" E* z4 `
#include <iostream>' q9 W- F, W0 |. e$ _- ?
#pragma comment(lib, "d3dx8.lib")0 a) y; k) z5 [
#pragma comment(lib, "d3d8.lib")
# `! M Q( b4 Gusing namespace std;
0 Y: V" H* k0 ustatic DWORD dwBeginScene = 0x6D9D9250;
- e2 M. G7 i6 I, k7 o% Vstatic DWORD dwEndScene = 0x6d9d93a0;
. P3 r2 w5 h U, |# gstatic DWORD dwDrawIndexedPrimitive = 0x6d9d73a0;; s: [0 A- F& x4 I/ S
static DWORD dwSetStreamSource = 0x6d9d6760;
) ~6 k. }4 k- `+ ^static DWORD dwSetViewport = 0x6d9d5b90 ;
3 [7 G' `1 \0 }
3 C- E1 u+ ^( f1 ]# B+ q1 _
+ K/ u4 E5 Q9 P' @. z6 U oint m_Stride;
T; y4 Y/ _9 t# t$ B1 ?* A' _int texnum;
2 i& F6 P: h! Z! d8 hint nNumVertices;6 _: N0 @# b" }$ `, g
int nPrimitiveCount;
: L z. L; e+ p3 j( \5 R
" R. [# b4 p' J, ], Q' OLPDIRECT3DTEXTURE8 Red,Yellow,Green,Blue,Purple,Pink,Orange;
l, c( l: A9 g' V/ `% p) C, Jbool Color = true;3 V# r$ p; f0 M" h6 ]9 \
bool Logger = false;
' B: v) e f3 o6 |. h3 ]ofstream ofile;
+ Q' D% m V* {4 hchar dlldir[320];
+ z2 C& t8 K6 s; q' wfloat ScreenCenterX = 0.0f;7 s( P3 b1 |/ O8 O# ~( s Z
float ScreenCenterY = 0.0f;5 C# e* t7 P+ f( G$ p# j# s+ K
bool xhair = false;7 Q/ l. t" d" o1 k% V
bool WallHack = false;
s( y" {1 A G$ F" Dbool WallHack2 = false;
: j3 L! a* d- s3 D6 B) w" e* hHANDLE hand1 =NULL;6 _( w s$ w; _6 b' r" E+ x3 f
HANDLE hand2 =NULL;+ k8 D- M6 q& |3 N1 Y: X
; V* @& G' N: k3 d4 U4 m9 q8 ZDWORD bytes;
' ]& G0 r. P8 S, ?1 _! O! t" K: G9 P
7 f9 r# y: K( E" F* f# R//Logger
; k* F$ f3 U5 b' I9 s: A* iint texarray[1000]; 4 P( c) s& D P
int arraycounter;
$ f& p8 E, B# i9 n x0 O/ P2 `int delarray[500];
! x9 E8 s0 h2 j1 D3 Yint dcount; , p, O. y- G4 P* `
unsigned int arrc;
3 b0 i9 |6 I% J8 @int i=0;8 y5 J ^* v, ]4 ?
+ q! W' a7 u0 [1 q3 W% w
' `/ Y9 R7 E* _ l) h vD3DCOLOR redt = D3DCOLOR_XRGB( 255, 0, 0 );* v" s8 e) U: w# y7 e: ]
# ^) d; r u; o7 a$ k
2 c+ s: J( [: l( i- }# S0 cchar *GetDirectoryFile(char *filename)
" A& f9 [3 u. W8 |{1 H, ?$ o! f0 `. [* I, C# ]
static char path[320];
8 i' [% K' Q, Y6 p6 h$ j% ?strcpy(path, dlldir);8 L0 f/ _. m+ {
strcat(path, filename);* t' Q3 x D9 u$ k; R5 ]: X
return path;
$ c3 l5 E3 r; g6 z& ~8 p" K- \}$ _& _0 f- S2 e: H: v, _- f
; {, z! M3 Q& n# c8 @% l
void __cdecl add_log (const char *fmt, ...)- z3 h2 f. y, p( D/ d: I
{
6 P1 H% M# f0 X$ \% oif(ofile != NULL)
N0 _0 b3 c" X+ M{- N5 f) _" C) ], o0 y1 [3 N0 T" g
if(!fmt) { return; }
% h. R4 U( \' p% W7 U# k' f9 S y
va_list va_alist;2 ?0 t! ?3 I" |0 W+ G
char logbuf[256] = {0};& r. `1 }2 o) t7 U2 ]; B
% c. g! H8 b9 B5 T1 x; F& P1 s
va_start (va_alist, fmt);
' V! Z0 O, K* h0 f/ g1 m# O_vsnprintf (logbuf+strlen(logbuf), sizeof(logbuf) - strlen(logbuf), fmt, va_alist);
+ _; V6 J1 m: a% D& Nva_end (va_alist);: ^7 B2 ]& q; C
+ W+ p% G3 m9 o' D
ofile << logbuf << endl;
5 Z' Y- W8 u/ ?& o}
6 l. M" f, v: k1 b3 `5 {, u}
. S# E5 f/ T+ Q& F9 X/ ^/ V; J- M7 K* d3 @: s) ^3 {" `
HRESULT GenerateTexture(IDirect3DDevice8 *pD3Ddev, IDirect3DTexture8 **ppD3Dtex, DWORD colour32); x6 y8 [2 p* Y" i
{+ P2 [: u: y$ w! Y& J0 B
if( FAILED(pD3Ddev->CreateTexture(8, 8, 1, 0, D3DFMT_A4R4G4B4, D3DPOOL_MANAGED, ppD3Dtex)) )7 l9 w5 J3 k" d8 J" D
return E_FAIL;4 z/ S2 r1 n9 q- ]3 K
' c' m+ f& n# f" }& M" FWORD colour16 = ((WORD)((colour32>>28)&0xF)<<12)
( L/ h! v! e3 M; u$ T3 `5 s7 s|(WORD)(((colour32>>20)&0xF)<<8)) {, o1 o, z6 ^8 M1 `. f
|(WORD)(((colour32>>12)&0xF)<<4), P2 z3 e7 g$ U/ y$ t
|(WORD)(((colour32>>4)&0xF)<<0);; {$ O+ V, F* I* T. r7 W
3 m( b! I. q) G+ e) H3 ^- V+ F
D3DLOCKED_RECT d3dlr;
- f C6 R8 V% |2 A! T3 V(*ppD3Dtex)->LockRect(0, &d3dlr, 0, 0);
/ w; e w6 K0 F# I' p1 `1 WWORD *pDst16 = (WORD*)d3dlr.pBits;
1 g2 u% N# `/ B2 h9 {$ z8 Z$ Q- G) R6 Q+ U0 `1 ?, d
for(int xy=0; xy < 8*8; xy++)# V7 c; ]6 C+ O( s$ N) p
*pDst16++ = colour16;
( R# j# u1 O }+ O: P9 K# q! D1 C8 Q
(*ppD3Dtex)->UnlockRect(0);2 q" X( H& J7 [ q+ {9 H2 T
4 }* Z- w2 t7 l+ d6 lreturn S_OK;& E7 D" W5 ^* x
}
4 R2 f1 j q+ E1 j7 d B" C# {7 H( h, a4 K
3 u+ T) S' W3 _ o
//=================================EndScene_Start=== ================================================== ============================//
# E; f) N3 x( vtypedef HRESULT ( WINAPI* oEndScene ) ( LPDIRECT3DDEVICE8 pDevice );
( W! B K. D0 D" C8 z$ FoEndScene pEndScene;
, p5 e% H# w5 j4 h9 C, g9 k p& A
0 L0 l8 V# W* h$ z! ^( jHRESULT WINAPI myEndScene(LPDIRECT3DDEVICE8 pDevice)
2 X$ x/ k* e3 b{. n/ W8 f G$ O( Z% Y
if(Color)
& {6 Q( _ I5 U& J( n/ ^8 w{ 7 N/ W1 K4 l5 J; g1 u
GenerateTexture(pDevice, &Red, D3DCOLOR_ARGB (255 , 255 , 0 , 0 ));! O& h. ?. C7 u6 `) l0 l# m
GenerateTexture(pDevice, &Yellow, D3DCOLOR_ARGB (255 , 255 , 255 , 0 ));
4 g, n$ M9 Y& nGenerateTexture(pDevice, &Green, D3DCOLOR_ARGB (255 , 0 , 255 , 0 ));
! O [" { ~' x9 L. yGenerateTexture(pDevice, &Blue, D3DCOLOR_ARGB (255 , 0 , 0 , 255 ));
2 c9 _8 L+ q. l H% B: I3 ^GenerateTexture(pDevice, &Purple, D3DCOLOR_ARGB (255 , 102 , 0 , 153 ));
% h* j2 T- i) b9 @GenerateTexture(pDevice, &Pink, D3DCOLOR_ARGB (255 , 255 , 20 , 147 ));
; z1 ~8 L# p& V! uGenerateTexture(pDevice, &Orange, D3DCOLOR_ARGB (255 , 255 , 165 , 0 ));. x; L4 q4 M( U: m& s l& Q
Color=false; % Z; u }( M! v E4 Q
}2 _; H1 F6 l$ E8 i; e
( R, t% R ]7 U) Q$ I. S9 Pif(xhair)/ Q* k; L2 ~ x: j$ G1 F
{
2 N$ r( f# B+ s9 i( LD3DRECT rec2 = {ScreenCenterX-20, ScreenCenterY, ScreenCenterX+ 20, ScreenCenterY+2};0 w1 f, b- V' i& x |! J) f0 k
D3DRECT rec3 = {ScreenCenterX, ScreenCenterY-20, ScreenCenterX+ 2,ScreenCenterY+20};
" G3 m3 w! P( |" z0 epDevice->Clear(1, &rec2, D3DCLEAR_TARGET,redt, 0, 0);) R+ @2 q$ l( H8 A
pDevice->Clear(1, &rec3, D3DCLEAR_TARGET,redt, 0, 0);
4 |% L+ _& ? ?* f- Z$ D$ j}
2 o: L5 [9 q2 v( t5 l- s: H! A' V$ }5 s% y' h5 }% S7 N# k3 ^
//=============================================UnHoo K_Start=========================================== ========//
1 R# e$ F" q+ @: k6 X0 `
7 w* Y% J: I: ^3 A) M: |* Q! Z$ x# Tif((GetAsyncKeyState(VK_F5)&1))
( ^3 F1 d# c, e6 H \{ ) t6 N! l" g4 W. N8 k7 A0 X/ Z
int end =NULL;
/ `, n& m( `7 q% m+ @ o% w; wint dip =NULL;. N8 ~ p- I' ]# S# Q$ [8 g
int svp =NULL;" u( R" Z# P/ N. U8 ~
int sss =NULL;
6 J1 I: ^6 l4 g! f8 q
; U5 M# x0 i3 N7 I
1 m( J+ ?% _) K5 }BYTE Unhook[5] = {0x8B,0xFF,0x55,0x8B,0xEC};//Original Function Bytes.# S$ Q1 j/ u! p& Z& g+ o
hand1 = GetCurrentProcess();" n) s5 Y, ^! b
DWORD dwmodualBase=(DWORD)GetModuleHandle("d3d8.dll");
- `1 ?7 o1 T1 f8 N& aend = 0x6d9d93a0;
: |8 `6 L1 {. z: N4 s) R6 zdip = 0x6d9d73a0;
, i6 g: D$ l' E7 `$ b7 t$ C1 wsvp = 0x6d9d5b90;& J, |8 J' I: E/ u
sss = 0x6d9d6760;
% G' ~( C: w8 Z; x+ W) \6 V
$ c2 l: E1 k( ^ lWriteProcessMemory(hand1, (void*) end, Unhook, 5, &bytes);
' C' K( \% d9 J+ dWriteProcessMemory(hand1, (void*) dip, Unhook, 5, &bytes);. D2 Y6 |- C- N7 c$ A3 L8 @
WriteProcessMemory(hand1, (void*) svp ,Unhook, 5, &bytes);
% @- L& ]: U% J+ ~6 B6 w( G+ tWriteProcessMemory(hand1, (void*) sss,Unhook, 5, &bytes);
# `/ y+ o4 H0 h7 L* b9 ]# t} , L# w# N/ z( t( D
//=========================================UnHook_En d================================================= ========//( p0 e6 ~2 S; Q
/ I* V, a t) n( _- k3 \% W0 r) z
if((GetAsyncKeyState(VK_F1)&1)){xhair=!xhair;}
6 w1 C! I$ j# f/ g4 C8 Oif((GetAsyncKeyState(VK_F2)&1)){WallHack=!WallHack ;}
, [0 G: V: L, n2 @; c% ^
$ X+ i. |5 E" E0 h1 Wreturn pEndScene(pDevice);0 s2 b/ y6 d: E0 H' [5 [! R- b
}
! z% g- G: C! E//====================================EndScene_End== ================================================== ========================//7 _. r- {" b+ [0 |
3 Y1 J2 v: P1 d& V0 i0 c/ c( H
% p, s& V* ?2 x, h# ^$ I3 o
9 i' m) Y% f1 f( i J) U' z
" @# N, ~5 V B3 h$ X//=================================Dip_Start======== ================================================== ==================================//- R' P2 C7 v) ?# } @
typedef HRESULT ( WINAPI* oDrawIndexedPrimitive ) ( LPDIRECT3DDEVICE8 pDevice, D3DPRIMITIVETYPE pType, UINT nMinIndex, UINT nNumVertices, UINT nStartIndex, UINT nPrimitiveCount );$ B) p& r+ r2 I: M$ Z4 E% ?
oDrawIndexedPrimitive pDrawIndexedPrimitive;
2 W# x- o* x" A6 a/ V, c2 O9 M( [+ d7 ~
HRESULT WINAPI myDrawIndexedPrimitive(LPDIRECT3DDEVICE8 pDevice, D3DPRIMITIVETYPE pType, UINT nMinIndex, UINT nNumVertices, UINT nStartIndex, UINT nPrimitiveCount)* T3 `% s ?3 e
{! n" B% \- @4 k8 A* F+ s
: B I1 W3 e8 r& j0 E
9 }; G: U2 R0 i u' V; i3 l, m6 @ }0 j# c& x& E7 {: I
/ @0 K- g. @( f# s& B1 o3 I- n' d
if(WallHack)
; M6 n& w( J& ?+ _1 Y9 x( D{6 L& ?, K8 x2 ]- P8 S( F5 A
texnum = (nNumVertices*100000)+nPrimitiveCount;
: R. M; H. M: A0 x0 M6 H! l. uif(m_Stride==40 &&
/ w) m* D: c2 O4 @9 E& t7 P4 O7 ^& ]2 v8 T1 P% p
(texnum==7500121 )||(texnum==8500105 )||(texnum==12400168)||(texnum==37000650)||
: a5 [+ }4 Y. t( ?. c(texnum==18000274)||(texnum==8800105 )||(texnum==36900650)||(texnum==19600314)||
. F$ i0 D7 N5 O3 V- T- M(texnum==21800306)||(texnum==7500121 )||(texnum==8500105 )||(texnum==12400168)||
% u" i5 P. }6 K" i& O(texnum==21800306)||(texnum==36900650)||(texnum==7 500121 )||(texnum==37000650)||
% r3 ?& } |) x- ?1 V1 Q. e(texnum==18000274)||(texnum==7500121 )||(texnum==8500105 )||(texnum==38000658)||$ s& J+ B7 t n4 p4 P) F
(texnum==22100268)||(texnum==62400752)||(texnum==2 7900456)||(texnum==45700654)|| " @$ f B+ y: ~6 v
(texnum==4800040 )||(texnum==83600752)||(texnum==33400477)||(texnum ==38100666)||
# {* S2 L% r# \(texnum==2800036 )||(texnum==62400752)||(texnum==29700492)||(texnum ==84900778)|| # I. B/ }, g- h# }( Y% D
(texnum==27500442)||(texnum==52100658)||(texnum==6 2400752)||(texnum==33600552)|| - o! @# _2 T) v$ l- j$ F, N
(texnum==44100646)||(texnum==18000274)||(texnum==3 7200508)||(texnum==45700654)|| 8 d( i/ c1 p ~; V; m& @
(texnum==37200508)||(texnum==52100658)||(texnum==5 2100658) &&
/ ~. l, A V# P. @+ b9 f
, y( i0 ?) N! O2 V% L h! J0 W+ G+ n6 |1 t; q% I
C/ y, C. C) j3 }7 R: G* P, }(nNumVertices == 100 && nPrimitiveCount == 121) || //Foot 2 N; j+ n3 c4 B O+ L
(nNumVertices == 105 && nPrimitiveCount == 168) || //Right Arm ( x% w: B% s' I$ V/ Y
(nNumVertices == 132 && nPrimitiveCount == 180) || //Hand 7 [# O0 `0 K5 n9 T5 U7 i
(nNumVertices == 159 && nPrimitiveCount == 200) || //Left Arm
! ~" s9 E' Z I8 @(nNumVertices == 338 && nPrimitiveCount == 534) || //Underbody thanks japennese guy =)
5 R. c1 }0 Y+ V* A. a//(nNumVertices == 448 && nPrimitiveCount == 776) || //Head 6 M0 ^6 k' B$ _
(nNumVertices == 804 && nPrimitiveCount == 1016) || //Body //SRG Option item
) j& h; T7 w* @3 ~( l: Z(nNumVertices == 109 && nPrimitiveCount == 110) || //Bulletproof Vest
2 q/ n& Y$ f( i3 Y3 c% `(nNumVertices == 336 && nPrimitiveCount == 532)) //Battle Pants
1 n4 N' \2 K. ]# ~% A' a
; M, h" v Q$ t, [{
1 K6 g/ x( F0 i6 r9 N7 M& PpDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);" R- |5 q0 o! P, L
pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_NEVER);
6 {1 k; x$ \. R* U* n$ upDevice->SetTexture(0,Orange);
' E2 l" C" n" J- K5 F2 }; D R//pDevice->SetRenderState(D3DRS_FILLMODE, D3DFILL_WIREFRAME );
/ r8 r1 A) }" ]+ J! `/ z9 D( G
2 ]" l! A7 R" w0 D$ B& [9 K" `% ?pDrawIndexedPrimitive(pDevice, pType, nMinIndex, nNumVertices, nStartIndex, nPrimitiveCount);
. D0 ?8 s4 W0 \. u8 q, d) z/ W% {" Q/ Q B
//pDevice->SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID );
5 I$ M+ H# d& ^: j& i7 wpDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);
9 ^+ [& S/ K, ?9 U4 M/ B6 Z2 XpDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_LESSEQUAL);; r1 [, a0 M. |: z! n$ V5 j
pDevice->SetTexture(0,Pink);
& v8 f% Y: j) e7 `0 }}
h9 }8 s1 W s- ]$ t+ }! ]# g2 D$ I
if(m_Stride==40 && texnum== 21300174) " _7 U7 B$ o5 j! _ s, x
{2 ]% k* \6 d# o
pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);) S# g6 K4 j1 V: P0 c
pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_NEVER);
- _) P8 ]8 I% E9 \* c( O5 }: e5 {pDevice->SetTexture(0,Green);//GreenNade7 o6 A9 s: s7 G V5 r% R: R/ Q
pDrawIndexedPrimitive(pDevice, pType, nMinIndex, nNumVertices, nStartIndex, nPrimitiveCount);
T ], u, \# q# A$ ] j3 ~$ jpDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);( a4 |/ f* {7 |" i g W
pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_LESSEQUAL);3 j/ }" S) U$ n) w" b
pDevice->SetTexture(0,Purple);
# O' ~$ r/ @& {# l4 n' }. c4 u}
# r0 N/ l+ [# e1 F* a, ~! ~. `; _. O! g& }9 Q d0 d$ i' ^5 c& h
/ T; k$ v& G4 i+ zif(nNumVertices == 158 && nPrimitiveCount == 131)( E5 D1 g! }* Z* D4 ^
{
( Q: k( p) Q3 P4 x2 j7 JpDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);
; h! P, P( \# y2 n z) }pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_NEVER);
4 y& ?3 O9 d) D' K. A" dpDevice->SetTexture(0,Red);//GreenNade" r! X" E r, q0 v
pDrawIndexedPrimitive(pDevice, pType, nMinIndex, nNumVertices, nStartIndex, nPrimitiveCount);
. j8 J9 S' t/ N1 }5 K; gpDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);
( z8 q4 L" c# B2 K3 HpDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_LESSEQUAL);
( L% Q' f1 l C9 kpDevice->SetTexture(0,Yellow);
, I" W7 k! x6 ]}! c" b7 E( q' \4 V$ A; I
9 }* U4 M: B7 J" W S( ^, m3 S V1 v4 Z
if (nNumVertices == 171 && nPrimitiveCount == 143)
2 A& A+ d5 U1 W8 U9 d0 a1 j{0 L& l" o2 o @. ?1 p7 k
^" E4 k6 t# Z/ upDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);8 z, H/ T- R1 T$ T" n- D, S0 W6 B* N
pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_NEVER);: m( I p- F# e, y
pDevice->SetTexture(0,Red);//GreenNade
+ S( [; k4 l- M* @% U+ ^' }pDrawIndexedPrimitive(pDevice, pType, nMinIndex, nNumVertices, nStartIndex, nPrimitiveCount);( ]5 @4 w5 v0 ~
pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);
/ D# [6 L7 n |! V6 r! z# ^5 [% MpDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_LESSEQUAL);" h# J7 w" R# [ I1 U/ p
pDevice->SetTexture(0,Yellow);" D* A8 y# g, o% i9 F" N
}
9 n* ?2 }) S }6 K. L& L1 j m$ W: O9 ?2 u+ A
- h% F) t+ x$ D* S7 @/ A
' N& |: n8 n$ T8 ^8 C2 S0 ?8 Dif(m_Stride==40 &&//face,mask etc.../ [6 t3 Y$ i2 r
(texnum==36700612) ||1 S2 m2 r+ o: O5 b9 J8 P0 ^
(texnum==9600172 ) ||
/ t1 c [+ i5 h(texnum==14200236) ||
6 g) S) _3 g: ] s3 N' i6 R$ r9 k(texnum==37800552) ||
4 h! k! I0 f0 a: p(texnum==28100486) ||
7 G) O* f1 k0 q; V(texnum==35500568) ||( Q) |5 t5 C) J5 t, J- ?( I3 `
(texnum==2200024 ) ||
) k. q; U, ~' H1 G7 h3 C( M# u(texnum==16200243) ||
( u* I M$ ~6 W(texnum==31900466) ||
4 I7 T0 h. @6 |7 ](texnum==19300342) ||2 x. }! D5 O0 _8 X, s7 L
(texnum==36200604) ||
9 i) e. W% K/ m+ w0 V$ {(texnum==21300290) ||
) B7 r6 P& x" k* l(texnum==35700558) ||( o% {& k; Q; T5 i
(texnum==22100396) ||
: i% A* j3 K% t# }- T(texnum==36100604) ||
" j) P2 y7 E& y9 a(texnum==27100464) ||9 Q3 v: F, K1 Q7 X* z; x
(texnum==11400180) ||( e! W, k2 V& r( {. J' b7 P
(texnum==34900580) ||
6 I9 i; u5 b4 C& c& O; z(texnum==13200212) ||- S# m. i2 K7 W
(texnum==34700538) ||: C2 U3 s- \' |% T: k8 t. t u
(texnum==19500352)&&
: A, Q" \7 E Z; X1 n' K(nNumVertices == 448 && nPrimitiveCount == 776))
! b) ^( d; j/ f* }! z8 r: u/ s5 \5 E2 M: v( ~0 _
{
: R' p2 F. i# N5 D. |pDevice->SetTexture(0,Blue);6 M) B6 ~1 t6 F- ?; ^- |
}
! g4 F! q0 ~1 }$ n0 N3 L$ y
' Z. P3 X: ]- }* x8 e9 r' |% e
1 ?1 h1 C* d0 q$ P" a9 G6 P: \ m{ l7 O( B" s5 l6 @, Z9 Y! r
pDevice->SetRenderState(D3DRS_FOGENABLE,false);" G5 K+ q8 I) e; W4 U6 O
}0 R' E. \+ h) N) K" H V5 L3 [
5 ~2 J. m& Q0 q+ |: h/*Logger
. o7 N; R/ {6 X* J+ Cif(m_Stride==40){. S' d0 \$ x: W# B% [) d9 y+ Z
, I2 @/ V: K3 z7 u' C/ }4 W
. L# h1 m. k/ L) ]while(GetAsyncKeyState(VK_NUMPAD1)&1) arrc--; //Used as manual index for adding textures to delarray
6 g9 r0 c( s3 M- Q Hwhile(GetAsyncKeyState(VK_NUMPAD3)&1) arrc++;! Z$ [" Y% q; B d
bool alrdy=false;' s/ |& R4 _4 M
bool inarr=false;
6 K9 S! ~4 l5 Q* {4 C, O% x" ?( e6 z% v( {/ B
if(texarray[arrc]==texnum)% g, p* I- F' N! e1 Z
if(delarray==texarray[arrc])
7 ^- T* x4 z- S& U$ Lalrdy=true;
0 d5 Y2 B( }# C _5 Dfor(int i=0;i<dcount;i++) //sees if said texture is in delarray; e9 ]- `/ ~7 v2 z: n
if(delarray==texnum)* ~/ e% f9 W5 Z: V0 ?! w6 `4 p
inarr=true;
. N& W0 e) b# O) Y6 @0 v6 L& D/ Zif(texarray[arrc]==texnum || inarr){ //If true, color model differently
P8 _4 X+ _8 a! NLPDIRECT3DTEXTURE8 texCol;! [. a1 g- I' f
DWORD dwOldZEnable = D3DZB_TRUE;
! Z9 ?. u, b% c! PpDevice->SetTexture(0, NULL);
2 J% V# |. E" h3 i0 J; P3 F6 X- r( _pDevice->GetRenderState(D3DRS_ZENABLE, &dwOldZEnable);
- g, l1 |0 d* u$ XpDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);
* P+ Z, h1 {; `3 m0 }' gif(alrdy) //Different colors for selected models that are already being logged (For removal from array)$ S8 n% x9 a& v# p
texCol=Blue;8 x" j! ?. r. t! H; ?5 c, B
else( G0 F4 D: K+ j6 N/ ^2 K: @9 X: ^! w
texCol=Red;
, v8 U* r1 `5 n/ m; L% `& |$ ipDevice->SetTexture(0, texCol);
& W' s, D# y9 BpDrawIndexedPrimitive(pDevice, pType, nMinIndex, nNumVertices, nStartIndex, nPrimitiveCount);
7 l$ R8 ]8 k Z3 }2 q2 J$ J6 h4 |pDevice->SetRenderState(D3DRS_ZENABLE, dwOldZEnable);1 ]9 w$ I' k( Z/ S1 ^) I" j
7 f! E, x8 |6 O$ y5 W; B2 g" i! r} w% G* E- ^; G/ n. P' }
}
- n0 N4 [5 h% S1 R% `1 E2 i* Nif(GetAsyncKeyState(VK_F5)&1) add_log("Logged tesx: %i", texarray[arrc]); //F5 will print currently selected texnum to logfile [3 e$ s$ a9 U6 I: L0 Z, J
if(GetAsyncKeyState(VK_F6)&1) { //For adding/removing textures to array
+ Q1 d2 S* o C$ Obool inarr=true;, g3 @5 y4 T; o) {2 w( X- f
for(int k=0;k<dcount;k++){7 Z- h1 ~6 \7 B: n, V1 m5 ]
if(delarray[k]==texarray[arrc])% q, j% z$ d5 q9 M% o( A: p& u7 g
{
& g ` u% O; Winarr=false;//Found selected texture to already exist
?1 q3 y4 Q# P, r# udelarray[k]=0;//Delete texture" u+ n7 Q* P% b6 S2 E; d
break;//Cancel loop
- z7 |$ d5 V# Z! ^4 I}# i& M0 a3 U4 m
}
! C% R* c; C( |. X! G; j5 {if(inarr==true)
9 a3 H/ ~) v! C2 C0 t9 i% m# x) F{/ s2 i# S& u& l& [$ ]
delarray[dcount]=texarray[arrc];//Add texture
# v% V4 \$ a. l, e# ]# B" M1 T* t i3 Sdcount++;
! G) O* u' m/ a+ }/ c! A" B. q}
9 Z, r8 U' {9 j0 J1 f7 V- K4 D4 e}7 J$ |1 d, l) |) j
if(GetAsyncKeyState(VK_F7)&1){9 Y( f u! G: C1 {9 z
int total=1;
( _$ N6 Z! y# f3 k4 `" N* a. U& Vadd_log("omfg values?!? {");
5 v9 H5 Q. c: o8 L9 o0 i7 h; Ufor(int x=0;x<dcount;x++)//Loops through all recorded variables and prints them in a nice array based format
# U4 l" C1 t! G$ t; q; G. H7 Vif(delarray[x]){
) S* B1 P3 r9 O. f$ f% u! hadd_log("%i,",delarray[x]); //add_log2==add_log but without endl
; y, m4 m" P% t& A# m# ktotal++;
+ I2 M! Q; K( J}. M8 [7 N& Y. b$ E* a( M" V2 Q( Q# y
add_log("}; %i variables in array",total);. T4 d X4 t7 Y" a* _$ \8 }2 c7 e
}4 V5 W3 p. g1 p) O4 G4 f1 z9 x9 p
bool found = false; //THIS PART CREDITS TO KRYPTEC" x' M9 j9 \! H- E" x/ s
for(int y=0; y<arraycounter; y++) //THIS IS HIS LOGGING FUNCTION
+ t7 I% C7 A+ r, k, J{
& l) @4 @7 N% c" Iif(texnum==texarray[y])found=true; //I JUST CREATED AN INTERFACE FOR IT5 ~% o# F7 }6 B7 U: n" ]
}& G- w0 {# |) g& Z5 Y0 }* g
if(!found && arraycounter < 1000) u4 w) E' ?+ w3 N- U
{
: N: {" w4 W; @. q4 b/ Htexarray[arraycounter]=texnum;
% N/ o" Q9 V& \6 f0 harraycounter++;: Q6 _$ M3 ^' B% h
}*/ T1 v5 A8 N2 |! v( v$ n ^
9 J8 n: e. S! c& t- T! ^
7 O. s5 S, _. E}
$ {4 f; W/ [0 g7 N3 s2 xreturn pDrawIndexedPrimitive(pDevice, pType, nMinIndex, nNumVertices, nStartIndex, nPrimitiveCount);8 `& u" y: }/ D1 T& Z' W
}$ G& I4 f* V3 h* s7 R; C
//=====================================Dip_End====== ================================================== ===================//* n, _# M" o7 ~/ j3 `/ ]
3 t c$ p& m8 A; p! i" g8 d6 F% L0 T6 O8 p, z+ e6 |
//=====================================Sss_Start==== ================================================== ====================//
( s3 ]8 W E8 Z! Z, g3 |typedef HRESULT ( WINAPI* oSetStreamSource ) ( LPDIRECT3DDEVICE8 pDevice, UINT nStreamNumber, LPDIRECT3DVERTEXBUFFER8 pStreamData, UINT nStride );/ V' \3 G% a5 |6 G0 o, \( [
oSetStreamSource pSetStreamSource;
" Z u! ` ~, r6 O& u7 [; X& i6 W$ A) D) [
HRESULT WINAPI mySetStreamSource(LPDIRECT3DDEVICE8 pDevice, UINT nStreamNumber, LPDIRECT3DVERTEXBUFFER8 pStreamData, UINT nStride), X' O* _0 }/ ^
{
, u. {/ e% U3 dif(nStreamNumber==0)+ M" I: M7 I( }9 ^+ P" U& C
m_Stride = nStride;
* s: w: P- M8 N1 {1 O8 O/ S7 f+ p4 H' F8 k9 A: Y w7 L
return pSetStreamSource(pDevice, nStreamNumber, pStreamData, nStride);
8 e' n/ [; f& w4 H}2 A8 b- ^8 E& S1 K
//====================================Sss_End======= ================================================== ===================//
' @5 G- w x7 c& |+ m( b% U8 O/ f3 N+ r6 ^2 H( R+ B
//====================================Svp_Start===== ================================================== ===================//
* U: v( B$ N# j" @& Vtypedef HRESULT (WINAPI* oSetViewport)(LPDIRECT3DDEVICE8 pDevice,CONST D3DVIEWPORT8* pViewport);6 [+ o, t$ m: v: X' h( L) I- @
oSetViewport pSetViewport;
" I, J/ D' q+ g) z; o
. d! S% b$ \0 U, MHRESULT WINAPI mySetViewport(LPDIRECT3DDEVICE8 pDevice,CONST D3DVIEWPORT8* pViewport)
# {2 U8 P: m) ]5 h{, `7 X" t/ a! ]8 i- c( x t! V
ScreenCenterX = ( float )pViewport->Width / 2;8 e: _, J: L* W
ScreenCenterY = ( float )pViewport->Height / 2; $ C8 Z! E* D, J# U, [
, b2 W( K. R/ t/ s3 Z8 Areturn pSetViewport(pDevice,pViewport);, M$ Q" _3 i% F% a" X; d, V
}% U2 F' @4 ]7 N* D
//===================================Svp_End======== ================================================== ===================//
" P8 A) w6 a1 V a1 w4 T! K: L2 Z6 _( g9 s8 E. C( }
typedef HRESULT ( WINAPI* oBeginScene ) ( LPDIRECT3DDEVICE8 pDevice );0 _4 I1 f# l1 f l
oBeginScene pBeginScene;: P& j: I' D2 G0 i
# T9 i( w$ D1 `7 e
HRESULT WINAPI myBeginScene(LPDIRECT3DDEVICE8 pDevice)
* T1 s# ?6 V8 V4 k{
: Z3 k# G5 V/ F0 I" P/ R( X- Pif((GetAsyncKeyState(VK_F6)&1))
! A0 N3 O6 S7 d! Y4 D- ]/ _{; o% I* G& o4 m/ ~9 X& X% h$ A& t
pEndScene = (oEndScene)DetourFunction((PBYTE)dwEndScene, (PBYTE)myEndScene);
?4 u, S* U1 N5 o% n+ y& BpDrawIndexedPrimitive = (oDrawIndexedPrimitive)DetourFunction((PBYTE)dwDra wIndexedPrimitive, (PBYTE)myDrawIndexedPrimitive);2 }( A- t3 M$ T( `* s: W: h
pSetStreamSource = (oSetStreamSource)DetourFunction((PBYTE)dwSetStrea mSource, (PBYTE)mySetStreamSource);( i( A8 x6 B; o/ L; a9 H
pSetViewport=(oSetViewport)DetourFunction((PBYTE)d wSetViewport,(PBYTE)mySetViewport);
/ u4 q U& _1 g6 a2 B1 W' \0 l}' P- y; j0 l9 O! ]1 l
! ~$ g6 i g$ _5 p
return pBeginScene(pDevice);2 U$ k2 M3 r: D" _+ v, y
} E$ G6 z8 r, u. m% H' a
: Z5 [7 w; h! k# s, j3 c
! D$ W: a, g, g! _: V# L* WBOOL WINAPI DllMain ( HMODULE hModule, DWORD dwReason, LPVOID lpReserved )
# F! u2 z# g2 A( _; \{( y' h1 ]8 d+ d) H/ L) D
DisableThreadLibraryCalls(hModule);' j# x |: i" T p( Z7 l
5 \* [1 V% g) \1 L/ p; j, c# W
if ( dwReason == DLL_PROCESS_ATTACH )
/ i* d* E2 S2 X! _ c{ u7 F q& N$ d7 ?( S
8 e/ @ h: S, A
//=========Log==========================//
8 {! ?8 q+ D4 k! w: p$ w- H/ v# EGetModuleFileName(hModule, dlldir, 512);
. D* j6 X: G# I8 ofor(int i = strlen(dlldir); i > 0; i--) { if(dlldir == '\\') { dlldir[i+1] = 0; break; } }; [- E3 L6 F& G# R: c/ k5 a% j9 C4 A
ofile.open(GetDirectoryFile("log.txt"), ios::app);
2 _) E3 e7 U5 Q5 G: a# R+ C//=========Log=========================//0 h8 M8 [1 u2 v$ ?9 Z
& n0 Z' Z$ W$ D. }
pBeginScene = (oBeginScene)DetourFunction((PBYTE)dwBeginScene, (PBYTE)myBeginScene);
. a k2 U( {% _7 y. m6 CpEndScene = (oEndScene)DetourFunction((PBYTE)dwEndScene, (PBYTE)myEndScene);
0 Y& w3 q2 |1 e# K+ a3 T# J1 WpDrawIndexedPrimitive = (oDrawIndexedPrimitive)DetourFunction((PBYTE)dwDra wIndexedPrimitive, (PBYTE)myDrawIndexedPrimitive);
' F6 V# X) t9 r% h1 E5 EpSetStreamSource = (oSetStreamSource)DetourFunction((PBYTE)dwSetStrea mSource, (PBYTE)mySetStreamSource);
: |1 b: B; s) z- l5 upSetViewport=(oSetViewport)DetourFunction((PBYTE)d wSetViewport,(PBYTE)mySetViewport);
9 `0 d4 r8 ?; V, L+ Q. m
5 a; o) u! W- r3 c6 s ^4 u6 V4 l2 P}! F# E8 ]; C1 G( F
return TRUE;
6 {+ j7 E" |2 @" B}
- X H& ~! v | D9 j4 H8 B
) y9 P1 R. L3 y9 z1 c. N v1 i4 ~2 j* ~% t/ ]/ b
Log.h (The header File):. ]- F- C- y# o6 D( J% n
& l* g0 M/ W) j" f#define WIN32_LEAN_AND_MEAN! u& m7 O. J( i4 ^2 |. P( c4 c
1 J7 Q- w% G" u$ {" k0 h% \, s
#ifndef _MAIN_H
( k3 A4 R p! D' S#define _MAIN_H
* y( } c0 S- n' p9 N" s5 S* K; [" p
char *GetDirectoryFile(char *filename);+ u8 h5 j# h$ q
void __cdecl add_log (const char * fmt, ...);
; Z' \: p" i9 @1 |) a' Q#endif
% d" X8 }7 p3 `- F9 j) h% \6 u9 S# ^0 W. y8 V6 U: h
Now after you have built your wallhack you will be able 2 find it in :, O' j X+ `7 y& D- J
C:\Users\Your Name\Documents\Visual Studio 2008\Projects\Wallhack\debug (something like that)
) x T6 W/ f# y; F4 g& U- C6 E+ Y) Z& M1 s
Now I will show you how to make your wallhack undetected:
8 d! g$ X4 A# E$ y6 H7 p3 `, K1. Download D3d hooks
2 U5 }0 Y1 V) D! q; I1 Y" y+ z2. Open the file that says "create device code made by me.h"
6 x- }8 a8 s( l2 \% W3. You will need to make another header file in your project and then put name it create device and paste that code it.& L8 o/ n' z7 {# Q
4. Your wallhack is now undetected.
2 D. |3 R$ w3 c
9 r: [2 ` |# j/ H* WCredits:# w/ ~' y2 h- b e: T1 _6 y- e! _. o, H1 ?
1. ME FOR THE TUTURIAL
9 j0 u$ @" @: Y& y J5 n5 h2. THE1FEAR FOR THE VIDEO ON HOW TO COMPILE THE SOURCE CODE, y+ Q8 y# N! A) S
3. FATBOY88 FOR THE SOURCE CODE
' ]+ M" l4 r9 ?$ {0 j# G- x) h4 U! u4. THE INDIRECTX I JUST FOUND :P
7 e6 n3 L2 J+ j8 B( Y0 O
' {% u0 V# c7 l) T! pAttachments:
3 p* Z5 ]; @2 dD3d_hooks: http://www.mediafire.com/?qzz0gwdjvj5: | R/ D& K7 i
IndirectX: http://www.mediafire.com/?gimzgmeny11( f) a: F/ h9 k4 w# E
Microsoft Visual C++ 2008: http://www.mediafire.com/?vmyjjnk1qj57 g7 I7 p: S, H0 |1 F
SEARCH THE LAST ONE UP
* Y2 [0 S& o. M, H* ?) m5 Y__________________
- ?; x0 R/ q7 \ _* h
+ l" n4 ~8 X% L5 w+ E" o <---------- WALLHACKED |