设为首页收藏本站官方微博

【代理DLL汉化研究】wallhack制作教学

[复制链接]
查看: 2643|回复: 2
打印 上一主题 下一主题

【代理DLL汉化研究】wallhack制作教学

跳转到指定楼层
楼主
发表于 2009-5-26 11:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

【代理DLL汉化研究】wallhack制作教学

原文
$ R! i% e) Y# Zhttp://www.descipe.net/forum/sol ... -your-wallhack.html. y# H9 _5 O9 }! j& ?
" {9 a* u- d' }" Z8 L
视频教学
+ V3 F/ r. |  \' z3 v' P: h5 Lhttp://www.youtube.com/watch?v=6b5XMzT-b_U    , T4 k& ]7 F9 j) P' C8 u. y: A

9 g* X3 \, k$ T( W2 A7 `HomeHome User CPUser CP FAQFAQ Members ListMembers List CalendarCalendar SearchSearch   B+ j* S0 X7 L0 d0 K! X1 i6 x
) r1 C: E. x: u
Hello shane007,1 e8 N7 g9 D  g2 E5 c; s( |
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. ( z3 Y% |/ i% X& L- L4 e5 p+ e
3 a; f" G# y) y8 j8 u
Why not start with your first post today and become an active part of DEScipe.net now!
& y/ K5 |6 l( H: l2 ]
  m' N4 H' y& E/ |0 k2 [. y; D
1 E/ z( v5 U+ q; j# C  
! f# K: h8 Y3 C. F2 ^$ L   DEScipe.net > MMOFPS's > Soldier Front > Soldier Front Cheats  : l. F  T) P0 ~4 D* c
How to make a wallhack and how to hook your wallhack!  
) Z/ [8 u& o' A" c% r( i% n' t Welcome, shane007.2 x4 ~  ^8 m6 a& @2 c
You last visited: Today at 03:55 3 c8 B; T( a. N+ s2 l
Private Messages: Unread 0, Total 0.
0 h, E& A$ Y8 z. s. X# cCredits: 200 [Check]  4 P* s5 S/ {( x" S# Z7 ]
, ~+ }! l  S9 W) T0 b
Home User CP FAQ Members List Calendar New Posts Search   Quick Links   Log Out
9 D7 ^  g, O. C, Q! L, d8 i' N* c4 Y( i0 a3 Z
) s+ T) j( s; P* v5 m
: E7 S% \/ p4 |' a5 ~
Search Forums ' ?, ?! s! c8 Y) D
      
* e; q( @% K/ M+ {) e  P; A( ]% X: G+ S
Show Threads   Show Posts  
6 R1 U2 o7 J  g; N3 w/ vAdvanced Search
. K- ?7 P* _2 ?& l% \1 g) nFind All Thanked Posts " U8 p. u+ S& G9 G5 q" ]
8 @" `* g' [! u" O1 Q4 h& C
Quick Links
* K" V1 w/ O" P6 |Today's Posts # }/ Y4 e0 q" N5 w
Mark Forums Read 6 P3 ]' r) w, b  @

0 ?4 e6 s% z; Z1 S5 r/ t4 BUser Control Panel - u+ m& N2 m* l9 Q( c
Edit Signature
% m5 N) H! {6 f7 C1 ?; _
1 y5 ?& j- H7 c0 N2 C6 `; QEdit Options - B0 i5 W; g0 V  s$ I+ ?" h/ }: _
Miscellaneous
* R2 h. E3 T  r/ i& A0 VPrivate Messages
# Z" E% j% _0 B$ ]/ DSubscribed Threads
: N( z" l; o8 k/ x4 r ) }4 S+ N; u9 S8 ]( ~
Who's Online ; q+ R# U' {3 k1 z+ [- G
$ u0 f) D7 z! t" c: \: q
Go to Page... & Z* v% j. |$ R/ O
   8 P3 H# X) I+ |/ N& |
How to make a wallhack and how to hook your wallhack!
% u: t9 f8 n5 C$ CThis 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. ...
5 h0 y2 b' R3 B/ d8 n5 @. V4 h$ H" N, ?" j
    Poll: Was this helpful?  
" K5 Z4 r3 @/ Z' A$ Y0 T. r6 w- hPoll Options
) D; B4 j9 e" s; u/ iWas this helpful?
- W6 k$ m2 c+ DYes, I WILL press the thanks button
* D# D2 x# x: X- m! w8 HNo, I am a failure
1 n2 v4 ^2 _8 ~( c! p! O# `View Poll Results   / `# ]' c( z* e& z6 q/ o

& C0 y0 i0 r9 F; m& q% h Page 1 of 3 1 2 3 >   
- a7 N5 P0 Y6 Z7 Q* g; q
4 h$ ]& G( P3 |% o2 w( m% d  Z; o View First Unread    LinkBack   Thread Tools   Search this Thread   Rate Thread   Display Modes   % O  U, U' m" i

; ^5 p+ ~* `4 l% e- ^0 D. Z6 e  i9 l+ _, A
  9 C" F' J0 V' O9 b3 p, r& l! W
05-02-2009, 20:49    #1  / }( U- {6 x6 w* f
killax9 # ?1 x) H& ]2 X& f3 F$ Q# c  `7 q
Punk
9 d3 |6 {& c% F; N& q
3 i  y, o% `" U1 q9 s  ?! X9 j+ P
. @/ M+ R0 W. F3 Q: A 6 U' {/ q9 z6 P

) ^3 l% g' Q, iJoin Date: Jan 2008
5 ^1 R& M: d0 {" d# E4 a1 ~( X3 gCredits: 2,701 [Donate] 6 T5 }0 I& k* u1 j
Posts: 103 9 s- M/ I- ]3 N" J
Thanks: 10
9 s4 U6 U8 f1 d" c' J( ^% W+ P  `Thanked 48 Times in 25 Posts   How to make a wallhack and how to hook your wallhack! . T- Z  _) f$ n: ?3 `
% P- \+ C& e1 ?) @5 L1 N- L* a6 d) G* z
--------------------------------------------------------------------------------
+ w& R( C8 b: v9 S4 L5 E( ~1 c5 M4 O' V. _
I will be showing you how to make a detected wallhack and then hook it for it to be undetected.# _) S8 S5 ?( `5 {" g6 \# h
Possible Undetected Methods:
% M8 u' N5 p4 C, }  f) i& ~3 d" J1)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.6 t8 W4 L0 I6 b
2)another way **** it hack GG.
  w' W2 M/ o' x8 r2 U3)breakpoint hooking;doesnt change memory... well changes debug registers., P3 h6 p6 H0 k* |/ S" F
