[Code] Shaded chams

Posts 115 of 81 · Page 1 of 6
[Code] Shaded chams
Well AVA is mainly a shader game so to do a good looking cham, you would have to chameleon the shaders

*should also work in other shaded base games

GenerateShader - credits to CallMeEclipse
*fixed up to prevent crashing
Code:
HRESULT GenerateShader( IDirect3DDevice9 *pDevice, IDirect3DPixelShader9 **pShader, float r, float g, float b, bool setzBuf )
{
    char szShader[ 256 ];
    ID3DXBuffer *pShaderBuf = NULL;

    sprintf( szShader, "ps.1.1\ndef c0, %f, %f, %f, %f\nmov r0,c0", r, g, b, 1.0f );
    if( D3DXAssembleShader( szShader, sizeof( szShader ), NULL, NULL, 0, &pShaderBuf, NULL ) == D3D_OK )
        pDevice->CreatePixelShader( ( const DWORD* )pShaderBuf->GetBufferPointer(), pShader );
    else
        return E_FAIL;

    return S_OK;
}
Generating the shaders:
Code:
define these at the top or wherever:
IDirect3DPixelShader9 *Blah, *Blahh;

in Endscene:
GenerateShader( pDevice, &Blah, 255, 0 , 0, true);
GenerateShader( pDevice, &Blahh, 0, 0, 255, true);
Doing the chams with shaded pixels:
Code:
In DIP:
if(Stride)
{
DWORD dwOldZEnable = D3DZB_TRUE; 
pDevice->GetRenderState(D3DRS_ZENABLE, &dwOldZEnable); 
pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);
pDevice->SetPixelShader( Blah );   
DIP( ............ );
pDevice->SetRenderState(D3DRS_ZENABLE, dwOldZEnable);
pDevice->SetPixelShader( Blahh);
}
Done. You should have some shaded chams now.

Ohh & I'm also working on a public, so far no kicks or errors.
Chams should look like below
that crosshair looks sexy lol
and nice job!
ahah, thanks. sh00ter999 for crosshair ;]
where would you put this code in?
Quote Originally Posted by Toshie View Post
where would you put this code in?
Learn to make hacks and then u will know it .
you should see if you can join the AO team
thanks for sharing! +1
WOOT i love chams like tht.
Will it actually work if you get this code compiled?
Shouldn't you need to bypass GG?
Quote Originally Posted by AznNicholas View Post
Will it actually work if you get this code compiled?
Shouldn't you need to bypass GG?
Stop talking bullshit if you don't know what your'e dam talking about. The GG its not belong to the hacks because we use the method of a DLL injecting, that has nothing to do with the GG. If it was a trainer that made by Cheat Engine, or Cheat Engine itself, that's something else.
Quote Originally Posted by dordort View Post
Stop talking bullshit if you don't know what your'e dam talking about. The GG its not belong to the hacks because we use the method of a DLL injecting, that has nothing to do with the GG. If it was a trainer that made by Cheat Engine, or Cheat Engine itself, that's something else.
Huh?
GG is there for a reason and it have protection against DIP hooking.
I think you're the one who don't know what you're talking about.
If this code will just work like that, then I believe everyone would be hacking by now.
omg another coder for AVA omfg yay!
No, this will not work if you just compiled it like that. Learn some C++.
& you'd have to detour or vtable your base to get it undetected.
Quote Originally Posted by boi2gangsta View Post
Well AVA is mainly a shader game so to do a good looking cham, you would have to chameleon the shaders

*should also work in other shaded base games

GenerateShader - credits to CallMeEclipse
*fixed up to prevent crashing
Code:
HRESULT GenerateShader( IDirect3DDevice9 *pDevice, IDirect3DPixelShader9 **pShader, float r, float g, float b, bool setzBuf )
{
    char szShader[ 256 ];
    ID3DXBuffer *pShaderBuf = NULL;

    sprintf( szShader, "ps.1.1\ndef c0, %f, %f, %f, %f\nmov r0,c0", r, g, b, 1.0f );
    if( D3DXAssembleShader( szShader, sizeof( szShader ), NULL, NULL, 0, &pShaderBuf, NULL ) == D3D_OK )
        pDevice->CreatePixelShader( ( const DWORD* )pShaderBuf->GetBufferPointer(), pShader );
    else
        return E_FAIL;

    return S_OK;
}
Generating the shaders:
Code:
define these at the top or wherever:
IDirect3DPixelShader9 *Blah, *Blahh;

in Endscene:
GenerateShader( pDevice, &Blah, 255, 0 , 0, true);
GenerateShader( pDevice, &Blahh, 0, 0, 255, true);
Doing the chams with shaded pixels:
Code:
In DIP:
if(Stride)
{
DWORD dwOldZEnable = D3DZB_TRUE; 
pDevice->GetRenderState(D3DRS_ZENABLE, &dwOldZEnable); 
pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);
pDevice->SetPixelShader( Blah );   
DIP( ............ );
pDevice->SetRenderState(D3DRS_ZENABLE, dwOldZEnable);
pDevice->SetPixelShader( Blahh);
}
Done. You should have some shaded chams now.

