YOU MUST DO THIS FIRST
INSTALLING VISUAL C++ 2008
LINK :
HOW-TO : Select Visual C++ 2008 Express Edition under Visual Studios 2008 Express and click Free Download
INSTALLING DIRECT-X SDK
LINK :
http://www.microsof*****m/downloads/d...displaylang=en
HOW-TO : Click download and install this SDK
ADDING DIRECT-X INCLUDE FILES IN VC++
STEP 1. Install Direct-X SDK
STEP 2. Open VC++
STEP 3. Select Tools -> Option -> Projects and Solutions -> VC++ Directories
STEP 4. In VC ++ Directories, go to the drop-down menu and select Include Files
STEP 5. Add the code below
Code:
C:\Program Files\Microsoft DirectX 9.0 SDK (Summer 2004)\Include
ADDING DIRECT-X LIBRARY FILES IN VC++
STEP 1. Install Direct-X SDK
STEP 2. Open VC++
STEP 3. Select Tools -> Option -> Projects and Solutions -> VC++ Directories
STEP 4. In VC ++ Directories, go to the drop-down menu and select Library Files
STEP 5. Add the code below
Code:
C:\Program Files\Microsoft DirectX 9.0 SDK (Summer 2004)\Lib
--------------------------------------
Here's a tutorial on how to create a d3d8 / Sudden attack base!
---------------------------------------------
Open up Visual C++ 2008
Create: Project...
Choose Win32 Console Application
If you do not see it, look at Project types and click on Visual C++
Screenshot
This image has been resized. Click this bar to view the full image. The original image is sized 1023x743.
You should see the picture below be presented on your Visual C++
Press NEXT
Screenshot
This image has been resized. Click this bar to view the full image. The original image is sized 617x519.
Do not touch anything else. Application type - Select "DLL"
Press FINISH
Screenshot
This image has been resized. Click this bar to view the full image. The original image is sized 611x511.
You should see the screenshot below presented on your Visual C++
Right click and remove dllmain.cpp*
* - Remove because it is already defined in the base source I will give you.
Screenshot
This image has been resized. Click this bar to view the full image. The original image is sized 699x487.
Click the green arrow on the top to debug / release. Alternately, you can just build / rebuild (for those who know how to use C++ IDE)
Screenshot
This image has been resized. Click this bar to view the full image. The original image is sized 759x654.
---------------------------------------------
Base Source Code
---------------------------------------------
Replace your main cpp file with this.
Code:
#include "stdafx.h"
#include <windows.h>
#include <d3d8.h>
#pragma comment(lib, "d3d8.lib")
typedef HRESULT (WINAPI* CreateDevice_Prototype) (LPDIRECT3D8, UINT, D3DDEVTYPE, HWND, DWORD, D3DPRESENT_PARAMETERS*, LPDIRECT3DDEVICE8*);
typedef HRESULT (WINAPI* Reset_Prototype) (LPDIRECT3DDEVICE8, D3DPRESENT_PARAMETERS*);
typedef HRESULT (WINAPI* EndScene_Prototype) (LPDIRECT3DDEVICE8);
typedef HRESULT (WINAPI* DrawIndexedPrimitive_Prototype)(LPDIRECT3DDEVICE8, D3DPRIMITIVETYPE, UINT, UINT, UINT, UINT);
CreateDevice_Prototype CreateDevice_Pointer = NULL;
Reset_Prototype Reset_Pointer = NULL;
EndScene_Prototype EndScene_Pointer = NULL;
DrawIndexedPrimitive_Prototype DrawIndexedPrimitive_Pointer = NULL;
HRESULT WINAPI Direct3DCreate8_VMTable (VOID);
HRESULT WINAPI CreateDevice_Detour (LPDIRECT3D8, UINT, D3DDEVTYPE, HWND, DWORD, D3DPRESENT_PARAMETERS*, LPDIRECT3DDEVICE8*);
HRESULT WINAPI Reset_Detour (LPDIRECT3DDEVICE8, D3DPRESENT_PARAMETERS*);
HRESULT WINAPI EndScene_Detour (LPDIRECT3DDEVICE8);
HRESULT WINAPI DrawIndexedPrimitive_Detour(LPDIRECT3DDEVICE8, D3DPRIMITIVETYPE, UINT, UINT, UINT, UINT);
PDWORD Direct3D_VMTable = NULL;
BOOL WINAPI DllMain(HINSTANCE hinstModule, DWORD dwReason, LPVOID lpvReserved)
{
if(dwReason == DLL_PROCESS_ATTACH)
{
DisableThreadLibraryCalls(hinstModule);
if(Direct3DCreate8_VMTable() == D3D_OK)
return TRUE;
}
return FALSE;
}
HRESULT WINAPI Direct3DCreate8_VMTable(VOID)
{
LPDIRECT3D8 Direct3D_Object = Direct3DCreate8(D3D_SDK_VERSION);
if(Direct3D_Object == NULL)
return D3DERR_INVALIDCALL;
Direct3D_VMTable = (PDWORD)*(PDWORD)Direct3D_Object;
Direct3D_Object->Release();
DWORD dwProtect;
if(VirtualProtect(&Direct3D_VMTable[15], sizeof(DWORD), PAGE_READWRITE, &dwProtect) != 0)
{
*(PDWORD)&CreateDevice_Pointer = Direct3D_VMTable[15];
*(PDWORD)&Direct3D_VMTable[15] = (DWORD)CreateDevice_Detour;
if(VirtualProtect(&Direct3D_VMTable[15], sizeof(DWORD), dwProtect, &dwProtect) == 0)
return D3DERR_INVALIDCALL;
}
else
return D3DERR_INVALIDCALL;
return D3D_OK;
}
HRESULT WINAPI CreateDevice_Detour(LPDIRECT3D8 Direct3D_Object, UINT Adapter, D3DDEVTYPE DeviceType, HWND FocusWindow,
DWORD BehaviorFlags, D3DPRESENT_PARAMETERS* PresentationParameters,
LPDIRECT3DDEVICE8* Returned_Device_Interface)
{
HRESULT Returned_Result = CreateDevice_Pointer(Direct3D_Object, Adapter, DeviceType, FocusWindow, BehaviorFlags,
PresentationParameters, Returned_Device_Interface);
DWORD dwProtect;
if(VirtualProtect(&Direct3D_VMTable[15], sizeof(DWORD), PAGE_READWRITE, &dwProtect) != 0)
{
*(PDWORD)&Direct3D_VMTable[15] = *(PDWORD)&CreateDevice_Pointer;
CreateDevice_Pointer = NULL;
if(VirtualProtect(&Direct3D_VMTable[15], sizeof(DWORD), dwProtect, &dwProtect) == 0)
return D3DERR_INVALIDCALL;
}
else
return D3DERR_INVALIDCALL;
if(Returned_Result == D3D_OK)
{
Direct3D_VMTable = (PDWORD)*(PDWORD)*Returned_Device_Interface;
*(PDWORD)&Reset_Pointer = (DWORD)Direct3D_VMTable[14];
*(PDWORD)&EndScene_Pointer = (DWORD)Direct3D_VMTable[35];
*(PDWORD)&DrawIndexedPrimitive_Pointer = (DWORD)Direct3D_VMTable[71];
*(PDWORD)&Direct3D_VMTable[14] = (DWORD)Reset_Detour;
*(PDWORD)&Direct3D_VMTable[35] = (DWORD)EndScene_Detour;
*(PDWORD)&Direct3D_VMTable[71] = (DWORD)DrawIndexedPrimitive_Detour;
}
return Returned_Result;
}
HRESULT WINAPI Reset_Detour(LPDIRECT3DDEVICE8 Device_Interface, D3DPRESENT_PARAMETERS* PresentationParameters)
{
return Reset_Pointer(Device_Interface, PresentationParameters);
}
HRESULT WINAPI EndScene_Detour(LPDIRECT3DDEVICE8 Device_Interface)
{
return EndScene_Pointer(Device_Interface);
}
HRESULT WINAPI DrawIndexedPrimitive_Detour(LPDIRECT3DDEVICE8 Device_Interface, D3DPRIMITIVETYPE Type,
UINT MinIndex, UINT NumVertices, UINT StartIndex, UINT PrimitiveCount)
{
LPDIRECT3DVERTEXBUFFER8 Stream_Data;
UINT Stride = 0;
if(Device_Interface->GetStreamSource(0, &Stream_Data, &Stride) == D3D_OK)
Stream_Data->Release();
//code
return DrawIndexedPrimitive_Pointer(Device_Interface, Type, MinIndex, NumVertices, StartIndex, PrimitiveCount);
}
Enjoy your Base!
-Voltage552
** Note : This is definately detected. Find a way to make it undetected; I will not tell you how.
__________________
SuddenAttackNA Coder~
SANA Pub Hook V1
SANA Pub Hook V2
SEXY