4)code cave the hook int3->Jmp then in the code cave->Jmp(detour)d3d functions ->jmp back to original flow ;Hook hopin" [  w+ K3 w) d% Z. M' R
4 M# w$ d# B6 p. Q4 m) B8 P4 e
Vtable:# C! X" `" N6 ~% ^& Q
it wont work for vista its not a vtable hook =)' e$ Y: P! A& ?. O- _. N
3 A5 P) j( ~0 C% j- S+ l
the reason why my older version worked was cuz it hooked 5 _2 N+ R4 ~7 I+ H  I
Createdevice->pointers to the functions
; _& M7 e7 D4 n5 @
5 U- y% P4 E& H3 c, D' D1 x; Jkinda like a class or a struct.
( x% T" b( \* [: N, G7 Y; |+ U( w5 G8 p3 s) F

% E& i8 v( Y# [. c( ]8 gand 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.% r2 j: ^- U5 M/ L( `6 A% J$ h/ y

* y0 Q) J, j. N+ t/ y3rd maybe- some games recreate the device when a map loads...like BF1942.
6 J' B0 U, c2 ?6 a5 s; u8 g; `/ T9 v2 j. I; B+ G" u9 D  \/ e2 o
Things needed to do this:
$ i; F. t3 r! H2 x1. Microsoft Visual C++ 2008/ {6 W) b* D& o9 F
2. DirectX_SDK_(Summer 2004)! S' E% ?3 s4 X9 w( M/ u
3. D3d_hooks; N! {" J4 t- v' K# L' h
4. IndirectX- C% |# ^( \2 j6 ~% t
I HAVE ATTACHED ALL OF THESE FILES AT THE BOTTEM
; K4 o. z9 ^& w; p9 ^5 u. Z6 O
9 e2 B0 M+ W3 @* q9 D) m  }4 qNow most of you don't know how to compile a wallhack so watch this video and you will compile with no errors:7 X% h- J2 F: \9 I
0 S  E1 a- A9 l& G
YouTube - How to Compile WallHack [Tutorial]  + ^" S5 v4 R3 }' _% S) `$ n
0 t* W0 s1 Y# l. W/ U! c
/ U  q! m3 s5 j# n. _# g, s5 A
1 _# o4 `1 s, C! H; ^) p) D
Detected Source Code:" F" o+ j; ~! |3 T
' ?  a9 q) z0 @" l4 R
#include <windows.h>, y0 V( V! G6 _
#include <detours.h>
% z& ]  X: g# u# R: b8 Q# t#include <d3d8.h>2 }5 u1 @- T, f, t5 ~1 Y# l
#include <d3dx8.h>
1 k& u; X# O3 U% y#include "log.h"% s/ P: J4 n' W# \- D; j1 Q1 M
#include <fstream>6 e% C& g4 V- @, O9 V
#include <iostream>
5 u5 L$ W/ x8 x) E: G1 s#pragma comment(lib, "d3dx8.lib")
: Q. z  q7 \0 w#pragma comment(lib, "d3d8.lib")
8 D# ^' Z. m, Y3 E4 _7 Rusing namespace std;, M. \1 X4 z- g3 R' |/ Z* l
static DWORD dwBeginScene = 0x6D9D9250;
0 `( }. P. s; K, i9 Estatic DWORD dwEndScene = 0x6d9d93a0;; E0 n5 x4 @# |2 e/ J
static DWORD dwDrawIndexedPrimitive = 0x6d9d73a0;* n0 }6 D& h0 ^2 |* s% `1 e, _  M+ m+ U
static DWORD dwSetStreamSource = 0x6d9d6760;" R, \* ~' B. a. F% ^' W( F/ p
static DWORD dwSetViewport = 0x6d9d5b90 ;
) v4 w+ N  J% J, S* k& p* i0 l- G. ~, F+ B0 j1 z7 D& [5 n

& c. T1 L2 N. L" L/ A2 Sint m_Stride;. U2 @- J3 `' N5 M
int texnum;8 t$ ?2 X3 Y* o9 H. a
int nNumVertices;
0 m. J1 ?( _- b3 Rint nPrimitiveCount;+ C- }1 L) B/ y/ X1 R! P
1 x* `: u8 l; k* O
LPDIRECT3DTEXTURE8 Red,Yellow,Green,Blue,Purple,Pink,Orange;. V' F& s0 y/ k& r% @
bool Color = true;
& @( Y! S! ?* n7 Z( g" {5 ubool Logger = false;
: H+ C% x# w, M1 h7 jofstream ofile;
* Q6 c: c" ], K6 \" g# C4 ichar dlldir[320];4 F% q$ X1 x8 D8 n
float ScreenCenterX = 0.0f;; m8 {2 d" U1 ~6 l! O+ M
float ScreenCenterY = 0.0f;
& H5 ^+ z- T! hbool xhair = false;- s9 H8 ]7 L/ |
bool WallHack = false; 0 C( Q; ~, N2 Z1 D0 X
bool WallHack2 = false;  c5 \$ o; U' C2 W
HANDLE hand1 =NULL;
& Y; o% P/ a* {% k8 P& e' }HANDLE hand2 =NULL;
8 U: q$ \8 H" d
- j6 L" b2 g) TDWORD bytes;3 L2 `9 ^9 e. `

7 q7 t, |5 u) |9 s: I//Logger' n0 I% ^1 v1 W- u" X$ Z8 t1 B
int texarray[1000];
3 }: Y# ^* |' G. B( ]7 t6 Lint arraycounter;
& u6 R( C' w, @# lint delarray[500]; 1 Z2 k8 m! b; l/ z0 g" O4 y
int dcount; 3 B) H- V3 p' o. [1 f: s$ Z% f% ?
unsigned int arrc;/ i" d, t& k0 o7 x
int i=0;2 |  I3 N1 p+ |8 ~3 M

& F: a+ E0 [! A* z* E3 d7 o! T+ Y5 r
! r8 n, G4 O2 u1 ~9 CD3DCOLOR redt = D3DCOLOR_XRGB( 255, 0, 0 );
; c; J# Y+ }4 E: o( R+ a2 \5 p5 k4 r, p- {/ o9 f0 G2 p+ e: Z: Y( Q7 x* q' B

9 h) U0 C5 `: ~, ichar *GetDirectoryFile(char *filename)
/ g; V; ?: x# x( D5 {: f5 N{2 @& r: T7 ?4 C3 G
static char path[320];; B8 M* U  w- Z* N" U) a" G8 [
strcpy(path, dlldir);: U' C0 `/ h# H
strcat(path, filename);
( r; _# n# j# m/ Jreturn path;; c! u4 z/ f% x* U2 y
}" y3 J4 k9 M* f9 S# G$ j1 w

2 d, `9 q" y5 q. |9 Uvoid __cdecl add_log (const char *fmt, ...)5 u/ _) E  w! c2 @5 @* S; G
{6 O3 Z6 q  j! S( }8 j
if(ofile != NULL)* N3 @; N' W7 R( G' |# v' u
{9 Z7 d2 {  D1 J$ p
if(!fmt) { return; }+ i7 L3 v" t, r9 x7 U: ?

9 I& r' K3 w$ k4 O# y; d0 Hva_list va_alist;( J# W1 \' C2 L( P' Y3 A
char logbuf[256] = {0};' S+ i: u- B, D8 F; e) @8 [6 Z& K
! `& e; I0 A+ f& X& u
va_start (va_alist, fmt);  L) z4 v" A; W7 R9 y
_vsnprintf (logbuf+strlen(logbuf), sizeof(logbuf) - strlen(logbuf), fmt, va_alist);
' k/ y/ \5 T9 A9 W2 f$ R0 A" Ova_end (va_alist);
8 q8 z; r0 q, G: D8 Q1 A: S  a0 k+ C$ ?$ i) U+ ^9 d6 a4 ?% o
ofile << logbuf << endl;9 @( Y* i" V% ~1 ^  f( W
}
$ ~4 i) |) O$ |9 j7 x5 V: a}4 m- Q! }! X+ R, v1 }7 T. g

