void PreReset( LPDIRECT3DDEVICE8 pDevice )
{
// Code here
Menu.PreReset();
return;
}
void PostReset( LPDIRECT3DDEVICE8 pDevice )
{
// Code here
Menu.PostReset(pDevice);
return;
}
typedef HRESULT ( WINAPI* oReset )( LPDIRECT3DDEVICE8 pDevice, D3DPRESENT_PARAMETERS* pPresentationParameters );
oReset pReset;
HRESULT APIENTRY myReset( LPDIRECT3DDEVICE8 pDevice, D3DPRESENT_PARAMETERS* pPresentationParameters )
{
_asm pushad;
// Code here
PreReset( pDevice );
HRESULT hRet = pReset( pDevice, pPresentationParameters );
if( SUCCEEDED( hRet ) )
{
PostReset( pDevice );
}
_asm popad;
return hRet;
}
typedef HRESULT (WINAPI* oPresent) (LPDIRECT3DDEVICE8 pDevice, CONST RECT* pSourceRect,CONST RECT* pDestRect,HWND hDestWindowOverride,CONST RGNDATA* pDirtyRegion);
oPresent pPresent;
HRESULT APIENTRY myPresent(LPDIRECT3DDEVICE8 pDevice, CONST RECT* pSourceRect,CONST RECT* pDestRect, HWND hDestWindowOverride,CONST RGNDATA* pDirtyRegion)
{
_asm pushad;
// Code here
_asm popad;
return pPresent(pDevice, pSourceRect, pDestRect, hDestWindowOverride, pDirtyRegion);
}
typedef HRESULT ( WINAPI* oBeginScene )( LPDIRECT3DDEVICE8 pDevice );
oBeginScene pBeginScene;
HRESULT APIENTRY myBeginScene( LPDIRECT3DDEVICE8 pDevice )
{
_asm pushad;
// Code here
_asm popad;
return pBeginScene( pDevice );
}
typedef HRESULT ( WINAPI* oEndScene )( LPDIRECT3DDEVICE8 pDevice );
oEndScene pEndScene;
HRESULT APIENTRY myEndScene( LPDIRECT3DDEVICE8 pDevice )
{
_asm pushad;
PostReset(pDevice);
Menu.ShowMenu(pDevice);
PreReset(pDevice);
_asm popad;
return pEndScene( pDevice );
}
typedef HRESULT (WINAPI* oDrawIndexedPrimitive) (LPDIRECT3DDEVICE8 pDevice, D3DPRIMITIVETYPE pType, UINT nMinIndex, UINT nNumVertices, UINT nStartIndex, UINT nPrimitiveCount );
oDrawIndexedPrimitive pDrawIndexedPrimitive;
HRESULT APIENTRY myDrawIndexedPrimitive(LPDIRECT3DDEVICE8 pDevice, D3DPRIMITIVETYPE pType, UINT nMinIndex, UINT nNumVertices, UINT nStartIndex, UINT nPrimitiveCount)
{
_asm pushad;
LPDIRECT3DVERTEXBUFFER8 Stream;
UINT m_Stride;
// Credits to Shad0w ******.com / *********.com even though its basic ^^ - Pheron
if(pDevice->GetStreamSource(0,&Stream,&m_Stride)==D3D_OK)Stre am->Release();
// Code here
switch(opt.d3d.fog)//
{
case 1: pDevice->SetRenderState(D3DRS_FOGCOLOR,D3DCOLOR_ARGB(0,0,0 ,255));break;
case 2: pDevice->SetRenderState(D3DRS_FOGCOLOR,D3DCOLOR_ARGB(0,0,2 55,0));break;
case 3: pDevice->SetRenderState(D3DRS_FOGCOLOR,D3DCOLOR_ARGB(0,255 ,0,0));break;
case 4: pDevice->SetRenderState(D3DRS_FOGCOLOR,D3DCOLOR_ARGB(0,160 ,0,255));break;
case 5: pDevice->SetRenderState(D3DRS_FOGCOLOR,D3DCOLOR_ARGB(0,255 ,255,255));break;
case 6: pDevice->SetRenderState(D3DRS_FOGCOLOR,D3DCOLOR_ARGB(0,0,0 ,0));break;
case 7: pDevice->SetRenderState(D3DRS_FOGENABLE, false);break;
}
if(m_Stride==40 && opt.d3d.glass == 1)
{
pDevice->SetRenderState(D3DRS_ZENABLE,false);
}
if(m_Stride==44 && opt.chams.chams)
{
pDevice->SetRenderState(D3DRS_ZENABLE,false);
if(opt.chams.type==1)// Phantom Chams
{
pDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,true);
pDevice->SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVDESTCO LOR);
pDevice->SetRenderState(D3DRS_SRCBLEND,D3DBLEND_INVSRCALPH A);
}
if(opt.chams.type==2)// Ghost Chams
{
pDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,true);
pDevice->SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVDESTCO LOR);
pDevice->SetRenderState(D3DRS_SRCBLEND,D3DBLEND_INVSRCCOLO R);
}
if(opt.chams.type==3)
{
pDevice->SetTexture(0,NULL);
}
if(opt.chams.chamsb==0)
pDevice->SetRenderState(D3DRS_AMBIENT, D3DCOLOR_ARGB(255,255,0,0));
if(opt.chams.chamsb==1)
pDevice->SetRenderState(D3DRS_AMBIENT, D3DCOLOR_ARGB(255,0,0,255));
if(opt.chams.chamsb==2)
pDevice->SetRenderState(D3DRS_AMBIENT, D3DCOLOR_ARGB(255,255,255,0));
if(opt.chams.chamsb==3)
pDevice->SetRenderState(D3DRS_AMBIENT, D3DCOLOR_ARGB(255,0,255,0));
if(opt.chams.chamsb==4)
pDevice->SetRenderState(D3DRS_AMBIENT, D3DCOLOR_ARGB(255,0,0,0));
pDrawIndexedPrimitive(pDevice,pType,nMinIndex, nNumVertices, nStartIndex, nPrimitiveCount);
pDevice->SetRenderState(D3DRS_ZENABLE,true);
if(opt.chams.chamsf==0)
pDevice->SetRenderState(D3DRS_AMBIENT, D3DCOLOR_ARGB(255,255,0,0));
if(opt.chams.chamsf==1)
pDevice->SetRenderState(D3DRS_AMBIENT, D3DCOLOR_ARGB(255,0,0,255));
if(opt.chams.chamsf==2)
pDevice->SetRenderState(D3DRS_AMBIENT, D3DCOLOR_ARGB(255,255,255,0));
if(opt.chams.chamsf==3)
pDevice->SetRenderState(D3DRS_AMBIENT, D3DCOLOR_ARGB(255,0,255,0));
if(opt.chams.chamsf==4)
pDevice->SetRenderState(D3DRS_AMBIENT, D3DCOLOR_ARGB(255,0,0,0));
}
else if(m_Stride==44)pDevice->SetRenderState(D3DRS_AMBIENT,false);
if(m_Stride==40 && opt.d3d.wallcolor == 1)
{
if(opt.d3d.wallcolor==1)
{
pDevice->SetRenderState(D3DRS_ALPHABLENDENABLE,true);
pDevice->SetRenderState(D3DRS_DESTBLEND,D3DBLEND_INVDESTCO LOR);
pDevice->SetRenderState(D3DRS_SRCBLEND,D3DBLEND_INVSRCALPH A);
}
if(opt.d3d.wallcolor==2)pDevice->SetRenderState(D3DRS_AMBIENT, D3DCOLOR_ARGB(255,255,0,0));
if(opt.d3d.wallcolor==3)pDevice->SetRenderState(D3DRS_AMBIENT, D3DCOLOR_ARGB(255,0,0,255));
if(opt.d3d.wallcolor==4)pDevice->SetRenderState(D3DRS_AMBIENT, D3DCOLOR_ARGB(255,255,255,0));
if(opt.d3d.wallcolor==5)pDevice->SetRenderState(D3DRS_AMBIENT, D3DCOLOR_ARGB(255,0,255,0));
if(opt.d3d.wallcolor==6)pDevice->SetRenderState(D3DRS_AMBIENT, D3DCOLOR_ARGB(255,0,0,0));
}
_asm popad;
return pDrawIndexedPrimitive(pDevice, pType, nMinIndex, nNumVertices, nStartIndex, nPrimitiveCount);
}
template <typename C,typename VF >
DWORD* VirtualFuncResolver(C obj, VF fun)
{
DWORD ofs_vfun = (DWORD)(((*(DWORD***)((DWORD*)((DWORD)*(DWORD**)&f un + 0x8)))));
if(ofs_vfun>=0xA0000000)ofs_vfun = ofs_vfun & 0xFF;
DWORD adr_obj = (DWORD)(**(DWORD****)&obj);
DWORD* ENTRY = (DWORD*)(*(DWORD**)(adr_obj+ofs_vfun));
return ENTRY;
}
DWORD* FindDevice(DWORD Base) // Credits to Croner at ******.com Simple Pattern Scan Function
{
for(long i= 0,n = 0; i < 0x128000; i++ )
{
if(*(BYTE *)(Base+i+0x00)==0xC7)n++;
if(*(BYTE *)(Base+i+0x01)==0x06)n++;
if(*(BYTE *)(Base+i+0x06)==0x89)n++;
if(*(BYTE *)(Base+i+0x07)==0x86)n++;
if(*(BYTE *)(Base+i+0x0C)==0x89)n++;
if(*(BYTE *)(Base+i+0x0D)==0x86)n++;
if(n == 6) return (DWORD*)
(Base + i + 2);n = 0;
}
return(0);
}
typedef HRESULT ( WINAPI* oSetTransform ) (LPDIRECT3DDEVICE8 pDevice, D3DTRANSFORMSTATETYPE State, CONST D3DMATRIX* pMatrix);
oSetTransform pSetTransform;
HRESULT WINAPI mySetTransform(LPDIRECT3DDEVICE8 pDevice, D3DTRANSFORMSTATETYPE State, D3DMATRIX* pMatrix)
{
// Code Here
return pSetTransform(pDevice, State, pMatrix);
}
int iDIRECT3D(void)
{
HMODULE hD3D = NULL;
do
{
hD3D = GetModuleHandle("d3d8.dll");
Sleep(100);
}
while(!hD3D);
DWORD_PTR * pDevice = FindDevice((DWORD)hD3D);
DWORD_PTR * Vtable = 0;
*(DWORD_PTR *)&Vtable = *(DWORD_PTR *)pDevice;
// pReset = (oReset) Detour->Create((PBYTE)VirtualFuncResolver(pDevice, &IDirect3DDevice8::Reset),(PBYTE)myReset,6);
// pPresent = (oPresent) Detour->Create((PBYTE)VirtualFuncResolver(pDevice, &IDirect3DDevice8::Present),(PBYTE)myPresent,6) ;
// pBeginScene = (oBeginScene) Detour->Create((PBYTE)VirtualFuncResolver(pDevice, &IDirect3DDevice8::BeginScene),(PBYTE)myBeginScene ,6);
pEndScene = (oEndScene) Detour->Create((PBYTE)VirtualFuncResolver(pDevice, &IDirect3DDevice8::EndScene),(PBYTE)myEndScene,DET OUR_TYPE_OBS_XOR);// this works fine

pDrawIndexedPrimitive = (oDrawIndexedPrimitive) Detour->Create((PBYTE)VirtualFuncResolver(pDevice, &IDirect3DDevice8:: DrawIndexedPrimitive), (PBYTE)myDrawIndexedPrimitive,DETOUR_TYPE_OBS_XOR );
pSetTransform = (oSetTransform) Detour->Create((PBYTE)Vtable[37], (PBYTE)mySetTransform,DETOUR_TYPE_OBS_XOR);
return 0;
}
char* cBase::GetFile(char *file)
{
static char path[320];
for(int i= 0;i<strlen(path);i++)
path[i]=0;
strcpy(path, Base.dllpath);
strcat(path, file);
return path;
}
void HackThread(void)
{
Hacks.HackThread();
}
void cBase::WriteFile(FILE *file,const char *fmt, ...)
{
char buffer[225] = "";
va_list va_alist;
va_start (va_alist, fmt);
_vsnprintf (buffer,sizeof(buffer), fmt, va_alist);
fprintf(file,buffer);
fprintf(file,"\n");
fflush(file);
va_end (va_alist);
}
DWORD OldProtection;
void MEMwrite(void *adr, void *ptr, int size)
{
VirtualProtect(adr,size,PAGE_EXECUTE_READWRITE, &OldProtection);
memcpy(adr,ptr,size);
VirtualProtect(adr,size,OldProtection, &OldProtection);
}
void BYPASS(void)
{
long EhSvc = (long)GetModuleHandleA("EhSvc.dll");
MEMwrite((void *)(EhSvc+0x1D0DC),(void*)(PBYTE)"BYTES",2);//Anti ASM Scan
MEMwrite((void *)(EhSvc+0x59794),(void*)(PBYTE)"BYTES",5);//CheatEngine
MEMwrite((void *)(EhSvc+0x6B2B6),(void*)(PBYTE)"\BYTES",1); //Unhook SSS
MEMwrite((void *)(EhSvc+0x6B2E0),(void*)(PBYTE)"\BYTES",1); //Unhook DIP
MEMwrite((void *)(EhSvc+0x6CA97),(void*)(PBYTE)"\BYTES",1); //Dlljump1
MEMwrite((void *)(EhSvc+0x6CD32),(void*)(PBYTE)"\BYTES",1); //Dlljump2
MEMwrite((void *)(EhSvc+0x659F3),(void*)(PBYTE)"\BYTES",1); //Anti Restore
MEMwrite((void *)(EhSvc+0x28408),(void*)(PBYTE)"\BYTES",1); //Antidt1
MEMwrite((void *)(EhSvc+0x2851C),(void*)(PBYTE)"\BYTES",1); // 2
MEMwrite((void *)(EhSvc+0x29E2C),(void*)(PBYTE)"\BYTES",1); // 3
MEMwrite((void *)(EhSvc+0x26EDB),(void*)(PBYTE)"\BYTES",1); // 4
MEMwrite((void *)(EhSvc+0x27025),(void*)(PBYTE)"\BYTES",1);// 5
MEMwrite((void *)(EhSvc+0x2900D),(void*)(PBYTE)"\BYTES",2);// 6
MEMwrite((void *)(EhSvc+0x2525B),(void*)(PBYTE)"\BYTES",2);// 7
MEMwrite((void *)(EhSvc+0x27107),(void*)(PBYTE)"\BYTES",2);// 8
MEMwrite((void *)(EhSvc+0x298F8),(void*)(PBYTE)"\BYTES",6);// 9
MEMwrite((void *)(EhSvc+0x5D02F),(void*)(PBYTE)"\BYTES",6);// 10
MEMwrite((void *)(EhSvc+0x65921),(void*)(PBYTE)"\BYTES",1);// 11
MEMwrite((void *)(EhSvc+0x65933),(void*)(PBYTE)"\BYTES",5);// 12
MEMwrite((void *)(EhSvc+0x298F8),(void*)(PBYTE)"\BYTES",1);// 13
MEMwrite((void *)(EhSvc+0x2711F),(void*)(PBYTE)"\BYTES",1);// 14
MEMwrite((void *)(EhSvc+0x2527F),(void*)(PBYTE)"\BYTES",1);// 15
MEMwrite((void *)(EhSvc+0x29021),(void*)(PBYTE)"\BYTES",1);// 16
MEMwrite((void *)(EhSvc+0x2B598),(void*)(PBYTE)"\BYTES",1);// 17
}
BOOL WINAPI DllMain(HMODULE hDll, DWORD dwReason, LPVOID lpReserved){
switch(dwReason)
{
case DLL_PROCESS_ATTACH:
CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)iDIRECT3D, NULL, NULL, NULL);
// CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)Loop, NULL, NULL, NULL);
// CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)HackThread, NULL,NULL, NULL);
// CreateThread(NULL, NULL, (LPTHREAD_START_ROUTINE)HackThread, NULL, NULL, NULL);
// Get Dll Location
GetModuleFileName(hDll,Base.dllpath,512);
for(int i = strlen(Base.dllpath);i > 0; i--)
{
if(Base.dllpath[i] == '\\')
{
Base.dllpath[i+1] = 0; break;
}
}
// Get Log File Location and Store into Class
strcpy(Base.dllpath,Base.dllpath);
strcpy(Base.logfile,Base.GetFile("mpgh.txt"));
Base.LOG = fopen(Base.logfile,"w");
// Basic Status Messages
Base.WriteFile(Base.LOG,"Dll Succesfully Injected");
Base.WriteFile(Base.LOG,"<DLLPATH> %s",Base.dllpath);
Base.WriteFile(Base.LOG,"<LOGPATH> %s",Base.logfile);
Base.WriteFile(Base.LOG,"Fetching System Info");
Base.WriteFile(Base.LOG,"for mpgh.net by ikke0147");
Base.WriteFile(Base.LOG,"PHC D3D Base");
SYSTEM_INFO sysinfo;
GetSystemInfo(&sysinfo);
Base.WriteFile(Base.LOG,"<No Processors> %d",sysinfo.dwNumberOfProcessors);
Base.WriteFile(Base.LOG,"<CPU TYPE> %d",sysinfo.dwProcessorType);
//ShellExecute(NULL, "open",(LPCSTR)PHCBOTshellcode,NULL, NULL, SW_SHOWNORMAL); // Dont ask what this was xD leaving this cuz its funny was BOTNET SHELL CODE HAHA dont worry its removed from this source
break;
case DLL_PROCESS_DETACH:
break;
}
return TRUE;
}
I hope that this is the code..
credit for ikke0147