[AC]*[V]0[V]3NToFtRUTH Site Owner
Posts : 210 Points : 1000140 Reputation : 0 Join date : 2010-01-18 Age : 38 Location : manila,philipines
| Subject: Soreback's D3D Hax Fri Feb 05, 2010 8:02 am | |
| - Code:
-
#include "stdafx.h" #include <windows.h> #include <d3d8.h> #pragma comment(lib, "d3d8.lib")
int m_Stride; // We define The model stride int wireframe; //We define wireframe int nofog; //we define nofog int fullbright; // we define fullbright int chams; // we define chams
bool bCompare(const BYTE* pData, const BYTE* bMask, const char* szMask); DWORD FindPattern(DWORD dwAddress,DWORD dwLen,BYTE *bMask,char * szMask); void *DetourFunc(BYTE *src, const BYTE *dst, const int len); int D3D8BASE (void); int sleepthread2 (void); int sleepthread (void); int texnum; int nNumVertices; int nPrimitiveCount; //=====================================================================================================================================================================================================================================================================================================================// //==================================Defines============================================ #define ForceRecon (nNumVertices == 83 && nPrimitiveCount == 137 || nNumVertices == 79 && nPrimitiveCount == 105 || nNumVertices == 142 && nPrimitiveCount == 174 || nNumVertices == 278 && nPrimitiveCount == 462 || nNumVertices == 263 && nPrimitiveCount == 290 || nNumVertices == 316 && nPrimitiveCount == 556) #define ForceReconAddons (nNumVertices == 432 && nPrimitiveCount == 354 || nNumVertices == 144 && nPrimitiveCount == 136 || nNumVertices == 299 && nPrimitiveCount == 311 || nNumVertices == 167 && nPrimitiveCount == 252 || nNumVertices == 298 && nPrimitiveCount == 506 || nNumVertices == 168 && nPrimitiveCount == 254 || nNumVertices == 860 && nNumVertices == 778 || nNumVertices == 648 && nPrimitiveCount == 710 || nNumVertices == 113 && nPrimitiveCount == 189 || nNumVertices == 142 && nPrimitiveCount == 172 || nNumVertices == 87 && nPrimitiveCount == 90 || nNumVertices == 79 && nPrimitiveCount == 105 || nNumVertices == 84 && nPrimitiveCount == 110 || nNumVertices == 70 && nPrimitiveCount == 70 || nNumVertices == 860 && nPrimitiveCount == 778 || nNumVertices == 85 && nPrimitiveCount == 137) #define Mulan (nNumVertices == 118 && nPrimitiveCount == 126|| nNumVertices == 121 && nPrimitiveCount == 180|| nNumVertices == 124 && nPrimitiveCount == 126|| nNumVertices == 295 && nPrimitiveCount == 482|| nNumVertices == 299 && nPrimitiveCount == 452|| nNumVertices == 474 && nPrimitiveCount == 728) #define MulanAddons (nNumVertices == 162 && nPrimitiveCount == 200|| nNumVertices == 120 && nPrimitiveCount == 188|| nNumVertices == 167 && nPrimitiveCount == 276|| nNumVertices == 108 && nPrimitiveCount == 198|| nNumVertices == 512 && nPrimitiveCount == 728|| nNumVertices == 790 && nPrimitiveCount == 881|| nNumVertices == 619 && nPrimitiveCount == 800|| nNumVertices == 399 && nPrimitiveCount == 532|| nNumVertices == 402 && nPrimitiveCount == 580|| nNumVertices == 102 && nPrimitiveCount == 170|| nNumVertices == 125 && nPrimitiveCount == 98|| nNumVertices == 116 && nPrimitiveCount == 128|| nNumVertices == 160 && nPrimitiveCount == 174) //=================================================================================================== LPDIRECT3DTEXTURE8 Red; LPDIRECT3DTEXTURE8 Yellow; LPDIRECT3DTEXTURE8 Green; LPDIRECT3DTEXTURE8 Blue; LPDIRECT3DTEXTURE8 Purple; LPDIRECT3DTEXTURE8 Orange; LPDIRECT3DTEXTURE8 Pink; float ScreenCenterX = 0.0f; float ScreenCenterY = 0.0f; bool xhair = false; D3DCOLOR redt = D3DCOLOR_XRGB( 255, 0, 0 ); //#define D3DHOOK_TEXTURES //comment this to disable texture hooking #pragma warning(disable : 4996) // ignore the warning //======================================================================================================================================================================================================================================================================================================================// HRESULT GenerateTexture(IDirect3DDevice8 *pD3Ddev, IDirect3DTexture8 **ppD3Dtex, DWORD colour32) { if( FAILED(pD3Ddev->CreateTexture(8, 8, 1, 0, D3DFMT_A4R4G4B4, D3DPOOL_MANAGED, ppD3Dtex)) ) return E_FAIL;
WORD colour16 = ((WORD)((colour32>>28)&0xF)<<12) |(WORD)(((colour32>>20)&0xF)<< |(WORD)(((colour32>>12)&0xF)<<4) |(WORD)(((colour32>>4)&0xF)<<0);
D3DLOCKED_RECT d3dlr; (*ppD3Dtex)->LockRect(0, &d3dlr, 0, 0); WORD *pDst16 = (WORD*)d3dlr.pBits;
for(int xy=0; xy < 8*8; xy++) *pDst16++ = colour16;
(*ppD3Dtex)->UnlockRect(0);
return S_OK; } //============================================================================================================== HRESULT Initialize(LPDIRECT3DDEVICE8 pDevice) { GenerateTexture(pDevice, &Red,D3DCOLOR_ARGB(255,255,0,0));//<< Declare us Red Color GenerateTexture(pDevice, &Yellow,D3DCOLOR_ARGB(255,255,255,0)); // Declare Yellow Color GenerateTexture(pDevice, &Green,D3DCOLOR_ARGB(255,255,0,0));//Declare us Green Color GenerateTexture(pDevice, &Blue,D3DCOLOR_ARGB(255,255,0,0));//Declare us Blue Color GenerateTexture(pDevice, &Purple,D3DCOLOR_ARGB(255,255,0,0));//Declare us Purple Color GenerateTexture(pDevice, &Orange,D3DCOLOR_ARGB(255,255,0,0));//Declare us Orange Color GenerateTexture(pDevice, &Pink,D3DCOLOR_ARGB(255,255,0,0));//Declare us Pink Color return S_OK; }
//================================================================================================================ typedef HRESULT ( WINAPI* oDrawIndexedPrimitive ) ( LPDIRECT3DDEVICE8 pDevice, D3DPRIMITIVETYPE pType, UINT nMinIndex, UINT nNumVertices, UINT nStartIndex, UINT nPrimitiveCount ); oDrawIndexedPrimitive pDrawIndexedPrimitive, OriginalDrawIndexedPrimitive;
HRESULT WINAPI myDrawIndexedPrimitive(LPDIRECT3DDEVICE8 pDevice, D3DPRIMITIVETYPE pType, UINT nMinIndex, UINT nNumVertices, UINT nStartIndex, UINT nPrimitiveCount) { if(wireframe) // if wireframe on {
if (m_Stride==40) { pDevice->SetRenderState(D3DRS_FILLMODE, D3DFILL_WIREFRAME); // if model stride is activ then draw all objects with stride 40 as Wireframe }
} //=================================================================================================================================================================// //=============================================NoFog======================================================================================================// if(nofog) // if nofog on { // then pDevice->SetRenderState(D3DRS_FOGENABLE, false); // Disable the Fog } // end of then
//============================================================================================================================================================= if(chams) { texnum = (nNumVertices*100000)+nPrimitiveCount; if(m_Stride==40 && (texnum==34900580)|| // Delta Force Head (texnum==36100604)|| // Spetsnaz Head (texnum==38000658)|| // Spetsnaz Legs (texnum==18300268)|| // Spetsnaz Body (texnum==36200604)|| // GIGN Head (texnum==21200306)|| // GIGN Body (texnum==35500568)|| // GSG9 Head (texnum==2200024)|| // GSG9 Bangs (texnum==8800105)|| // GSG9 Feet (texnum==36900650)|| // GSG9 Legs (texnum==19600314)|| // GSG9 Body (texnum==36700612)|| // SAS Head (texnum==8500105)|| // SAS Feet (texnum==37000650)|| // SAS Legs (texnum==18000274)|| // SAS Body (texnum==35300556)|| // KSF Head (texnum==7500121)|| // KSF Arms (texnum==9200115)|| // KSF Feet (texnum==12400168)|| // KSF Hands (texnum==30100522)|| // KSF Legs (texnum==18700288)|| // KSF Body (texnum==40900594)|| // ARTC Head (texnum==11700190)|| // ARTC Arms (texnum==9100118)|| // ARTC Feet (texnum==12500170)|| // ARTC Hands (texnum==37000634)|| // ARTC Legs (texnum==41700516)|| // ARTC Body (texnum==19400260)|| // ROKMC Body (texnum==37900592)|| // ROKMC Head (texnum==36500642)|| // ROKMC Legs (texnum==44800776)|| // SRG Head (texnum==15900200)|| // SRG Left Arm (texnum==10500168)|| // SRG Right Arm (texnum==80401016)|| // SRG Body (texnum==10000121)|| // SRG Feet (texnum==13200180)|| // SRG Hands (ForceRecon)|| // ForceRecon (Mulan)|| (texnum==33800534)) // SRG Leg
{ pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_NEVER); pDevice->SetTexture(0,Yellow); pDrawIndexedPrimitive(pDevice, pType, nMinIndex, nNumVertices, nStartIndex, nPrimitiveCount); pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE); pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_LESSEQUAL); pDevice->SetTexture(0,Red); }
if (nNumVertices == 213 && nPrimitiveCount == 174) // M67 Grenade =============== // { pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_NEVER); pDevice->SetTexture(0,Red); pDrawIndexedPrimitive(pDevice, pType, nMinIndex, nNumVertices, nStartIndex, nPrimitiveCount); pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE); pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_LESSEQUAL); pDevice->SetTexture(0,Green); }
if (nNumVertices == 158 && nPrimitiveCount == 131) // Flashbang =============== // { pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_NEVER); pDevice->SetTexture(0,Red); pDrawIndexedPrimitive(pDevice, pType, nMinIndex, nNumVertices, nStartIndex, nPrimitiveCount); pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE); pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_LESSEQUAL); pDevice->SetTexture(0,Green); }
if (nNumVertices == 171 && nPrimitiveCount == 143) // Smoke Grenade =============== // { pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_NEVER); pDevice->SetTexture(0,Red); pDrawIndexedPrimitive(pDevice, pType, nMinIndex, nNumVertices, nStartIndex, nPrimitiveCount); pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE); pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_LESSEQUAL); pDevice->SetTexture(0,Blue); }
if (nNumVertices == 271 && nPrimitiveCount == 257) // VX Grenade =============== // { pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_NEVER); pDevice->SetTexture(0,Red); pDrawIndexedPrimitive(pDevice, pType, nMinIndex, nNumVertices, nStartIndex, nPrimitiveCount); pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE); pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_LESSEQUAL); pDevice->SetTexture(0,Blue); }
if (nNumVertices == 338 && nPrimitiveCount == 339) // RGD-5 Grenade =============== // { pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_NEVER); pDevice->SetTexture(0,Red); pDrawIndexedPrimitive(pDevice, pType, nMinIndex, nNumVertices, nStartIndex, nPrimitiveCount); pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE); pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_LESSEQUAL); pDevice->SetTexture(0,Yellow); }
if (m_Stride==40 && // Equipment =============== // (texnum==13200212)|| // Delta Force Helmet (texnum==13200212)|| // Delta Force Helmet 2 (texnum==34700538)|| // Delta Force Gas Mask (texnum==19500352)|| // Delta Force Balaclava (texnum==84900778)|| // Delta Force Clan BDU (texnum==27500442)|| // Delta Force Body Armor (texnum==42800576)|| // Delta Force Body Armor 2 (texnum==52100658)|| // Delta Force Tactical Vest (texnum==12200196)|| // Spetsnaz Helmet (texnum==27100464)|| // Spetsnaz Gas Mask (texnum==33600552)|| // Spetsnaz Body Armor (texnum==44100646)|| // Spetsnaz Tactical Vest (texnum==17800292)|| // GIGN Red Bandana (texnum==21300290)|| // GIGN Helmet (texnum==2800036)|| // GIGN Helmet Lens (texnum==35700558)|| // GIGN Gas Mask (texnum==22100396)|| // GIGN Balaclava (texnum==29700492)|| // GIGN Body Armor (texnum==11200188)|| // ROKMC Beret (texnum==12000194)|| // ROKMC Helmet (texnum==29800450)|| // ROKMC Gas Mask (texnum==27100394)|| // ROKMC Body Armor (texnum==28700374)|| // ROKMC X Harness (texnum==34700470)|| // ROKMC X Harness (texnum==5100056)|| // ROKMC Pouch (texnum==9900163)|| // ROKMC Left Arm (texnum==18300163)|| // ROKMC Right Arm (texnum==16400266)|| // GSG9 Red Bandana (texnum==16200243)|| // GSG9 Helmet (texnum==31900466)|| // GSG9 Gas Mask (texnum==19300342)|| // GSG9 Balaclava (texnum==83600752)|| // GSG9 Clan BDU (texnum==33400477)|| // GSG9 Body Armor (texnum==10500163)|| // GSG9 Rolled Up Sleeves (texnum==38100666)|| // GSG9 Tactical Knee Pads (texnum==9600172)|| // SAS Boonie Hat (texnum==14200236)|| // SAS Helmet (texnum==37800552)|| // SAS Gas Mask (texnum==28100486)|| // SAS Balaclava (texnum==62400752)|| // SAS Clan BDU (texnum==27900456)|| // SAS Body Armor (texnum==45700654)|| // SAS Tactical Vest (texnum==39800532)|| // SAS Tactical Vest 2 (texnum==9200100)|| // SAS Holster (texnum==4800040)|| // SAS Magazine Pouch (texnum==4000044)|| // SAS Pouch (texnum==6500110) || // KSF Boonie Hat (texnum==12900208)|| // KSF Helmet (texnum==29600448)|| // KSF Gas Mask (texnum==31100398)|| // KSF Sunglasses (texnum==84700776)|| // KSF Clan BDU (texnum==600004)|| // KSF Clan BDU Logo (texnum==36500606)|| // KSF Body Armor (texnum==63100646)|| // KSF Tactical Vest (texnum==19800163)|| // KSF Rolled Up Sleeves (texnum==7000066)|| // KSF Holster (texnum==10400190)|| // SRG Beret (texnum==23800294)|| // SRG Deer Head (texnum==11600180)|| // SRG NIJ IIIA Helmet (texnum==17100278)|| // SRG Red Bandana (texnum==14600198)|| // SRG Battle Cap (texnum==18200266)|| // SRG Helmet (texnum==19100106)|| // SRG Gas Mask (texnum==54300350)|| // SRG Sunglasses (texnum==30800380)|| // SRG Mid Class Sunglasses (texnum==79300995)|| // SRG Clan BDU 1 (texnum==13300138)|| // SRG Clan BDU 2 (texnum==300001)|| // SRG Clan BDU 3 (texnum==1200012)|| // SRG Clan BDU Logo (texnum==10900110)|| // SRG Bulletproof Vest (texnum==6200064)|| // SRG Holster (ForceReconAddons)|| (MulanAddons)|| (texnum==22700250)) // SRG Pouch
{ pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_NEVER); pDevice->SetTexture(0,Green); pDrawIndexedPrimitive(pDevice, pType, nMinIndex, nNumVertices, nStartIndex, nPrimitiveCount); pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE); pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_LESSEQUAL); pDevice->SetTexture(0,Blue); }
if (m_Stride==40 && // Guns =============== // (texnum==187200968)|| // GALIL (texnum==187200968)|| // GALIL 2 (texnum==149701124)|| // UZI (texnum==193701304)|| // M249 (texnum==232501431)|| // SIG551 (texnum==161500751)|| // FA-MAS (texnum==107400724)|| // FR-F2 (texnum==141600900)|| // AN94 (texnum==145900805)|| // G36C (texnum==42200339)|| // K1 (texnum==23400116)|| // K1 2 (texnum==17500073)|| // K1 3 (texnum==3200012)|| // K1 4 (texnum==2300012)|| // K1 5 (texnum==71900459)|| // MP5 (texnum==1800008)|| // MP5 2 (texnum==20300084)|| // MP5 3 (texnum==16700083)|| // MP5 4 (texnum==79100469)|| // M4A1 (texnum==12000044)|| // M4A1 2 (texnum==16800062)|| // M4A1 3 (texnum==2400008)|| // M4A1 4 (texnum==600002)|| // M4A1 5 (texnum==12800050)|| // M4A1 6 (texnum==2600010)|| // M4A1 7 (texnum==4200014)|| // M4A1 8 (texnum==1400008)|| // M4A1 9 (texnum==80600442)|| // M16A2 (texnum==13400052)|| // M16A2 2 (texnum==17600066)|| // M16A2 3 (texnum==5400018)|| // M16A2 4 (texnum==46200348)|| // STEYR_AUG (texnum==27000133)|| // STEYR_AUG 2 (texnum==4100025)|| // STEYR_AUG 3 (texnum==1200006)|| // STEYR_AUG 4 (texnum==400002)|| // STEYR_AUG 5 (texnum==46800367)|| // PSG-1 (texnum==9600042)|| // PSG-1 2 (texnum==18800092)|| // PSG-1 3 (texnum==16900071)|| // PSG-1 4 (texnum==3400012)|| // PSG-1 5 (texnum==800004)|| // PSG-1 6 (texnum==40500383)|| // K2 (texnum==15800089)|| // K2 2 (texnum==2200012)|| // K2 3 (texnum==7000034)|| // K2 4 (texnum==60700349)|| // P90 (texnum==5500033)|| // P90 2 (texnum==47700227)|| // P90 3 (texnum==10300047)|| // P90 4 (texnum==3800014)|| // P90 5 (texnum==50300349)|| // AK-74 (texnum==14700071)|| // AK-74 2 (texnum==13100061)|| // AK-74 3 (texnum==194501145)|| // MG36 (texnum==116000670)|| // DESERT EAGLE (texnum==182101089)|| // MR73 (texnum==62500454)|| // REMINGTON M870 (texnum==95200571)|| // BENELLI M1 (texnum==40700334)|| // GLOCK 23 (texnum==71500449)|| // BERETTA M92F (texnum==11000044)|| // BERETTA M92F 2 (texnum==16500075)|| // BERETTA M92F 3 (texnum==4400020)|| // BERETTA M92F 4 (texnum==2800014)|| // BERETTA M92F 5 (texnum==92000543)|| // COLT 45 (texnum==239001276)) // DRAGONUV { pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE); pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_NEVER); pDevice->SetTexture(0,Blue); pDrawIndexedPrimitive(pDevice, pType, nMinIndex, nNumVertices, nStartIndex, nPrimitiveCount); pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_TRUE); pDevice->SetRenderState(D3DRS_ZFUNC,D3DCMP_LESSEQUAL); pDevice->SetTexture(0,Green); } }
return pDrawIndexedPrimitive(pDevice, pType, nMinIndex, nNumVertices, nStartIndex, nPrimitiveCount); }
//========================================================================================================================= typedef HRESULT ( WINAPI* oSetRenderState ) ( LPDIRECT3DDEVICE8 pDevice, D3DRENDERSTATETYPE State, DWORD Value); oSetRenderState pSetRenderState;
HRESULT WINAPI mySetRenderState(LPDIRECT3DDEVICE8 pDevice, D3DRENDERSTATETYPE State, DWORD Value) { if(fullbright) { pDevice->SetRenderState(D3DRS_LIGHTING, false); //d3d lighting off pDevice->SetRenderState(D3DRS_AMBIENT,D3DCOLOR_ARGB(255,255,255,255)); // use all colors to glow up the lighting ingame }
return pSetRenderState(pDevice,State, Value); } //==================================================================================================================================================== /*typedef HRESULT ( WINAPI* oCreateTexture ) ( LPDIRECT3DDEVICE8 pDevice, UINT Width,UINT Height,UINT Levels,DWORD Usage,D3DFORMAT Format,D3DPOOL Pool,IDirect3DTexture8** ppTexture); oCreateTexture pCreateTexture;
HRESULT myCreateTexture(LPDIRECT3DDEVICE8 pDevice,UINT Width,UINT Height,UINT Levels,DWORD Usage,D3DFORMAT Format,D3DPOOL Pool,IDirect3DTexture8** ppTexture) { HRESULT hRet = pDevice->CreateTexture(Width, Height, Levels, Usage, Format, Pool, ppTexture);
#ifdef D3DHOOK_TEXTURES if(hRet == D3D_OK) { *ppTexture = new IDirect3DTexture8(ppTexture,Width, Height, Format); } #endif
return hRet; } */ //==================================================================================================================================================== typedef HRESULT ( WINAPI* oEndScene ) ( LPDIRECT3DDEVICE8 pDevice ); oEndScene pEndScene;
HRESULT WINAPI myEndScene(LPDIRECT3DDEVICE8 pDevice) {
//==============================================XHAIR==================================================================================================// if(xhair) { D3DRECT rec2 = {ScreenCenterX-20, ScreenCenterY, ScreenCenterX+ 20, ScreenCenterY+2}; D3DRECT rec3 = {ScreenCenterX, ScreenCenterY-20, ScreenCenterX+ 2,ScreenCenterY+20}; pDevice->Clear(1, &rec2, D3DCLEAR_TARGET,redt, 0, 0); pDevice->Clear(1, &rec3, D3DCLEAR_TARGET,redt, 0, 0); } //======================================================================================================================================================// if (GetAsyncKeyState(VK_F3)&1) // if we click f3 { //then wireframe = !wireframe; //wireframe = on } // end of then
if (GetAsyncKeyState(VK_F2)&1) // if we click f2 { //then nofog = !nofog; //nofog = on } //end of then
if (GetAsyncKeyState(VK_F9)&1) // If we click f9 { fullbright = !fullbright; } //fullbright = on
if (GetAsyncKeyState(VK_F8)&1) // if we click f8 { xhair = !xhair; } // xhair = on
if (GetAsyncKeyState(VK_F1)&1) // if we click f1 { chams = !chams; } // chams = on
return pEndScene(pDevice); } //============================================================================================================= //=====================================Sss_Start==========================================================================// typedef HRESULT ( WINAPI* oSetStreamSource ) ( LPDIRECT3DDEVICE8 pDevice, UINT nStreamNumber, LPDIRECT3DVERTEXBUFFER8 pStreamData, UINT nStride ); oSetStreamSource pSetStreamSource;
HRESULT WINAPI mySetStreamSource(LPDIRECT3DDEVICE8 pDevice, UINT nStreamNumber, LPDIRECT3DVERTEXBUFFER8 pStreamData, UINT nStride) { if(nStreamNumber==0) m_Stride = nStride;
return pSetStreamSource(pDevice, nStreamNumber, pStreamData, nStride); } //====================================Sss_End============================================================================// //====================================Svp_Start==========================================================================// typedef HRESULT (WINAPI* oSetViewport)(LPDIRECT3DDEVICE8 pDevice,CONST D3DVIEWPORT8* pViewport); oSetViewport pSetViewport;
HRESULT WINAPI mySetViewport(LPDIRECT3DDEVICE8 pDevice,CONST D3DVIEWPORT8* pViewport) { ScreenCenterX = ( float )pViewport->Width / 2; ScreenCenterY = ( float )pViewport->Height / 2;
return pSetViewport(pDevice,pViewport); } //===================================Svp_End=============================================================================// //==========================================FindPatt======================================================================// bool bCompare(const BYTE* pData, const BYTE* bMask, const char* szMask) { for(;*szMask;++szMask,++pData,++bMask) if(*szMask=='x' && *pData!=*bMask) return 0; return (*szMask) == NULL; } //======================================================================= DWORD FindPattern(DWORD dwAddress,DWORD dwLen,BYTE *bMask,char * szMask) { for(DWORD i=0; i<dwLen; i++) if (bCompare((BYTE*)(dwAddress+i),bMask,szMask)) return (DWORD)(dwAddress+i); return 0; } //======================================================================= void *DetourFunc(BYTE *src, const BYTE *dst, const int len) { BYTE *jmp = (BYTE*)malloc(len+5); DWORD dwBack; VirtualProtect(src, len, PAGE_READWRITE, &dwBack); memcpy(jmp, src, len); jmp += len; jmp[0] = 0xE9; *(DWORD*)(jmp+1) = (DWORD)(src+len - jmp) - 5; src[0] = 0x90; //50 src[1] = 0x90; // 58 src[2] = 0xE9; *(DWORD*)(&src[3]) = (DWORD)(dst - src) - 7; for (int i=7; i<len; i++) src[i] = 0x90; VirtualProtect(src, len, dwBack, &dwBack); return (jmp-len); }
//=======================================Vtable Hook====================================================================// int D3D8BASE (void) { HMODULE D3D8BASE = NULL; for (;D3D8BASE == NULL;Sleep(100)) D3D8BASE = LoadLibrary("d3d8.dll"); DWORD* VTableHook = 0; DWORD hD3D8 = (DWORD)GetModuleHandle("d3d8.dll"); DWORD VIRTUALTABLE = FindPattern(hD3D8, 0x128000, (PBYTE)"\xC7\x06\x00\x00\x00\x00\x89\x86\x00\x00\x00\x00\x89\x86", "xx????xx????xx"); memcpy(&VTableHook, (void*)(VIRTUALTABLE+2), 4);
DWORD dwEndScene = VTableHook[35]; DWORD dwDrawIndexedPrimitive = VTableHook[71]; DWORD dwSetStreamSource = VTableHook[83]; DWORD dwSetViewport = VTableHook[40]; DWORD dwSetRenderState = VTableHook[50];
pDrawIndexedPrimitive = (oDrawIndexedPrimitive)DetourFunc((PBYTE)dwDrawIndexedPrimitive, (PBYTE)myDrawIndexedPrimitive, 7); pSetStreamSource = (oSetStreamSource)DetourFunc((PBYTE)dwSetStreamSource, (PBYTE)mySetStreamSource, 7); pEndScene = (oEndScene)DetourFunc((PBYTE)dwEndScene, (PBYTE)myEndScene, 7); pSetViewport = (oSetViewport)DetourFunc((PBYTE)dwSetViewport, (PBYTE)mySetViewport, 7); pSetRenderState = (oSetRenderState)DetourFunc((PBYTE)dwSetRenderState, (PBYTE)mySetRenderState, 7);
return 0; }
BOOL WINAPI DllMain ( HMODULE hDll, DWORD dwReason, LPVOID lpReserved ) { DisableThreadLibraryCalls(hDll);
if ( dwReason == DLL_PROCESS_ATTACH ) { CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)D3D8BASE, NULL, NULL, NULL);
} return TRUE; } | |
|