5 w4 y1 |1 O7 p" |7 UHRESULT GenerateTexture(IDirect3DDevice8 *pD3Ddev, IDirect3DTexture8 **ppD3Dtex, DWORD colour32)
0 i( y+ W1 l$ z1 O{
! t. D8 y5 `+ ?0 xif( FAILED(pD3Ddev->CreateTexture(8, 8, 1, 0, D3DFMT_A4R4G4B4, D3DPOOL_MANAGED, ppD3Dtex)) )5 R3 F9 ~4 P2 C, v6 C
return E_FAIL;
3 x; w3 D7 R9 W! T1 l" z7 R1 U  m/ a6 h: M  Q. C
WORD colour16 = ((WORD)((colour32>>28)&0xF)<<12)
4 s' n0 Q  ]: |7 n( n- u  o|(WORD)(((colour32>>20)&0xF)<<8)' R# ?3 d) x/ V! G5 g2 s+ v! ~3 x& f
|(WORD)(((colour32>>12)&0xF)<<4)5 t4 M$ X5 W7 d$ `/ g
|(WORD)(((colour32>>4)&0xF)<<0);
7 |7 ~. ^& ?: Y/ A; N. N2 J
0 x$ O0 H$ {7 }' C" [! Y  qD3DLOCKED_RECT d3dlr;
, ]2 H% Z: b" e$ B(*ppD3Dtex)->LockRect(0, &d3dlr, 0, 0);
2 a+ T) g5 u1 K9 L, Q/ @WORD *pDst16 = (WORD*)d3dlr.pBits;) A& e, t( R1 i; W4 U4 ?* @
  g8 s$ c& z8 E3 w, K
for(int xy=0; xy < 8*8; xy++)4 y% p6 U8 L' U
*pDst16++ = colour16;
4 V( G6 N+ w3 U  `7 t3 U0 ]  x$ l( I7 M0 c0 b! ?2 I: y' d
(*ppD3Dtex)->UnlockRect(0);7 f, n+ W# G0 e* U, u! x
7 [3 r) c) w6 q& T
return S_OK;& k, f- r3 |7 I
}5 ?% ^  `9 Y; j$ [

% t" M0 X) k* C$ Y0 r
) z- r! u& u* t7 o# z//=================================EndScene_Start=== ================================================== ============================/// m/ u% _$ {" y  f6 ^1 J; d
typedef HRESULT ( WINAPI* oEndScene ) ( LPDIRECT3DDEVICE8 pDevice );$ P8 z$ X, V  O8 i. ]
oEndScene pEndScene;
; @( ~" L7 ~7 r9 l! Y! o+ p% [
' Q$ W7 S2 w7 O4 O2 H* DHRESULT WINAPI myEndScene(LPDIRECT3DDEVICE8 pDevice)
( t, I& L$ W+ G9 x6 m; P% M{
0 s2 g% P. ^7 Q' @if(Color)* `! j2 C3 D$ u" y, u
{
+ p" ~8 n. n6 ]$ F9 o  _; KGenerateTexture(pDevice, &Red, D3DCOLOR_ARGB (255 , 255 , 0 , 0 ));  O% q. `# @* B3 ~8 Z* Z
GenerateTexture(pDevice, &Yellow, D3DCOLOR_ARGB (255 , 255 , 255 , 0 ));  k3 C' r9 K: [7 [; R% `5 s& x* x
GenerateTexture(pDevice, &Green, D3DCOLOR_ARGB (255 , 0 , 255 , 0 ));4 _' K$ n6 f$ ~5 b4 j8 v
GenerateTexture(pDevice, &Blue, D3DCOLOR_ARGB (255 , 0 , 0 , 255 ));
) k2 r6 f5 m# d+ F; BGenerateTexture(pDevice, &Purple, D3DCOLOR_ARGB (255 , 102 , 0 , 153 ));5 ]. x5 K# M. k% F
GenerateTexture(pDevice, &Pink, D3DCOLOR_ARGB (255 , 255 , 20 , 147 ));; C4 {: g: Z4 @0 r% V
GenerateTexture(pDevice, &Orange, D3DCOLOR_ARGB (255 , 255 , 165 , 0 ));" ?4 V$ j+ F+ J
Color=false;
) S) ?+ [* Y3 m% r}5 G1 k$ f5 F4 H! R$ J8 G+ ~$ l% a

2 w" c$ f) s3 U: u% ]if(xhair)5 V. N  b* ]# g3 u3 i) {
{7 G1 M0 }2 Y! v5 I
D3DRECT rec2 = {ScreenCenterX-20, ScreenCenterY, ScreenCenterX+ 20, ScreenCenterY+2};
/ p+ Y0 R" H0 t" wD3DRECT rec3 = {ScreenCenterX, ScreenCenterY-20, ScreenCenterX+ 2,ScreenCenterY+20};9 A! s) y& Y2 w- w. A
pDevice->Clear(1, &rec2, D3DCLEAR_TARGET,redt, 0, 0);6 J* W: c+ f5 A6 A  c  e. R/ y6 M
pDevice->Clear(1, &rec3, D3DCLEAR_TARGET,redt, 0, 0);
* d) J; D  {/ @. H+ i}
0 j' _$ ]) R; m$ u2 u
' T: ?  u7 G2 v; x, R! G//=============================================UnHoo K_Start=========================================== ========//) N4 C# b" G# w

1 y+ l. N$ B& p& A% M* r3 xif((GetAsyncKeyState(VK_F5)&1))
0 d9 E+ D$ I8 _% K$ D6 [9 E8 I{
& L' [+ `7 e- b6 {# @int end =NULL;
7 g9 D4 ]; `4 a2 e* I7 r) Jint dip =NULL;
! {8 p* p4 @* m1 b! Qint svp =NULL;* I3 N( j( P6 c' x* M
int sss =NULL;% z7 Q, |' f5 p% b. @
* o  n' E' P3 _0 c6 @( o
- U3 h3 n6 ]  g* A5 X# _5 l8 q
BYTE Unhook[5] = {0x8B,0xFF,0x55,0x8B,0xEC};//Original Function Bytes.% X9 \# @/ B" E# h6 h
hand1 = GetCurrentProcess();+ ~7 W2 q7 V* m; F( q, k: [
DWORD dwmodualBase=(DWORD)GetModuleHandle("d3d8.dll");: l2 F/ v4 _7 ?- E: i  a7 Y" q' h' p5 x
end = 0x6d9d93a0;0 K1 i1 l0 i& ^( J
dip = 0x6d9d73a0;
/ k& Y' Y- [" j2 p: r2 E. P4 X9 jsvp = 0x6d9d5b90;8 f4 P5 z2 @" e) [# A
sss = 0x6d9d6760;
  n& T: E* |8 m2 z; O
+ ^0 x$ E( F% CWriteProcessMemory(hand1, (void*) end, Unhook, 5, &bytes);- k/ z+ a1 e+ ~; ?! z* @
WriteProcessMemory(hand1, (void*) dip, Unhook, 5, &bytes);
8 r- h4 M/ ~& q+ N4 n& YWriteProcessMemory(hand1, (void*) svp ,Unhook, 5, &bytes);
6 b' q. z/ A9 K; G+ `WriteProcessMemory(hand1, (void*) sss,Unhook, 5, &bytes);5 \( G8 m* [8 H# m$ p& c
} 9 c! |  i* U" C
//=========================================UnHook_En d================================================= ========//
! `) ]4 V# C6 p
2 A8 I" @3 w7 P2 F* ]4 p% z4 m+ o6 \if((GetAsyncKeyState(VK_F1)&1)){xhair=!xhair;} ) H4 o4 ?5 k. g8 H$ L
if((GetAsyncKeyState(VK_F2)&1)){WallHack=!WallHack ;} $ W& D1 z5 Q5 h8 [- Q8 Q) v
/ y0 T/ q  f+ C+ T  K2 d9 l
return pEndScene(pDevice);/ U1 U5 R$ h7 I
}3 `- T# B2 I4 t7 O  \
//====================================EndScene_End== ================================================== ========================//$ A7 X" d; |1 y3 ]+ a6 M
) s8 S8 j; U* m$ U* d& S
$ B4 `. I- c6 ~# t

- K+ b1 ^4 _7 c3 b9 u+ s. Z" {
! |6 G& M+ D1 W  g; U% N9 M//=================================Dip_Start======== ================================================== ==================================//" ~; Q  C7 g! ?9 |( X
typedef HRESULT ( WINAPI* oDrawIndexedPrimitive ) ( LPDIRECT3DDEVICE8 pDevice, D3DPRIMITIVETYPE pType, UINT nMinIndex, UINT nNumVertices, UINT nStartIndex, UINT nPrimitiveCount );
, e$ h/ u- {& b  \5 t. A) L* J0 y7 poDrawIndexedPrimitive pDrawIndexedPrimitive;0 b. h7 h5 G5 @) c1 ?) f, N

  ^+ T' h. K4 ~6 }% o8 _2 Z  C( gHRESULT WINAPI myDrawIndexedPrimitive(LPDIRECT3DDEVICE8 pDevice, D3DPRIMITIVETYPE pType, UINT nMinIndex, UINT nNumVertices, UINT nStartIndex, UINT nPrimitiveCount)# H  N; [: l* j/ L6 L
{# V! k: E# I0 U4 n, P0 B- A8 I) X
: E4 [' d, ]; S" d8 M

: e) s) J6 s4 Y9 _
, N6 [+ m  q3 E& u( [# t# `' q* Q! E# X9 c8 d: y, @8 b9 d" M
if(WallHack)
* w( r$ X6 n& u6 y{
3 _/ [, n3 m/ F6 ]texnum = (nNumVertices*100000)+nPrimitiveCount; 1 }6 p2 C+ ?# D& q  Q
if(m_Stride==40 && 6 m# j1 [2 m4 H# f9 R

& z2 n' ~/ K7 r  [8 m7 r3 v3 b% ](texnum==7500121 )||(texnum==8500105 )||(texnum==12400168)||(texnum==37000650)||, G/ `& ~; P; A# e& T
(texnum==18000274)||(texnum==8800105 )||(texnum==36900650)||(texnum==19600314)||& l9 c3 A, v+ Z! D0 D9 V$ X3 k
(texnum==21800306)||(texnum==7500121 )||(texnum==8500105 )||(texnum==12400168)||0 h/ C8 U- }* }9 o/ s
(texnum==21800306)||(texnum==36900650)||(texnum==7 500121 )||(texnum==37000650)||# o; F  j) S- f% _3 Q$ p
(texnum==18000274)||(texnum==7500121 )||(texnum==8500105 )||(texnum==38000658)||! m0 b% R5 ]4 H
(texnum==22100268)||(texnum==62400752)||(texnum==2 7900456)||(texnum==45700654)||
! `! {& ?% T  z" I. L1 V6 p% z(texnum==4800040 )||(texnum==83600752)||(texnum==33400477)||(texnum ==38100666)||
4 V6 w& k/ \# s1 W' ^; B(texnum==2800036 )||(texnum==62400752)||(texnum==29700492)||(texnum ==84900778)||
& X& @9 c' K6 V) x9 c. _1 {3 ^# C(texnum==27500442)||(texnum==52100658)||(texnum==6 2400752)||(texnum==33600552)|| 0 I' H$ q5 j7 [) p
(texnum==44100646)||(texnum==18000274)||(texnum==3 7200508)||(texnum==45700654)||
8 J  q: C+ _: Q( p8 T) q1 B) C(texnum==37200508)||(texnum==52100658)||(texnum==5 2100658) &&
4 _) c7 M! p7 N8 H
7 F1 d3 d2 [( P% e
# A5 h1 w* X1 t2 u
1 ?' A* I  K1 b& ?: n9 X; ~(nNumVertices == 100 && nPrimitiveCount == 121) || //Foot 1 Y' _, L. D# u
(nNumVertices == 105 && nPrimitiveCount == 168) || //Right Arm 4 y* H/ L0 ]' @  ]/ `
(nNumVertices == 132 && nPrimitiveCount == 180) || //Hand 7 ~, p  A: `% |' s% |6 w0 x! Y
(nNumVertices == 159 && nPrimitiveCount == 200) || //Left Arm
8 j3 B& @2 i9 ~5 `(nNumVertices == 338 && nPrimitiveCount == 534) || //Underbody thanks japennese guy =)+ m! x: G1 L' C! o& j1 F7 T$ V
//(nNumVertices == 448 && nPrimitiveCount == 776) || //Head ( d$ B  S# q$ z
(nNumVertices == 804 && nPrimitiveCount == 1016) || //Body //SRG Option item
' K* `1 p3 X. \1 }: I(nNumVertices == 109 && nPrimitiveCount == 110) || //Bulletproof Vest
# d/ D) s! |0 K5 ]+ M(nNumVertices == 336 && nPrimitiveCount == 532)) //Battle Pants4 a5 v  g( F& @, ~1 ^1 q

