THE FOLLOWING CONFIGURATION FILE (IN YOUR DOCUMENTS/BFBC2) FOLDER MAKES THE HACK WORK FOR ME:
his hack will be detected by EVERY server that is running PB, however, due to the game being in Beta, most servers do not run PB so there is no detection risk.
•Fixed the issue where the game would lag to like 2 fps after a while of playing
The features are always on.
Code:
#include <windows.h>
#include <stdlib.h>
#include "main.h"
#include "d3d9.h"
int m_stride= 64;
int a=1;
float ScreenCenterX = 0.0f;//Horizontal Position
float ScreenCenterY = 0.0f;//Vertical Position
bool xhair = true;
bool chams = true;
int loggerstrideint = 64;
char loggerstridestr[5];
int loggernumvertint = 0;
char loggernumvertstr[5];
bool logger = false;
bool wallhack = false;
bool bigchams = true;
bool once = true;
D3DCOLOR redt = D3DCOLOR_XRGB( 255, 0, 0 );
LPDIRECT3DTEXTURE9 xxxPink = NULL;
UINT m_Stride;
LPDIRECT3DTEXTURE9 texRed,texGreen,texYellow,texOrange,texBlue,texCyan,texPink,texPurple,texWhite,texBlack,texOra,texLila,texTur;
const BYTE bPink[58] =
{
0x42, 0x4D, 0x3A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x36, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00,
0x01, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x01,
0x00, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x80, 0x00, 0xFF, 0x00
};
//model rec start-->
#define DEFENDER_ASSAULT (( NumVertices == 10858 && primCount == 738) || (NumVertices == 9810 && primCount == 1174)||(NumVertices == 8752 && primCount == 1250)||(NumVertices == 7374 && primCount == 1500)||(NumVertices == 1884 && primCount == 612)||(NumVertices == 1818 && primCount == 965)||(NumVertices == 2231 && primCount == 282)||(NumVertices == 836 && primCount == 360)||(NumVertices == 866 && primCount == 28)||(NumVertices == 4015 && primCount == 675)||(NumVertices == 8878 && primCount == 116))
#define DEFENDER_ENGINEER ((NumVertices == 13537 && primCount == 1454) || (NumVertices == 1994 && primCount == 906) || (NumVertices == 1148 && primCount == 218) || (NumVertices == 279 && primCount == 64) || (NumVertices == 464 && primCount == 134) || (NumVertices == 464 && primCount == 134) || (NumVertices == 2899 && primCount == 2462) || (NumVertices == 1393 && primCount == 466) || (NumVertices == 1093 && primCount == 88) || (NumVertices == 1015 && primCount == 481) || (NumVertices == 13537 && primCount == 1454) || (NumVertices == 12015 && primCount == 950) || (NumVertices == 8082 && primCount == 240) || (NumVertices == 3022 && primCount == 876) || (NumVertices == 9439 && primCount == 1227) || (NumVertices == 10681 && primCount == 517) || (NumVertices == 8456 && primCount == 412) || (NumVertices == 7129 && primCount == 612))
#define DEFENDER_MEDIC ((NumVertices == 13972 && primCount == 930) || (NumVertices == 577 && primCount == 436) || (NumVertices == 8070 && primCount == 1206) || (NumVertices == 12831 && primCount == 895) || (NumVertices == 11324 && primCount == 744) || (NumVertices == 10664 && primCount == 1087) || (NumVertices == 11459 && primCount == 160) || (NumVertices == 3519 && primCount == 1142) || (NumVertices == 6169 && primCount == 253) || (NumVertices == 6687 && primCount == 612) )
#define DEFENDER_RECON ((NumVertices == 14077 && primCount == 436) || (NumVertices == 12227 && primCount == 1717) || (NumVertices == 971 && primCount == 481) || (NumVertices == 3442 && primCount == 802) || (NumVertices == 2824 && primCount == 2462) || (NumVertices == 1319 && primCount == 88) || (NumVertices == 1241 && primCount == 442) || (NumVertices == 6440 && primCount == 1012) || (NumVertices == 4760 && primCount == 772) || (NumVertices == 2345 && primCount == 328) || (NumVertices == 5463 && primCount == 1010) || (NumVertices == 9423 && primCount == 252))
#define ATTACKER_ASSAULT ((NumVertices == 2991 && primCount == 1052) || (NumVertices == 1327 && primCount == 168) || (NumVertices == 8180 && primCount == 281) || (NumVertices == 2073 && primCount == 1105) || (NumVertices == 3132 && primCount == 160) || (NumVertices == 6876 && primCount == 1374) || (NumVertices == 9229 && primCount == 995) || (NumVertices == 8398 && primCount == 165) || (NumVertices == 4447 && primCount == 1326) || (NumVertices == 5399 && primCount == 1310) || (NumVertices == 2046 && primCount == 700) || (NumVertices == 4707 && primCount == 2448) || (NumVertices == 681 && primCount == 28) || (NumVertices == 1200 && primCount == 360) || (NumVertices == 1165 && primCount == 17) || (NumVertices == 1447 && primCount == 149) )
#define ATTACKER_ENGINEER ((NumVertices == 8332 && primCount == 1052) || (NumVertices == 8967 && primCount == 706) || (NumVertices == 12486 && primCount == 365) || (NumVertices == 3701 && primCount == 160) || (NumVertices == 11958 && primCount == 958) || (NumVertices == 2271 && primCount == 1112) || (NumVertices == 3563 && primCount == 57) || (NumVertices == 12785 && primCount == 142) || (NumVertices == 8967 && primCount == 706) || (NumVertices == 9945 && primCount == 1258) || (NumVertices == 7155 && primCount == 346) || (NumVertices == 11075 && primCount == 1326) || (NumVertices == 3488 && primCount == 186) || (NumVertices == 1573 && primCount == 1856) )
#define ATTACKER_MEDIC ((NumVertices == 11098 && primCount == 1065) || (NumVertices == 2581 && primCount == 450) || (NumVertices == 2019 && primCount == 2448) || (NumVertices == 2312 && primCount == 204) || (NumVertices == 3460 && primCount == 518) || (NumVertices == 2883 && primCount == 466) || (NumVertices == 10047 && primCount == 320) || (NumVertices == 6639 && primCount == 228) || (NumVertices == 5505 && primCount == 1260) || (NumVertices == 6339 && primCount == 902) || (NumVertices == 4525 && primCount == 1262) || (NumVertices == 8075 && primCount == 1326) || (NumVertices == 3395 && primCount == 1052) || (NumVertices == 9185 && primCount == 1132))
#define ATTACKER_RECON ((NumVertices == 14077 && primCount == 436) || (NumVertices == 12227 && primCount == 1717) || (NumVertices == 971 && primCount == 481) || (NumVertices == 3442 && primCount == 802) || (NumVertices == 2824 && primCount == 2462) || (NumVertices == 1319 && primCount == 88) || (NumVertices == 1241 && primCount == 442) || (NumVertices == 6440 && primCount == 1012) || (NumVertices == 4760 && primCount == 772) || (NumVertices == 2345 && primCount == 328) || (NumVertices == 5463 && primCount == 1010) || (NumVertices == 9423 && primCount == 252))
#define Team1 (ATTACKER_ASSAULT) || (ATTACKER_ENGINEER) || (ATTACKER_MEDIC) || (ATTACKER_RECON)
#define Team2 (DEFENDER_ASSAULT) || (DEFENDER_ENGINEER) || (DEFENDER_MEDIC) || (DEFENDER_RECON)
#define Teamall (Team1 || Team2)
#define ammobox (m_Stride == 32 && (NumVertices == 592 && primCount == 277))
#define tow (m_Stride == 48 && (NumVertices == 11215 && primCount == 6561))
#define mg (m_Stride == 48 && (NumVertices == 8107 && primCount == 1877) || m_Stride == 48 && (NumVertices == 3257 && primCount == 1886) || m_Stride == 48 && (NumVertices == 13798 && primCount == 7226))
#define tank (m_Stride == 64 && (NumVertices == 1899 && primCount == 867) || m_Stride == 64 && (NumVertices == 1282 && primCount == 990) || m_Stride == 64 && (NumVertices == 27096 && primCount == 14941) || m_Stride == 64 && (NumVertices == 27096 && primCount == 627))
#define apc (m_Stride == 48 && (NumVertices == 24978 && primCount == 15289) || m_Stride == 48 && (NumVertices == 764 && primCount == 740))
#define heli (m_Stride == 48 && (NumVertices == 29045 && primCount == 9738) || m_Stride == 48 && (NumVertices == 29045 && primCount == 4597) || m_Stride == 48 && (NumVertices == 294 && primCount == 360) || m_Stride == 48 && (NumVertices == 42110 && primCount == 12604) || m_Stride == 48 && (NumVertices == 42110 && primCount == 4235) || m_Stride == 48 && (NumVertices == 42110 && primCount == 2958) || m_Stride == 48 && (NumVertices == 42110 && primCount == 817))
#define vehicles (apc || heli || tank || ammobox || tow || mg)
#define D3DHOOK_TEXTURES //comment this to disable texture hooking
LPD3DXFONT m_font;
void DisplayText()
{
// Create a colour for the text - in this case blue
D3DCOLOR fontColor = D3DCOLOR_ARGB(255,0,0,255);
D3DCOLOR offColor = D3DCOLOR_ARGB(255,255,0,0);
D3DCOLOR onColor = D3DCOLOR_ARGB(255,0,255,0);
// Create a rectangle to indicate where on the screen it should be drawn
RECT rct;
rct.left=2;
rct.right=780;
rct.top=10;
rct.bottom=rct.top+20;
// Draw some text
m_font->DrawText(NULL, "Pohead Hax v15.1 Injected Successfully! - Note: Hack hotkeys will only work once in a server!", -1, &rct, 0, fontColor );
rct.top=100;
rct.bottom=rct.top+20;
if (logger) {
m_font->DrawText(NULL, "D3D Logger = ON (press HOME to turn off)", -1, &rct, 0, onColor );
rct.top=120;
rct.bottom=rct.top+20;
m_font->DrawText(NULL, "Stride: ", -1, &rct, 0, onColor );
rct.left=65;
itoa(loggerstrideint, loggerstridestr, 5);
m_font->DrawText(NULL, loggerstridestr, -1, &rct, 0, offColor );
rct.top=140;
rct.bottom=rct.top+20;
rct.left=2;
m_font->DrawText(NULL, "Numvert: ", -1, &rct, 0, onColor );
rct.left=65;
itoa(loggernumvertint, loggernumvertstr, 5);
m_font->DrawText(NULL, loggernumvertstr, -1, &rct, 0, offColor );
}
else
{
//for now, logger disabled
// m_font->DrawText(NULL, "D3D Logger = OFF (press HOME to turn on - advanced users only)", -1, &rct, 0, offColor );
}
rct.top=380;
rct.bottom=rct.top+20;
if (xhair) {
m_font->DrawText(NULL, "Crosshair = ON (press DELETE to toggle)", -1, &rct, 0, onColor );
}
else
{
m_font->DrawText(NULL, "Crosshair = OFF (press DELETE to toggle)", -1, &rct, 0, offColor );
}
rct.top=400;
rct.bottom=rct.top+20;
if (chams){
m_font->DrawText(NULL, "Chams = ON (press INSERT to toggle)", -1, &rct, 0, onColor );
}
else {
m_font->DrawText(NULL, "Chams = OFF (press INSERT to toggle)", -1, &rct, 0, offColor );
}
rct.top=420;
rct.bottom=rct.top+20;
if (wallhack){
m_font->DrawText(NULL, "Wallhack = ON (press END to toggle)", -1, &rct, 0, onColor );
}
else {
m_font->DrawText(NULL, "Wallhack = OFF (press END to toggle)", -1, &rct, 0, offColor );
}
}
HRESULT GenerateTexture(IDirect3DDevice9 *m_pD3Ddev, IDirect3DTexture9 **ppD3Dtex, DWORD colour32)
{
if( FAILED(m_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);
//f
return S_OK;
}
HRESULT CD3DManager::Initialize()
{
/*
initialize Resources such as textures
(managed and unmanaged [D3DPOOL]),
vertex buffers, and other D3D rendering resources
...
m_pD3Ddev->CreateTexture(..., ..., &m_pD3Dtexture);
*/
return S_OK;
}
HRESULT APIENTRY hkIDirect3DDevice9::BeginScene()
{
if (once) {
once = false;
D3DXCreateFont( m_pD3Ddev, 20, 0, FW_BOLD, 0, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, TEXT("Arial"), &m_font );
GenerateTexture(m_pD3Ddev, &texGreen, D3DCOLOR_ARGB(255,0,255,0));
GenerateTexture(m_pD3Ddev, &texRed, D3DCOLOR_ARGB(255,255,0,0));
GenerateTexture(m_pD3Ddev, &texBlue, D3DCOLOR_ARGB(255,0,0,255));
GenerateTexture(m_pD3Ddev, &texOrange, D3DCOLOR_ARGB(255,255,165,0));
GenerateTexture(m_pD3Ddev, &texYellow, D3DCOLOR_ARGB(255,255,255,0));
GenerateTexture(m_pD3Ddev, &texPink, D3DCOLOR_ARGB(255,255,192,203));
GenerateTexture(m_pD3Ddev, &texCyan, D3DCOLOR_ARGB(255,0,255,255));
GenerateTexture(m_pD3Ddev, &texPurple, D3DCOLOR_ARGB(255,160,32,240));
GenerateTexture(m_pD3Ddev, &texBlack, D3DCOLOR_ARGB(255,0,0,0));
GenerateTexture(m_pD3Ddev, &texWhite, D3DCOLOR_ARGB(255,255,255,255));
GenerateTexture(m_pD3Ddev, &texLila,D3DCOLOR_ARGB(255,138,43,226));
GenerateTexture(m_pD3Ddev, &texOra,D3DCOLOR_ARGB(255,255,140,0));
}
return m_pD3Ddev->BeginScene();
}
HRESULT APIENTRY hkIDirect3DDevice9::DrawIndexedPrimitive(D3DPRIMITIVETYPE Type,INT BaseVertexIndex,UINT MinVertexIndex,UINT NumVertices,UINT startIndex,UINT primCount)
{
//HERE DO SHIZNIT
if( GetAsyncKeyState( VK_INSERT ) & 1 )
{
if (chams) {
chams = false;
}
else if (!logger) {
chams = true;
}
}
if( GetAsyncKeyState( VK_DELETE ) & 1 )
{
if (xhair)
{
xhair = false;
}
else {
xhair = true;
}
}
if( GetAsyncKeyState( VK_END ) & 1 )
{
if (wallhack)
{
wallhack = false;
}
else {
wallhack = true;
}
}
if( GetAsyncKeyState( VK_HOME ) & 1 )
{
if (logger)
{
loggerstrideint = 64; //reset back to proper value for wallhack
logger = false;
}
else {
loggerstrideint = 64;
chams = false;
wallhack = false;
xhair = false;
//logger = true; disabled for now
}
}
if (logger && m_Stride == loggerstrideint && NumVertices == loggernumvertint)
{
DWORD dwOldZEnable = D3DZB_TRUE;
if (wallhack) {
m_pD3Ddev->GetRenderState(D3DRS_ZENABLE, &dwOldZEnable);
m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);
for(int i = 0; i <6; i++)
{
m_pD3Ddev->SetTexture(i,texRed); //0 should be i if enabled
}
m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
}
m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, dwOldZEnable);
for(int i = 0; i <6; i++)
{
m_pD3Ddev->SetTexture(i,texYellow);
}
return m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
}
else if (chams) {
if(m_Stride == 64)
{
DWORD dwOldZEnable = D3DZB_TRUE;
if (wallhack) {
m_pD3Ddev->GetRenderState(D3DRS_ZENABLE, &dwOldZEnable);
m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);
for(int i = 0; i <6; i++)
{
m_pD3Ddev->SetTexture(i,texRed); //0 should be i if enabled
}
m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
}
m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, dwOldZEnable);
for(int i = 0; i <6; i++)
{
m_pD3Ddev->SetTexture(i,texYellow);
}
return m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
}
else if (m_Stride = 64 && Teamall) {
DWORD dwOldZEnable = D3DZB_TRUE;
m_pD3Ddev->GetRenderState(D3DRS_ZENABLE, &dwOldZEnable);
m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);
for(int i = 0; i <6; i++)
{
m_pD3Ddev->SetTexture(i,texRed);
}
m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, dwOldZEnable);
for(int i = 0; i <6; i++)
{
m_pD3Ddev->SetTexture(i,texYellow);
}
return m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
}
else if (vehicles)
{
DWORD dwOldZEnable = D3DZB_TRUE;
m_pD3Ddev->GetRenderState(D3DRS_ZENABLE, &dwOldZEnable);
m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, D3DZB_FALSE);
for(int i = 0; i <6; i++)
{
m_pD3Ddev->SetTexture(i,texGreen);
}
m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, dwOldZEnable);
for(int i = 0; i <6; i++)
{
m_pD3Ddev->SetTexture(i,texGreen);
}
return m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
}
else
{
return m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
}
}
else {
return m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
}
//d
//if (Team1 || Team2)
//{
// m_pD3Ddev->SetRenderState(D3DRS_FILLMODE, D3DFILL_SOLID);
//m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, false);
// m_pD3Ddev->SetTexture(0, texRed);
// m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
// m_pD3Ddev->SetRenderState(D3DRS_ZENABLE, true);
// m_pD3Ddev->SetTexture(0, texBlue);
// return m_pD3Ddev->DrawIndexedPrimitive(Type,BaseVertexIndex, MinVertexIndex, NumVertices, startIndex, primCount);
//}
}
HRESULT APIENTRY hkIDirect3DDevice9::EndScene()
{
if( GetAsyncKeyState( VK_NUMPAD4 ) & 1 )
{
loggerstrideint = loggerstrideint++;
}
if( GetAsyncKeyState( VK_NUMPAD1 ) & 1 )
{
loggerstrideint = loggerstrideint--;
}
if( GetAsyncKeyState( VK_NUMPAD5 ) & 1 )
{
loggernumvertint = loggernumvertint++;
}
if( GetAsyncKeyState( VK_NUMPAD2 ) & 1 )
{
loggernumvertint = loggernumvertint--;
}
DisplayText();
//croshair
if (xhair) {
D3DRECT rec2 = {ScreenCenterX-20, ScreenCenterY, ScreenCenterX+ 20, ScreenCenterY+2};
D3DRECT rec3 = {ScreenCenterX, ScreenCenterY-20, ScreenCenterX+ 2,ScreenCenterY+20};
m_pD3Ddev->Clear(1, &rec2, D3DCLEAR_TARGET,redt, 0, 0);
m_pD3Ddev->Clear(1, &rec3, D3DCLEAR_TARGET,redt, 0, 0);
//end crosshair
}
//chams
if (chams) {
if(xxxPink == NULL) D3DXCreateTextureFromFileInMemory(m_pD3Ddev, (LPCVOID)&bPink, 58, &xxxPink);
}
//end chams code
return m_pD3Ddev->EndScene();
}
HRESULT APIENTRY hkIDirect3DDevice9::SetStreamSource(UINT StreamNumber,IDirect3DVertexBuffer9* pStreamData,UINT OffsetInBytes,UINT Stride)
{
if (StreamNumber==0)
{
m_Stride = Stride;
}
return m_pD3Ddev->SetStreamSource(StreamNumber, pStreamData,OffsetInBytes, Stride);
}
Some1 has to compile this hack.