#include <d3d9.h>
#include <d3dx9.h>
#include "Quelle.h"
#include "color.h"
#include "detour.h"
#include <windows.h>
#include "int.h"
#include "Hacks.h"
#include "d3dmenu.h"
#include "Virtualizer.h"
#pragma comment(lib, "d3d9.lib")
#pragma comment(lib, "D3DX9.LIB")
LPDIRECT3DTEXTURE9 Red,Blue,Pink;
D3D9Menu *Bl4ck = NULL;
CD3DFont* pFont;
D3DVIEWPORT9 g_ViewPort; //ViewPort
float ScreenCenterX = 0.0f;
float ScreenCenterY = 0.0f;
D3DCOLOR colRed = D3DCOLOR_XRGB(255, 0, 0);
LPDIRECT3DVERTEXBUFFER9 StreamData;
UINT OffsetInBytes = 0;
UINT m_Stride = 0;
UINT texnum = 0;
LPDIRECT3DDEVICE9 pDevice;
ID3DXLine *pLine;
LPDIRECT3DVERTEXBUFFER9 Stream_Data;
UINT Offset = 0;
UINT Stride = 0;
//---------------------------------------------------------------------------------------------------------------------------------
#define HOOK(func,addy) p##func = (o##func)CreateJMP_EAX((DWORD)addy,(DWORD)my##func , 7) //Quick Hook using MS Detour
#define UNHOOK(func,addy) p##func = (o##func)CreateJMP_EAX((DWORD)addy,(DWORD)p##func, 7) //Quick Unook using MS Detour
//---------------------------------------------------------------------------------------------------------------------------------
#define ES 0 //EndScene
#define DIP 1 //DrawIndexedPrimitive
#define RES 2 //Reset
#define Detour_Type_0xE9 1
#define Detour_Type_0xB8 2
#define Detour_Type_0x68 3
#define ES 0
#define DIP 1
LPDIRECT3DDEVICE9 npDevice; //pDevice is stored here so we can hook through the VTable
typedef HRESULT (WINAPI* oEndScene) (LPDIRECT3DDEVICE9 pDevice);
oEndScene pEndScene;
int Xhair;
int Xhair1;
int Xhair2;
int Xhair3;
int info;
int test;
int Chams;
bool Color = true;
bool Create;
int CenterX;
int CenterY;
char *folder[] = {"[+]", "[-]"};
char *onoff[] = {"[OFF]", "[ON]"};
char *Ctest[] = { "13/13/1709" };
char *Ctest1[] = { "Manyak" };
char *Ctest2[] = { "v1.9.2" };
char *Ctest3[] = { "Sira Ulo" };
void FillRGB( int x, int y, int w, int h, D3DCOLOR color, IDirect3DDevice9* pDevice )
{
D3DRECT rec = { x, y, x + w, y + h };
pDevice->Clear( 1, &rec, D3DCLEAR_TARGET, color, 0, 0 );
}
HRESULT GenerateTexture(IDirect3DDevice9 *pD3Ddev, IDirect3DTexture9 **ppD3Dtex, DWORD colour32)
{
if(FAILED(pD3Ddev->CreateTexture(8, 8, 1, 0, D3DFMT_A4R4G4B4, D3DPOOL_MANAGED, ppD3Dtex, NULL)))
return E_FAIL;
WORD colour16 = ((WORD)((colour32>>28)&0xF)<<12)
|(WORD)(((colour32>>20)&0xF)<<8)
|(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;
}
void RebuildMenu(void)
{
Bl4ck->AddFolder("Crosshair", folder, &folder1, 2);
if (folder1)
{
Bl4ck->AddItem (" Cross Hair1",onoff, &Xhair, 2);
Bl4ck->AddItem (" Cross Hair2",onoff, &Xhair1, 2);
Bl4ck->AddItem (" Cross Hair3",onoff, &Xhair3, 2);
Bl4ck->AddItem (" RainbowXhair",onoff, &Xhair2, 2);
Bl4ck->AddItem (" Wallhack",onoff, &Chams, 2);
}
Bl4ck->AddFolder("[Info]" , folder, &info, 2);
if (info)
{
Bl4ck->AddItem("Date:" , Ctest , &test ,1);
Bl4ck->AddItem("Group:" , Ctest1 , &test ,1);
Bl4ck->AddItem("Version:" , Ctest2 , &test ,1);
Bl4ck->AddItem("Coded ng:" , Ctest3 , &test ,1);
}
}
typedef HRESULT ( WINAPI* oPresent ) ( LPDIRECT3DDEVICE9 pDevice, CONST RECT* pSourceRect,CONST RECT* pDestRect,HWND hDestWindowOverride,CONST RGNDATA* pDirtyRegion);
oPresent pPresent;
HRESULT WINAPI myPresent ( LPDIRECT3DDEVICE9 pDevice, CONST RECT* pSourceRect,CONST RECT* pDestRect,HWND hDestWindowOverride,CONST RGNDATA* pDirtyRegion)
{
pDevice->GetViewport(&g_ViewPort);
ScreenCenterX = (float) g_ViewPort.Width / 2;
ScreenCenterY = (float) g_ViewPort.Height / 2;
if (Xhair3==1)
{
FillRGB(ScreenCenterX-13, ScreenCenterY, 10, 1,colRed,pDevice);//Left line
FillRGB(ScreenCenterX+4, ScreenCenterY, 10, 1,colRed,pDevice);//Right line
FillRGB(ScreenCenterX, ScreenCenterY-13, 1, 10,colRed,pDevice);//Top line
FillRGB(ScreenCenterX, ScreenCenterY+4, 1, 10,colRed,pDevice);//Bottom line
}
if (Xhair==1)
{
D3DRECT rec1 = {ScreenCenterX-8, ScreenCenterY, ScreenCenterX+ 8+1, ScreenCenterY+1};
D3DRECT rec2 = {ScreenCenterX, ScreenCenterY-8, ScreenCenterX+ 1, ScreenCenterY+8+1};
pDevice->Clear( 1, &rec1, D3DCLEAR_TARGET, D3DCOLOR_ARGB(255,0,255,255), 0, 0 );
pDevice->Clear( 1, &rec2, D3DCLEAR_TARGET, D3DCOLOR_ARGB(255,0,255,255), 0, 0 );
D3DRECT rec3 = {ScreenCenterX-2, ScreenCenterY, ScreenCenterX+ 2+1, ScreenCenterY+1};
D3DRECT rec4 = {ScreenCenterX, ScreenCenterY-2, ScreenCenterX+ 1, ScreenCenterY+2+1};
pDevice->Clear( 1, &rec3, D3DCLEAR_TARGET, D3DCOLOR_ARGB(255,255,0,0), 0, 0 );
pDevice->Clear( 1, &rec4, D3DCLEAR_TARGET, D3DCOLOR_ARGB(255,255,0,0), 0, 0 );
}
if (Xhair1==1)
{
D3DRECT rec1 = {ScreenCenterX-25, ScreenCenterY, ScreenCenterX+ 25, ScreenCenterY+1};
D3DRECT rec2 = {ScreenCenterX, ScreenCenterY-25, ScreenCenterX+ 1,ScreenCenterY+25};
pDevice->Clear( 1, &rec1, D3DCLEAR_TARGET, D3DXCOLOR(1.0, 0.0, 0.0, 1.0), 0, 0 );
pDevice->Clear( 1, &rec2, D3DCLEAR_TARGET, D3DXCOLOR(1.0, 0.0, 0.0, 1.0), 0, 0 );
//red
D3DRECT rec3 = {ScreenCenterX-15, ScreenCenterY, ScreenCenterX+ 15, ScreenCenterY+1};
D3DRECT rec4 = {ScreenCenterX, ScreenCenterY-15, ScreenCenterX+ 1,ScreenCenterY+15};
pDevice->Clear( 1, &rec3, D3DCLEAR_TARGET, D3DXCOLOR(0.0, 0.0, 0.0, 0.0), 0, 0 );
pDevice->Clear( 1, &rec4, D3DCLEAR_TARGET, D3DXCOLOR(0.0, 0.0, 0.0, 0.0), 0, 0 );
// black
D3DRECT rec5 = {ScreenCenterX-3, ScreenCenterY, ScreenCenterX+ 3, ScreenCenterY+1};
D3DRECT rec6 = {ScreenCenterX, ScreenCenterY-3, ScreenCenterX+ 1,ScreenCenterY+3};
pDevice->Clear( 1, &rec5, D3DCLEAR_TARGET, D3DXCOLOR(1.0, 0.0, 0.0, 1.0), 0, 0 );
pDevice->Clear( 1, &rec6, D3DCLEAR_TARGET, D3DXCOLOR(1.0, 0.0, 0.0, 1.0), 0, 0 );
// black
}
if(Xhair2==1)
{
D3DRECT rec4 = {ScreenCenterX-35, ScreenCenterY, ScreenCenterX+ 35, ScreenCenterY+1};
D3DRECT rec5 = {ScreenCenterX, ScreenCenterY-35, ScreenCenterX+ 1,ScreenCenterY+35};
pDevice->Clear( 1, &rec4, D3DCLEAR_TARGET, D3DXCOLOR(0.62745098, 0.125490, 0.959999, 1.0), 0, 0 );//purple
pDevice->Clear( 1, &rec5, D3DCLEAR_TARGET, D3DXCOLOR(0.62745098, 0.125490, 0.959999, 1.0), 0, 0 );
D3DRECT rec6 = {ScreenCenterX-30, ScreenCenterY, ScreenCenterX+ 30, ScreenCenterY+1};
D3DRECT rec7 = {ScreenCenterX, ScreenCenterY-30, ScreenCenterX+ 1,ScreenCenterY+30};
pDevice->Clear( 1, &rec6, D3DCLEAR_TARGET, D3DXCOLOR(0.0, 0.0, 1.0, 1.0), 0, 0 );//blue
pDevice->Clear( 1, &rec7, D3DCLEAR_TARGET, D3DXCOLOR(0.0, 0.0, 1.0, 1.0), 0, 0 );
D3DRECT rec8 = {ScreenCenterX-25, ScreenCenterY, ScreenCenterX+ 25, ScreenCenterY+1};
D3DRECT rec9 = {ScreenCenterX, ScreenCenterY-25, ScreenCenterX+ 1,ScreenCenterY+25};
pDevice->Clear( 1, &rec8, D3DCLEAR_TARGET, D3DXCOLOR(0.0, 1.0, 1.0, 1.0), 0, 0 );//cyan
pDevice->Clear( 1, &rec9, D3DCLEAR_TARGET, D3DXCOLOR(0.0, 1.0, 1.0, 1.0), 0, 0 );
D3DRECT rec10 = {ScreenCenterX-20, ScreenCenterY, ScreenCenterX+ 20, ScreenCenterY+1};
D3DRECT rec11 = {ScreenCenterX, ScreenCenterY-20, ScreenCenterX+ 1,ScreenCenterY+20};
pDevice->Clear( 1, &rec10, D3DCLEAR_TARGET, D3DXCOLOR(0.0, 1.0, 0.0, 1.0), 0, 0 );// green
pDevice->Clear( 1, &rec11, D3DCLEAR_TARGET, D3DXCOLOR(0.0, 1.0, 0.0, 1.0), 0, 0 );
D3DRECT rec12 = {ScreenCenterX-15, ScreenCenterY, ScreenCenterX+ 15, ScreenCenterY+1};
D3DRECT rec13 = {ScreenCenterX, ScreenCenterY-15, ScreenCenterX+ 1,ScreenCenterY+15};
pDevice->Clear( 1, &rec12, D3DCLEAR_TARGET, D3DXCOLOR(1.0, 1.0, 0.0, 1.0), 0, 0 );// yellow
pDevice->Clear( 1, &rec13, D3DCLEAR_TARGET, D3DXCOLOR(1.0, 1.0, 0.0, 1.0), 0, 0 );
D3DRECT rec14 = {ScreenCenterX-10, ScreenCenterY, ScreenCenterX+ 10, ScreenCenterY+1};
D3DRECT rec15 = {ScreenCenterX, ScreenCenterY-10, ScreenCenterX+ 1,ScreenCenterY+10};
pDevice->Clear( 1, &rec14, D3DCLEAR_TARGET, D3DXCOLOR(1.0, 0.549019608, 0.0, 1.0), 0, 0 );// orange
pDevice->Clear( 1, &rec15, D3DCLEAR_TARGET, D3DXCOLOR(1.0, 0.549019608, 0.0, 1.0), 0, 0 );
D3DRECT rec16 = {ScreenCenterX-5, ScreenCenterY, ScreenCenterX+ 5, ScreenCenterY+1};
D3DRECT rec17 = {ScreenCenterX, ScreenCenterY-5, ScreenCenterX+ 1,ScreenCenterY+5};
pDevice->Clear( 1, &rec16, D3DCLEAR_TARGET, D3DXCOLOR(1.0, 0.0, 0.0, 1.0), 0, 0 );//red
pDevice->Clear( 1, &rec17, D3DCLEAR_TARGET, D3DXCOLOR(1.0, 0.0, 0.0, 1.0), 0, 0 );
}
pFont = new CD3DFont("Arial", 8, D3DFONT_BOLD);
pFont->InitDeviceObjects(pDevice);
pFont->RestoreDeviceObjects();
if(Bl4ck == NULL)
{
Bl4ck = new D3D9Menu("PureSkill");
}else{
Bl4ck->MenuShow(12,10,pFont,pDevice);
if(Bl4ck->Mmax==0) RebuildMenu();
Bl4ck->MenuNav();
}
Hacks();
delete pFont;
return pPresent(pDevice, pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion);
}
HRESULT WINAPI myEndScene(LPDIRECT3DDEVICE9 pDevice)
{
while(!npDevice) {
npDevice = pDevice;
}
return pEndScene(pDevice);
}
typedef HRESULT (WINAPI* oDrawIndexedPrimitive)(LPDIRECT3DDEVICE9 pDevice, D3DPRIMITIVETYPE PrimType,INT BaseVertexIndex,UINT MinVertexIndex,UINT NumVertices,UINT startIndex,UINT primCount);
oDrawIndexedPrimitive pDrawIndexedPrimitive = NULL;
HRESULT WINAPI myDrawIndexedPrimitive(LPDIRECT3DDEVICE9 pDevice, D3DPRIMITIVETYPE PrimType,INT BaseVertexIndex,UINT MinVertexIndex,UINT nNumVertices,UINT startIndex,UINT nPrimitiveCount)
{
if(pDevice->GetStreamSource(0,&Stream_Data,&OffsetInBytes,&St ride) == D3D_OK)
Stream_Data->Release();
DWORD dwOldZEnable = D3DZB_TRUE;
if(Color)
{
GenerateTexture(pDevice, &Red, D3DCOLOR_ARGB (255 , 255 , 0 , 0 ));
GenerateTexture(pDevice, &Blue,D3DCOLOR_ARGB(255,0,0,255));
GenerateTexture(pDevice, &Pink, D3DCOLOR_ARGB (255,255,20 ,147));
Color = false;
}
if (Chams==1)
{
if (Stride==40 &&
(ForceRecon)||
(ForceReconAddons)||
(Mulan)||
(MulanAddons)||
(SRG)||
(SRGAddons)||
(KSF)||
(KSFAddons)||
(TheRetard)||
(SAS)||
(SASAddons)||
(ROKMC)||
(ROKMCAddons)||
(GSG9)||
(GSG9Addons)||
(GIGN)||
(GIGNAddons)||
(Delta)||
(DeltaAddons)||
(Spetsnaz)||
(SpetsnazAddons)||
(PSU)||
(PSUAddons)||
(Smokes)||
(Nades)||
(Flash)||
(BlackDevil)||
(DevilWings)||
(AngelWings)||
(ZombieGirl)||
(ZombieMale)||
(Tanker)||
(Risa)||
(BackPack)||
(SSD)||
(SSDAddons)||
(Paskal)||
(cruel)||
(hunter)||
(heavy)||
(Others)||
(SASR)||
(SWOU)||
(Guns)||
(Guns1)||
(Guns2)||
(Weapons)||
(Weapons1)||
(Weapons2)||
(Weapons3)||
(Weapons4)||
(Weapons5)||
(Weapons6)||
(Weapons7)||
(Weapons8)||
(Weapons9)||
(Weapons10)||
(Weapons11)||
(Others1)||
(FatAssZombie)||
(NewAddons))
{
pDevice->SetRenderState( D3DRS_ZENABLE,false );
pDevice->SetRenderState( D3DRS_FILLMODE,D3DFILL_SOLID );
pDevice->SetTexture( 0, Blue );
pDrawIndexedPrimitive(pDevice, PrimType, BaseVertexIndex, MinVertexIndex, nNumVertices, startIndex, nPrimitiveCount);
pDevice->SetRenderState( D3DRS_ZENABLE, true );
pDevice->SetRenderState( D3DRS_FILLMODE,D3DFILL_SOLID );
pDevice->SetTexture( 0, Red);
}
}
return pDrawIndexedPrimitive(pDevice,PrimType, BaseVertexIndex, MinVertexIndex, nNumVertices, startIndex, nPrimitiveCount);
}
//D3D Funcs
int D3D(void)
{
HINSTANCE hD3D;
DWORD vTable[105];
hD3D=0;
do {
hD3D = GetModuleHandle("d3d9.dll");
if (!hD3D) Sleep(10);
} while(!hD3D);
if (D3Ddiscover((void *)&vTable[0],420)==0) return 0;
{
pPresent = (oPresent)DetourCreate((DWORD)vTable[17], (DWORD)myPresent,12);
Sleep(100);
}
return 0;
}
bool hooked = false;
//================================================== ==================================//
void IsD3DModuleLoaded()
{
while(GetModuleHandle("d3d9.dll") == 0){
Sleep(100);
}
}
LRESULT CALLBACK MsgProc(HWND hwnd,UINT uMsg,WPARAM wParam,LPARAM lParam){return DefWindowProc(hwnd, uMsg, wParam, lParam);}
void DX_Init(DWORD* table)
{VIRTUALIZER_START
WNDCLASSEX wc = {sizeof(WNDCLASSEX),CS_CLASSDC,MsgProc,0L,0L,GetMo duleHandle(NULL),NULL,NULL,NULL,NULL,"DX",NULL};
RegisterClassEx(&wc);
HWND hWnd = CreateWindow("DX",NULL,WS_OVERLAPPEDWINDOW,100,100 ,300,300,GetDesktopWindow(),NULL,wc.hInstance,NULL );
LPDIRECT3D9 pD3D = Direct3DCreate9( D3D_SDK_VERSION );
D3DPRESENT_PARAMETERS d3dpp;
ZeroMemory( &d3dpp, sizeof(d3dpp) );
d3dpp.Windowed = TRUE;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.BackBufferFormat = D3DFMT_UNKNOWN;
LPDIRECT3DDEVICE9 pd3dDevice;
pD3D->CreateDevice(D3DADAPTER_DEFAULT,D3DDEVTYPE_HAL,hW nd,D3DCREATE_SOFTWARE_VERTEXPROCESSING,&d3dpp,&pd3 dDevice);
DWORD* pVTable = (DWORD*)pd3dDevice;
pVTable = (DWORD*)pVTable[0];
table[ES] = pVTable[42]; //EndScene address
table[DIP] = pVTable[82]; //DrawIndexedPrimitive address
//table[RES] = pVTable[16]; //Reset address
VIRTUALIZER_END
DestroyWindow(hWnd);
}
DWORD WINAPI LoopFunction(LPVOID lpParam)
{
while(1){
if( hooked == false) {
DWORD VTable[3] = {0};
IsD3DModuleLoaded();
DX_Init(VTable);
HOOK(EndScene,VTable[ES]);
while(!npDevice) {
Sleep(50);
}
UNHOOK(EndScene, VTable[ES]);
void* d3DIP = (void*)(dwD3D9 + (DWORD) + (DWORD) + (DWORD) + (PDWORD)BaseD3D + 1026);//0x4FF50A4B[82]
void* d3ES = (void*)(dwD3D9 + (DWORD) + (DWORD) + (DWORD) + (PDWORD)BaseD3D + 1036);//0x4FF19FEA[42]
{
int i;
for (i = 0 ; i <= 0 ; i++){
DWORD d,ds;
VirtualProtect((void*)(d3ES), 4, PAGE_EXECUTE_READWRITE, &d);
memcpy(d3ES,(void*)(d3ES), 4);
VirtualProtect((void*)(d3ES), 4, d, &ds);
}}
int C;
for (C = 0 ; C <= 0 ; C++){
{
DWORD d,ds;
VirtualProtect((void*)(d3DIP), 4, PAGE_EXECUTE_READWRITE, &d);
memcpy(d3DIP,(void*)(d3DIP), 4);
VirtualProtect((void*)(d3DIP), 4, d, &ds);
}}
CreateDetour((DWORD)myDrawIndexedPrimitive, (DWORD)d3DIP*C,Detour_Type_0xB8,7);
CreateDetour((DWORD)myEndScene, (DWORD)d3ES*C,Detour_Type_0xB8,7);
*(PDWORD)&pDrawIndexedPrimitive = VTable[DIP];
*(PDWORD)&pEndScene = VTable[ES];
hooked = true;
}
Sleep(10);
void* d3DIP = (void*)(dwD3D9 + (DWORD) + (DWORD) + (DWORD) + (PDWORD)BaseD3D + 1026);//0x4FF505B0[82]
void* d3ES = (void*)(dwD3D9 + (DWORD) + (DWORD) + (DWORD) + (PDWORD)BaseD3D + 1036);//0x4FF50260[42]
{
DWORD Dark,ds;
VirtualProtect((void*)(d3ES), 4, PAGE_EXECUTE_READWRITE, &Dark);
memcpy((void*)d3ES, (const void*)d3ES, 4);
VirtualProtect((void*)(d3ES), 4, Dark, &ds);
}
int i;
for (i = 0 ; i <= 15 ; i++){
{
DWORD d,ds;
VirtualProtect((void*)(d3DIP), 4, PAGE_EXECUTE_READWRITE, &d);
memcpy((void*)d3DIP, (const void*)d3DIP, 4);
VirtualProtect((void*)(d3DIP), 4, d, &ds);
}
}
while( 1 )
{
Sleep(300);
int i;
for (i = 0 ; i <= 15 ; i++){
if(memcmp((void *)d3DIP, (void *)d3DIP, 82) == 0 ) // Protect Hook Draw Indexed Primitive
ProtectHook((LPDWORD*)npDevice, (PBYTE)d3DIP, 82);
}
for (i = 0 ; i <= 15 ; i++){
if(memcmp((void *)d3ES, (void *)d3ES, 42) == 0 ) // Protect Hook End Scene
ProtectHook((LPDWORD*)npDevice, (PBYTE)d3ES, 42);
}
}
Sleep(100*2);
}
return 0;
}
BOOL WINAPI DllMain(HMODULE hDll, DWORD dwReason, LPVOID lpvReserved)
{
DisableThreadLibraryCalls(hDll);
if(dwReason == DLL_PROCESS_ATTACH) {
MessageBox(0, "Pinoy Hideout Public Hack\n\n\n Credits:\n Trismund\n Shashimi\n
www.pinoyhideou*****m\n www.pinoyhosting.info\n www.autolikers.com", "Pinoy Hideout", MB_OK);
CreateThread(0, 0, (LPTHREAD_START_ROUTINE)LoopFunction, 0, 0, 0);
HideModule(hDll);
CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)D3D, NULL, NULL, NULL);
}
return TRUE;
}