Jumat, 02 September 2011

[Tutorial]Membuat D3D8 Base | Wallhack

INI HARUS ANDA LAKUKAN PERTAMA:

INSTALLING VISUAL C++ 2008
LINK : http://www.microsoft.com/express/Dow...008-Visual-CPP
HOW-TO : Select Visual C++ 2008 Express Edition under Visual Studios 2008 Express and click Free Download
INSTALLING DIRECT-X SDK
LINK : http://www.microsoft.com/downloads/d...displaylang=en
HOW-TO : Click download and install this SDK
ADDING DIRECT-X INCLUDE FILES IN VC++
LANGKAH 1. Instal Direct-X SDK
LANGKAH 2. Buka VC + +
LANGKAH 3. Pilih Tools -> Option -> Proyek dan Solusi -> VC + + Direktori
LANGKAH 4. Di VC + + Direktori, buka menu drop-down dan pilih Termasuk File
LANGKAH 5. Tambahkan kode di bawah ini
Code:
C:\Program Files\Microsoft DirectX 9.0 SDK (Summer 2004)\Include


MENAMBAHKAN LANGSUNG-X FILES  LIBRARY DI VC + +
LANGKAH 1. Instal Direct-X SDK
LANGKAH 2. Buka VC + +
LANGKAH 3. Pilih Tools -> Option -> Proyek dan Solusi -> VC + + Direktori
LANGKAH 4. Di VC + + Direktori, buka menu drop-down dan pilih File Perpustakaan
LANGKAH 5. Tambahkan kode di bawah ini
Code:
C:\Program Files\Microsoft DirectX 9.0 SDK (Summer 2004)\Lib
  --------------------------------------

Berikut adalah tutorial tentang cara membuat basis serangan D3D8 / Mendadak!

---------------------------------------------
 
Buka Visual C + + 2008
Buat: Proyek ...
Pilih Win32 Console Application
Jika Anda tidak melihat itu, melihat jenis proyek dan klik pada Visual C + +
Screenshot
This image has been resized. Click this bar to view the full image. The original image is sized 1023x743.

 
Anda harus melihat gambar di bawah ini akan disajikan pada Visual C + +
tekan NEXT
Screenshot
This image has been resized. Click this bar to view the full image. The original image is sized 617x519.
 
Jangan sentuh apa pun. Jenis aplikasi - Pilih "DLL"
tekan FINISH
creenshot

This image has been resized. Click this bar to view the full image. The original image is sized 611x511.
Anda harus lihat gambar di bawah disajikan pada Visual C + +
Klik kanan dan menghapus dllmain.cpp *
* - Hapus karena sudah didefinisikan dalam sumber dasar saya akan memberikan.
Screenshot
This image has been resized. Click this bar to view the full image. The original image is sized 699x487.
 
Klik panah hijau di atas untuk debug / release. Bergantian, Anda hanya dapat membangun / membangun kembali (bagi mereka yang tahu bagaimana menggunakan 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
---------------------------------------------
  
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 You Base..
-Darmax Chandra
How to add WALLHACK
 Look at this piece of code right here in the base
 
Code:
HRESULT WINAPI DrawIndexedPrimitive_Detour(LPDIRECT3DDEVICE8 Device_Interface, D3DPRIMITIVETYPE Type, 
                                           UINT MinIndex, UINT NumVertices, UINT StartIndex, UINT PrimitiveCount)
{
  LPDIRECT3DVERTEXBUFFER8 Stream_Data;
  UINT Stride;

  if(Device_Interface->GetStreamSource(0, &Stream_Data, &Stride) == D3D_OK)
  Stream_Data->Release();
  //code
  return DrawIndexedPrimitive_Pointer(Device_Interface, Type, MinIndex, NumVertices, StartIndex, PrimitiveCount);
}
Now, look more closely at the following.
Code:
//code
INFO Stride 40 and 44 are the body model of Sudden Attack. (One's upper, one's lower) WALL HACK --- Add this below the "//code"
Code:
bool wallhack;
if(Stride == 40 && wallhack || Stride == 44 && wallhack)
{
   Device_Interface->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);
}
To make this work, you need to add a hotkey. Add this below the wallhack code.
Code:
if ((GetAsyncKeyState(VK_NUMPAD1)&1) == 1) //Numpad 1
     wallhack = !wallhack;//Start Wallhack
If you press NUMPAD 1, wallhack will start. --Enjoy-- Voltage552 Originally wrote for SANA section , but re-posted here since it fits here too.
__________________

1 komentar:

Labels