Ohh & I'm also working on a public, so far no kicks or errors.
Chams should look like below
Nice try, but your code fix for crashing does not work. It still crashes when opening AVA, Exactly as the original code. This is the full code for VC 2008, with your changes in it. Look around and try to fix it because it does not work, It still getting crashed immediately when opening AVA.

**- Do not tell me to try changing the compile mode (Debug Dll / Release Dll) Because I have already tried both of them, and the same - Game is getting crashed immediately when opening AVA.

Code:
#include <windows.h>

#include <d3d9.h>
#pragma comment(lib, "d3d9.lib")

#include <d3dx9.h>
#pragma comment(lib, "d3dx9.lib")
#include <time.h>
#include <stdlib.h>
#include <fstream>
#include <vector>    
#include <D3dx9tex.h>
#include <stdio.h> 
#include <time.h>
#include <tchar.h>
#include <iostream>
#pragma warning(disable:4996)//to disable the sprintf warning in VC++ 2008
//-----------//
bool fCall = true;
bool Chams = false;
IDirect3DPixelShader9 *Front, *Back;




HRESULT GenerateShader( IDirect3DDevice9 *pDevice, IDirect3DPixelShader9 **pShader, float r, float g, float b, bool setzBuf )
{
    char szShader[ 256 ];
    ID3DXBuffer *pShaderBuf = NULL;

    sprintf( szShader, "ps.1.1\ndef c0, %f, %f, %f, %f\nmov r0,c0", r, g, b, 1.0f );
    if( D3DXAssembleShader( szShader, sizeof( szShader ), NULL, NULL, 0, &pShaderBuf, NULL ) == D3D_OK )
        pDevice->CreatePixelShader( ( const DWORD* )pShaderBuf->GetBufferPointer(), pShader );
    else
        return E_FAIL;

    return S_OK;
}

//=====================================================================================

typedef HRESULT (WINAPI* CreateDevice_Prototype)        (LPDIRECT3D9, UINT, D3DDEVTYPE, HWND, DWORD, D3DPRESENT_PARAMETERS*, LPDIRECT3DDEVICE9*);
typedef HRESULT (WINAPI* Reset_Prototype)               (LPDIRECT3DDEVICE9, D3DPRESENT_PARAMETERS*);
typedef HRESULT (WINAPI* EndScene_Prototype)            (LPDIRECT3DDEVICE9);
typedef HRESULT (WINAPI* DrawIndexedPrimitive_Prototype)(LPDIRECT3DDEVICE9, D3DPRIMITIVETYPE, INT, 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 Direct3DCreate9_VMTable    (VOID);
HRESULT WINAPI CreateDevice_Detour        (LPDIRECT3D9, UINT, D3DDEVTYPE, HWND, DWORD, D3DPRESENT_PARAMETERS*, LPDIRECT3DDEVICE9*);
HRESULT WINAPI Reset_Detour               (LPDIRECT3DDEVICE9, D3DPRESENT_PARAMETERS*);
HRESULT WINAPI EndScene_Detour            (LPDIRECT3DDEVICE9);
HRESULT WINAPI DrawIndexedPrimitive_Detour(LPDIRECT3DDEVICE9, D3DPRIMITIVETYPE, INT, UINT, UINT, UINT, UINT);

DWORD WINAPI VirtualMethodTableRepatchingLoopToCounterExtensionRepatching(LPVOID);
PDWORD Direct3D_VMTable = NULL;

//=====================================================================================

BOOL WINAPI DllMain(HINSTANCE hinstModule, DWORD dwReason, LPVOID lpvReserved)
{
  if(dwReason == DLL_PROCESS_ATTACH)
  {
    DisableThreadLibraryCalls(hinstModule);

    if(Direct3DCreate9_VMTable() == D3D_OK)
    return TRUE;
  }

  return FALSE;
}

//=====================================================================================

HRESULT WINAPI Direct3DCreate9_VMTable(VOID)
{
  LPDIRECT3D9 Direct3D_Object = Direct3DCreate9(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[16], sizeof(DWORD), PAGE_READWRITE, &dwProtect) != 0)
  {
    *(PDWORD)&CreateDevice_Pointer = Direct3D_VMTable[16];
    *(PDWORD)&Direct3D_VMTable[16] = (DWORD)CreateDevice_Detour;

    if(VirtualProtect(&Direct3D_VMTable[16], sizeof(DWORD), dwProtect, &dwProtect) == 0)
    return D3DERR_INVALIDCALL;
  }
  else
  return D3DERR_INVALIDCALL;

  return D3D_OK;
}