$ F6 J* A& p: M0 V, V& q5 {6 b{# r  N0 G6 n! F8 J$ b
pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);6 s: B3 u% G- d  |, a: H% x3 U
pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_NEVER);0 U, M7 e# D! \! D8 Z. F! {
pDevice->SetTexture(0,Orange);
; p  g! v7 I  K& c: f/ f0 g% J//pDevice->SetRenderState(D3DRS_FILLMODE, D3DFILL_WIREFRAME );
; @7 s+ d) j8 g, Z2 L5 e1 d5 u
* @8 T$ r- d  P1 [6 }pDrawIndexedPrimitive(pDevice, pType, nMinIndex, nNumVertices, nStartIndex, nPrimitiveCount);
- }& q7 z' n! j
3 D2 O7 Y5 o- E+ ~2 r2 f: x3 d% I( R//pDevice->SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID );
* D6 o, E) P" h8 h& v' T" @pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);" k/ ^- S$ a& B+ h) x$ C% j6 j" h
pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_LESSEQUAL);
7 Z- Q+ L9 E5 f/ H% R: |) GpDevice->SetTexture(0,Pink);( M; D1 f3 i5 M3 B
} 9 a2 K( R! O' ^& [
# y' g" B, Y7 {5 ~+ T
if(m_Stride==40 && texnum== 21300174) 5 @; z3 S; [' G' ?4 f3 {, o2 Z
{( V# a2 W7 y" b$ F- h
pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);
: E% a$ T% K7 `pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_NEVER);
  M# Q: T" s$ n7 i9 i$ MpDevice->SetTexture(0,Green);//GreenNade/ n: N/ T7 @' y1 d$ _
pDrawIndexedPrimitive(pDevice, pType, nMinIndex, nNumVertices, nStartIndex, nPrimitiveCount);3 t7 G4 M$ [1 ~/ O
pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);
4 H% j2 y: E, E5 ]! `5 F' _" ypDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_LESSEQUAL);1 s5 c- O1 Y. i( u# X2 p3 C3 R
pDevice->SetTexture(0,Purple);
" t: L! Q8 `, h9 J5 }5 w" }}
5 C, g0 p6 H9 L1 F; ?1 Y5 H( u. [7 {1 Q# q, L

; ~5 H7 P; I* E: rif(nNumVertices == 158 && nPrimitiveCount == 131)
9 ^3 F7 y$ t/ H8 R{
, [& x9 t7 `; }2 g( cpDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);* G* y$ G4 {' a- [& v6 X3 h- m% F0 G, P
pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_NEVER);) a2 ^; d! `( i4 r; ~' R8 O
pDevice->SetTexture(0,Red);//GreenNade( I3 c! b& K$ ]! F# k( G
pDrawIndexedPrimitive(pDevice, pType, nMinIndex, nNumVertices, nStartIndex, nPrimitiveCount);
- O4 y! N9 y5 W& Q6 mpDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);1 T( \% V& F& E4 ?, S
pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_LESSEQUAL);
9 v( a) w6 |3 e% J( f  KpDevice->SetTexture(0,Yellow);8 j! Q( T0 X& t2 y2 l
}5 ~0 o* U. k! ~6 V5 D& m

# K8 Z9 ], \+ k1 r+ S% X; zif (nNumVertices == 171 && nPrimitiveCount == 143)
7 }- j/ Z# P5 R{
& ]! }: R+ X1 g- C7 U
4 n" I, v% `! a1 E; ?( y- T6 zpDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);
1 l: Q% O& Y7 c3 ypDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_NEVER);% B' a; ?& O- `
pDevice->SetTexture(0,Red);//GreenNade. j3 O! i$ ^4 q
pDrawIndexedPrimitive(pDevice, pType, nMinIndex, nNumVertices, nStartIndex, nPrimitiveCount);
9 a* ?! V+ m, _" L1 O# ^pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE);8 Q# P% X' P2 J8 Z  {  H
pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_LESSEQUAL);- P" ]  e+ a. z0 F' R1 |0 \1 R
pDevice->SetTexture(0,Yellow);( N7 D+ a; U( y& c8 Q
}* c1 r% O8 d% w- a
+ u6 m+ \; D( k1 g. R9 n

8 r( K( W* \% [) G3 ]- o3 I% C7 }/ p( j7 @: T8 ^: u- s( `
if(m_Stride==40 &&//face,mask etc...$ ^  D9 _1 C. e, P2 B! v
(texnum==36700612) ||+ h, }. G3 ^; p" L6 L& I. V
(texnum==9600172 ) ||" e! n9 u; z3 ]( X$ i( g
(texnum==14200236) ||
! \' s( C  D8 A$ p( |(texnum==37800552) ||- i2 t+ u" i2 N: C) J
(texnum==28100486) ||& ]# z% M' e* R: N9 l" w3 r6 b
(texnum==35500568) ||1 V( q, J0 X2 W- I
(texnum==2200024 ) ||0 j+ m7 G! t4 _- q% {1 A
(texnum==16200243) ||
7 U9 v) U4 c% D5 G$ Q8 F(texnum==31900466) ||
! I) e- E( e" ~8 H% \% q(texnum==19300342) ||
3 J* v  ~- w  q8 D; K0 u(texnum==36200604) ||( ~8 m* h& r' {8 U) {8 E6 g
(texnum==21300290) ||
% J% k( I# i2 C3 T0 e# o(texnum==35700558) ||
0 n6 W6 b# b' ~  F. v. t(texnum==22100396) ||' b/ ?  y( e- t
(texnum==36100604) ||
: k6 f& V( a! ^5 c% y; o! c7 Z% {3 {(texnum==27100464) ||
, x* d1 t2 X/ A, g) C; q$ M(texnum==11400180) ||3 Z2 E' c: Z" Q4 [7 J; K
(texnum==34900580) ||
' ?6 |8 Q5 I5 O6 t2 n# f- o(texnum==13200212) ||" i5 A( ]; P7 x  W3 E- y; C+ r+ U
(texnum==34700538) ||  O, e1 A5 }8 A( A% y* |7 O
(texnum==19500352)&&
3 A# T5 `3 x5 Z(nNumVertices == 448 && nPrimitiveCount == 776)). m0 X5 |: P  X( _9 s; Y
. U4 E) P( M+ A) W
{8 w/ f/ Q0 b) _
pDevice->SetTexture(0,Blue);
  t% A  p; T$ t+ X}& r. b. d& N& b( W$ y
( U7 t" U. o) R. k- Z8 I2 y
- @7 P+ s; ~- z# m% T" q: `6 M
{$ {; V  D6 t: F3 O
pDevice->SetRenderState(D3DRS_FOGENABLE,false);
  p; n% V9 \# }" t8 p& I}& b0 z$ p6 y5 s* y; M1 Z# Z  H# c- [

+ X6 H" n* Y# ~$ y) u" P/*Logger
& f/ [0 V/ U; ?5 A- T% Oif(m_Stride==40){% p8 R( F+ n, q) |& Y8 t
2 w8 U4 \, x3 G, K8 ?

5 F+ W6 G3 j  n- Kwhile(GetAsyncKeyState(VK_NUMPAD1)&1) arrc--; //Used as manual index for adding textures to delarray
/ T; l8 h' d* t; d8 Q8 Y/ [' L% fwhile(GetAsyncKeyState(VK_NUMPAD3)&1) arrc++;
4 {2 q4 Y0 p/ c7 v3 g2 A" A' zbool alrdy=false;+ X, m5 F8 g7 m8 X+ Z' H
bool inarr=false;
! C: x9 |  G8 K, \  t! I( [' Z
( i3 m7 N" m  d, _% p& r$ x7 i1 sif(texarray[arrc]==texnum)
' J: n4 N0 r" Q, ^9 i: |* K5 c2 lif(delarray==texarray[arrc])0 z) @9 J1 q2 t) I" I1 B& Q
alrdy=true;0 W9 r, o) V6 g* C( u
for(int i=0;i<dcount;i++) //sees if said texture is in delarray  D  _6 g9 A) w- T! T
if(delarray==texnum)
, d. y7 d! [$ z% w" r( N, ^: dinarr=true;
$ z7 L9 G, U6 [+ ~if(texarray[arrc]==texnum || inarr){ //If true, color model differently
# F. b) B! Y+ ~2 o6 }1 x. ^! mLPDIRECT3DTEXTURE8 texCol;6 U* c3 Q) Y6 A6 z/ _, x; O7 L  p3 n( ^+ \
DWORD dwOldZEnable = D3DZB_TRUE; , y1 d  D4 `: K9 \
pDevice->SetTexture(0, NULL);
# g8 t+ B* K  `+ ]9 x) h+ [) |pDevice->GetRenderState(D3DRS_ZENABLE, &dwOldZEnable);
' M! |) U* i$ n) k8 {% kpDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);3 k. X! K+ J8 |7 z
if(alrdy) //Different colors for selected models that are already being logged (For removal from array)
3 h0 B* x1 V& A) h4 otexCol=Blue;
+ j9 R# k, U1 [. lelse
( b; A+ J$ f7 Q; JtexCol=Red;
, @) f9 [- B) i2 a9 HpDevice->SetTexture(0, texCol);5 y/ n# w7 G6 d: o+ ~, }  [
pDrawIndexedPrimitive(pDevice, pType, nMinIndex, nNumVertices, nStartIndex, nPrimitiveCount);) e$ V  d& X4 S+ [# n
pDevice->SetRenderState(D3DRS_ZENABLE, dwOldZEnable);) c& M* ]1 o: p/ R& w1 g! V5 W- J, e

0 R& A" u  `0 A! S+ {5 f" T}, T/ P( w" V5 u  }
}# B* h5 s% x5 B, R7 x6 R
if(GetAsyncKeyState(VK_F5)&1) add_log("Logged tesx: %i", texarray[arrc]); //F5 will print currently selected texnum to logfile" _+ R/ M+ p: i7 J! L
if(GetAsyncKeyState(VK_F6)&1) { //For adding/removing textures to array3 W2 P/ W* T( h0 O- s
bool inarr=true;/ J6 d9 @/ x! e9 s. w
for(int k=0;k<dcount;k++){
7 l7 _) a* u" ~! \/ U* D. ?5 W/ d2 Iif(delarray[k]==texarray[arrc])
3 s) [" B( v7 ~2 F/ G{+ n9 \0 h! N, B% T
inarr=false;//Found selected texture to already exist, r0 i# ^* t  a
delarray[k]=0;//Delete texture/ r0 n- v: ]+ g# q  N' k6 o
break;//Cancel loop
- [6 N6 o& L; ~4 V}8 Y! f# E2 ?/ U4 ^+ D4 Z* @
}+ @8 s. N/ a- u, x! @& r" n
if(inarr==true)$ U* d$ m. d1 k: R  g. T: S
{
7 T9 j- ~( r( ^$ l# q5 c2 Ldelarray[dcount]=texarray[arrc];//Add texture
2 V# T6 J# H  s: |dcount++;$ C) H& C$ m- c
}& F) M: O2 h* `2 `
}
+ N, i8 o" a* K- lif(GetAsyncKeyState(VK_F7)&1){
! O& y6 R# r3 Z$ ^int total=1;8 ?$ ^0 S# X& S: b
add_log("omfg values?!? {");; j+ y2 v2 `) M( I
for(int x=0;x<dcount;x++)//Loops through all recorded variables and prints them in a nice array based format
3 h7 A. w9 S2 k6 x5 \if(delarray[x]){& j. n! G% T* k& ^6 q
add_log("%i,",delarray[x]); //add_log2==add_log but without endl; _* A6 u. {# D1 X- F
total++;
: l3 ]) D$ M9 \3 G" M* `" F}
; g  g& @9 t% |  E7 C+ P3 X# e: Yadd_log("}; %i variables in array",total);
# q2 o8 R+ @. S2 w- h; N1 b}
, z0 r/ C; D; n! G$ P% Abool found = false; //THIS PART CREDITS TO KRYPTEC  h9 Y3 T) j5 T. _# @
for(int y=0; y<arraycounter; y++) //THIS IS HIS LOGGING FUNCTION* y  G7 u) `' U) U  f" v( Q
{
4 Z3 @2 |- H7 e$ }6 W# Tif(texnum==texarray[y])found=true; //I JUST CREATED AN INTERFACE FOR IT
7 E; K6 s2 u; O/ g7 G}
0 z' o& I, U. v6 T: t* R1 q9 u9 lif(!found && arraycounter < 1000). I% |0 a7 _8 o: {
{
% }4 Y6 |: b% p" K( N2 J- ftexarray[arraycounter]=texnum;
  I4 j' u- Y2 j; |0 Zarraycounter++;/ j5 z4 v4 J3 Z* F
}*/
$ }$ i* z6 C$ x# l& S8 w+ v: v
0 E  b4 H" h( b8 J
( W+ N- ^' \, M, J3 J) N}, [9 I1 }! \7 e7 j7 G
return pDrawIndexedPrimitive(pDevice, pType, nMinIndex, nNumVertices, nStartIndex, nPrimitiveCount);
9 F8 M3 |# g% `( ^1 O3 f1 V" g- ~7 B}% L7 ]* B' x) g0 {
//=====================================Dip_End====== ================================================== ===================//
% [( h  U" U, J$ _, ~; [! J7 {1 [8 S- h4 H7 c$ U
# l: |$ a, Q( E; Z4 V# X* H0 y* a
//=====================================Sss_Start==== ================================================== ====================//+ X+ V1 g0 p2 D" L  X
typedef HRESULT ( WINAPI* oSetStreamSource ) ( LPDIRECT3DDEVICE8 pDevice, UINT nStreamNumber, LPDIRECT3DVERTEXBUFFER8 pStreamData, UINT nStride );
; n$ r7 B8 n! Z7 G) V8 t2 e$ AoSetStreamSource pSetStreamSource;
7 P4 |% c) T9 k& k" v1 |9 Q. J0 k/ r: j9 ]4 e: ]
HRESULT WINAPI mySetStreamSource(LPDIRECT3DDEVICE8 pDevice, UINT nStreamNumber, LPDIRECT3DVERTEXBUFFER8 pStreamData, UINT nStride)
$ }- u( H/ P: E{1 ~$ `8 W( T2 e! h0 y
if(nStreamNumber==0)5 A& n8 u5 A- ]- K" ]0 F% d
m_Stride = nStride;9 q9 M' H) y7 z# E

  o  O; ]( ~% creturn pSetStreamSource(pDevice, nStreamNumber, pStreamData, nStride);
) A* p+ K/ ^1 F) l}
+ [* n* a) `' b& l- @! I//====================================Sss_End======= ================================================== ===================//! h) n4 x  F6 b- ~
! h8 |# H2 ]/ M! Q
//====================================Svp_Start===== ================================================== ===================//
, o4 u  X5 |3 ~$ b, etypedef HRESULT (WINAPI* oSetViewport)(LPDIRECT3DDEVICE8 pDevice,CONST D3DVIEWPORT8* pViewport);) i2 r: e) X. q! Z
oSetViewport pSetViewport;9 ]+ m) ]9 k$ d2 H- ]) \$ E
3 j6 ~% {; F7 S- h4 j% R
HRESULT WINAPI mySetViewport(LPDIRECT3DDEVICE8 pDevice,CONST D3DVIEWPORT8* pViewport)$ U2 e6 _, z6 M2 [  ?% k- o* E% c
{3 B: b% g( c- ?% d
ScreenCenterX = ( float )pViewport->Width / 2;
* H9 L) E; T; p+ k. EScreenCenterY = ( float )pViewport->Height / 2; $ x% q0 p! k2 D# q& H2 u2 g6 O
* Q+ L5 t6 @( [" b/ e+ G& p) Q6 q
return pSetViewport(pDevice,pViewport);
; ~4 z, f! g0 |}
" b- z# V4 P% D/ }0 }. u3 r//===================================Svp_End======== ================================================== ===================//
7 ?0 b, H8 U+ \$ |
7 n6 ~( p9 E6 f6 ^+ N. utypedef HRESULT ( WINAPI* oBeginScene ) ( LPDIRECT3DDEVICE8 pDevice );
/ A+ \8 L7 ]! l% T& E3 voBeginScene pBeginScene;- K, _* X( L7 r6 u  H

# j. ?8 z$ ?. M, ~' y: JHRESULT WINAPI myBeginScene(LPDIRECT3DDEVICE8 pDevice)2 V$ m1 s% @8 F7 h8 P6 h
{) ]5 t0 D7 V. _& ?5 A/ ^' ~
if((GetAsyncKeyState(VK_F6)&1))
+ l: _/ x* d6 L, N/ @  d{' m' e  n! x3 i0 W4 I- B8 a
pEndScene = (oEndScene)DetourFunction((PBYTE)dwEndScene, (PBYTE)myEndScene);. r" B4 x7 g: R$ o( D) A. J
pDrawIndexedPrimitive = (oDrawIndexedPrimitive)DetourFunction((PBYTE)dwDra wIndexedPrimitive, (PBYTE)myDrawIndexedPrimitive);7 c6 g7 X2 l/ w% E  o
pSetStreamSource = (oSetStreamSource)DetourFunction((PBYTE)dwSetStrea mSource, (PBYTE)mySetStreamSource);
1 j% g/ S" i% ^8 PpSetViewport=(oSetViewport)DetourFunction((PBYTE)d wSetViewport,(PBYTE)mySetViewport);( d- R- `& w( J) d, `  p
}
& u' Z" o/ t; h: c4 d8 Z. p% r% L- T/ [: s& ?
return pBeginScene(pDevice);
9 B- S7 M% d+ i" M}2 s# Z4 [* H2 Q

9 F3 Y/ H$ E. o, Q
' O$ a  a0 ^- v2 \/ k: u. v9 WBOOL WINAPI DllMain ( HMODULE hModule, DWORD dwReason, LPVOID lpReserved )
  l" J; m4 a0 p/ `* {{
4 b- J; Y, X6 Q: C9 L0 y5 sDisableThreadLibraryCalls(hModule);4 ~+ |8 L7 D# j  z
8 h9 t, T4 Q2 f" A
if ( dwReason == DLL_PROCESS_ATTACH ); [9 q  U( Y- L! ~
{
7 c  B: [% J( n
. P) X/ [' D9 L3 m& D" \! Q- \: R$ w//=========Log==========================//( z3 N5 f4 \2 `
GetModuleFileName(hModule, dlldir, 512);
) ~7 a4 H, v; A9 t2 Nfor(int i = strlen(dlldir); i > 0; i--) { if(dlldir == '\\') { dlldir[i+1] = 0; break; } }7 O. f6 J8 H6 x. `9 M; r- \4 u5 z
ofile.open(GetDirectoryFile("log.txt"), ios::app);
! Q2 b  F. y9 A3 ?8 `. m//=========Log=========================/// C  k& O, x. c% f

" s% l% K- _7 C; F, ^pBeginScene = (oBeginScene)DetourFunction((PBYTE)dwBeginScene, (PBYTE)myBeginScene);% j' X5 \; P5 O( U1 T$ z' v1 Q
pEndScene = (oEndScene)DetourFunction((PBYTE)dwEndScene, (PBYTE)myEndScene);
0 z8 X! d% }( z8 f. P( W7 M3 c9 ZpDrawIndexedPrimitive = (oDrawIndexedPrimitive)DetourFunction((PBYTE)dwDra wIndexedPrimitive, (PBYTE)myDrawIndexedPrimitive);
: ?! v: ?2 n# Y; |0 [3 epSetStreamSource = (oSetStreamSource)DetourFunction((PBYTE)dwSetStrea mSource, (PBYTE)mySetStreamSource);# j" ?! B1 ^& q# B+ e9 ?
pSetViewport=(oSetViewport)DetourFunction((PBYTE)d wSetViewport,(PBYTE)mySetViewport);
# s% w. S! |  n0 A  y2 I& p/ i7 [; s/ j
}: l% @' k# @: w; M0 V% B
return TRUE;
; H& y8 r: D! a* s# B0 F2 ]}
5 t3 `4 E8 s9 V% {8 g( r1 U- y! _" g" B; l. _" o' I  j
9 X) \9 \+ d( x; p6 F2 r3 d/ n5 H
Log.h (The header File):
1 O. P/ Y6 M0 A( |% v+ ^  _4 A: x* S4 K; }) v. r* }, ~# w
#define WIN32_LEAN_AND_MEAN
9 W$ ]' k% H0 q2 T" R/ s1 `) @* I; f# I8 a& s  F- u9 K8 W
#ifndef _MAIN_H: C" w. J: b6 X6 Q; X
#define _MAIN_H0 v/ l# ^# O' n' L
: ?* G: {/ \+ b& @4 X6 S) e& a2 O
char *GetDirectoryFile(char *filename);1 n) Z, ]. s! j" d: }8 R# t  x+ V
void __cdecl add_log (const char * fmt, ...);) D* B# T' J" ]$ w7 c( H
#endif $ ]0 ?9 ^. w1 z+ D# w0 v# l

+ s  d0 p: N! I0 E, sNow after you have built your wallhack you will be able 2 find it in :/ x/ T  f0 s8 L( q1 p; x8 f
C:\Users\Your Name\Documents\Visual Studio 2008\Projects\Wallhack\debug (something like that)
9 J. t: V5 P5 N5 d4 n
7 A; S( R) [" L7 ~# T& C/ ^Now I will show you how to make your wallhack undetected:
% h/ s8 `$ K* _1. Download D3d hooks! A3 R8 n! \/ L. a& K8 N5 x
2. Open the file that says "create device code made by me.h"
8 d! }9 s% v" X& z3. You will need to make another header file in your project and then put name it create device and paste that code it.
5 X2 r5 [- f, h+ v7 V4. Your wallhack is now undetected.# P. V4 _, ], a. K8 \+ Z$ M

" w8 T& D' o% h, \7 GCredits:9 C- S/ g0 Y4 A+ O* T  C
1. ME FOR THE TUTURIAL
7 f9 m9 {: U0 M2. THE1FEAR FOR THE VIDEO ON HOW TO COMPILE THE SOURCE CODE  a3 B8 u* P: [9 t5 |$ |
3. FATBOY88 FOR THE SOURCE CODE- f7 m( [5 @8 o4 u8 _8 o& Q) Y
4. THE INDIRECTX I JUST FOUND :P
# Q" L, k8 R  z
) v2 j- U& L- X  \! F! bAttachments:
2 x6 l& @! }# K0 ]* DD3d_hooks: http://www.mediafire.com/?qzz0gwdjvj5
4 B! ?' G. V+ j0 b) m9 N0 jIndirectX: http://www.mediafire.com/?gimzgmeny11
5 t  e/ n' C5 l1 Q7 [$ pMicrosoft Visual C++ 2008: http://www.mediafire.com/?vmyjjnk1qj5' Y$ L4 P- Q3 V9 Q* B0 y
SEARCH THE LAST ONE UP9 S' H% \  g( w1 D
__________________, I) g# O/ I7 h7 }- }

, B7 m3 ?3 e& Z& k <---------- WALLHACKED

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 很美好很美好 很差劲很差劲
回复

使用道具 举报

沙发
发表于 2009-5-26 11:46 | 只看该作者
想请教一下,这个代理研究是什么概念?
回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2009-5-26 17:13 | 只看该作者
把对DirectX 相关的函数调用都转发到我们自己的函数上,这就叫代理。3 m' C6 D8 a5 ^& q
主要用来对付众多的图片字库游戏。同时要结合图像识别技术来运用。
4 E  Y, S/ a# P这是我想出来的新技术,一旦研究出来,就可以实现不少图片字库游戏的汉化,这个技术有一定的通用性。5 |7 F( _( S4 b+ {  i) z
有个帖子,简单的说了一下,以后还会有大量资料放出来的。
+ T# h. s( h4 ^+ K) L, J1 M0 E3 E  Nhttps://www.chinaavg.com/read.php?tid=17190
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

冒险解谜游戏中文网 ChinaAVG

官方微博官方微信号小黑屋 微信玩家群  

(C) ChinaAVG 2004 - 2019 All Right Reserved. Powered by Discuz! X3.2
辽ICP备11008827号 | 桂公网安备 45010702000051号

冒险,与你同在。 冒险解谜游戏中文网ChinaAVG诞生于2004年9月9日,是全球华人共同的冒险解谜类游戏家园。我们致力于提供各类冒险游戏资讯供大家学习交流。本站所有资源均不用于商业用途。

快速回复 返回顶部 返回列表