//=====================================================================================

HRESULT WINAPI CreateDevice_Detour(LPDIRECT3D9 Direct3D_Object, UINT Adapter, D3DDEVTYPE DeviceType, HWND FocusWindow, 
                    DWORD BehaviorFlags, D3DPRESENT_PARAMETERS* PresentationParameters, 
                    LPDIRECT3DDEVICE9* Returned_pDevice)
{
  HRESULT Returned_Result = CreateDevice_Pointer(Direct3D_Object, Adapter, DeviceType, FocusWindow, BehaviorFlags, 
                                              PresentationParameters, Returned_pDevice);
   
  DWORD dwProtect;

  if(VirtualProtect(&Direct3D_VMTable[16], sizeof(DWORD), PAGE_READWRITE, &dwProtect) != 0)
  {
    *(PDWORD)&Direct3D_VMTable[16] = *(PDWORD)&CreateDevice_Pointer;
    CreateDevice_Pointer           = NULL;

    if(VirtualProtect(&Direct3D_VMTable[16], sizeof(DWORD), dwProtect, &dwProtect) == 0)
    return D3DERR_INVALIDCALL;
  }
  else
  return D3DERR_INVALIDCALL;

  if(Returned_Result == D3D_OK)
  {
    Direct3D_VMTable = (PDWORD)*(PDWORD)*Returned_pDevice;

    *(PDWORD)&Reset_Pointer                = (DWORD)Direct3D_VMTable[16];
    *(PDWORD)&EndScene_Pointer             = (DWORD)Direct3D_VMTable[42];
    *(PDWORD)&DrawIndexedPrimitive_Pointer = (DWORD)Direct3D_VMTable[82];

    if(CreateThread(NULL, 0, VirtualMethodTableRepatchingLoopToCounterExtensionRepatching, NULL, 0, NULL) == NULL)
    return D3DERR_INVALIDCALL;
  }
    
  return Returned_Result;
}

//=====================================================================================

HRESULT WINAPI Reset_Detour(LPDIRECT3DDEVICE9 pDevice, D3DPRESENT_PARAMETERS* PresentationParameters)
{
  return Reset_Pointer(pDevice, PresentationParameters);
}

//=====================================================================================

HRESULT WINAPI EndScene_Detour(LPDIRECT3DDEVICE9 pDevice)
{
  return EndScene_Pointer(pDevice);
}

//=====================================================================================

HRESULT WINAPI DrawIndexedPrimitive_Detour(LPDIRECT3DDEVICE9 pDevice, D3DPRIMITIVETYPE Type, INT BaseIndex, 
                                           UINT MinIndex, UINT NumVertices, UINT StartIndex, UINT PrimitiveCount)
{
  LPDIRECT3DVERTEXBUFFER9 Stream_Data;
  UINT Offset = 0;
  UINT Stride = 0;

  if(pDevice->GetStreamSource(0, &Stream_Data, &Offset, &Stride) == D3D_OK)
  Stream_Data->Release();

  if(fCall)
  {
  GenerateShader( pDevice, &Front, 255, 0 , 0, true);
  GenerateShader( pDevice, &Back, 0, 0, 255, true);
  fCall = false;
  }

  if ( GetAsyncKeyState ( VK_NUMPAD1 ) &1 )
    {
         Chams = !Chams;
    }  

  if(Chams && (Stride == 32 && StartIndex == 0))
  {
        DWORD dwOldZEnable = D3DZB_TRUE; 
        pDevice->GetRenderState(D3DRS_ZENABLE, &dwOldZEnable); 
        pDevice->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);
        pDevice->SetPixelShader( Front );
        DrawIndexedPrimitive_Pointer(pDevice, Type, BaseIndex, MinIndex, NumVertices, StartIndex, PrimitiveCount);
        pDevice->SetRenderState(D3DRS_ZENABLE, dwOldZEnable);
        pDevice->SetPixelShader( Back );
  }

  return DrawIndexedPrimitive_Pointer(pDevice, Type, BaseIndex, MinIndex, NumVertices, StartIndex, PrimitiveCount);
}

//=====================================================================================

DWORD WINAPI VirtualMethodTableRepatchingLoopToCounterExtensionRepatching(LPVOID Param)
{
  UNREFERENCED_PARAMETER(Param); 

  while(1)
  {
    Sleep(100);

    *(PDWORD)&Direct3D_VMTable[42] = (DWORD)EndScene_Detour;
    *(PDWORD)&Direct3D_VMTable[82] = (DWORD)DrawIndexedPrimitive_Detour;
    *(PDWORD)&Direct3D_VMTable[16] = (DWORD)Reset_Detour;
  }

  return 1;
}
The above full source code is gone through vtable.
Does that mean it will work?
Posts 115 of 81 · Page 1 of 6
This thread is closed for replies.

Similar Threads

Tags for this Thread

None

Need help?