Skip to content
MPGHThe Dark Arts
/
RegisterLog in
Forum
Community
What's NewLatest posts across the boardTrendingHottest threads right nowSubscribedThreads you follow
Discussion
GeneralIntroductionsEntertainmentDebate FortFlaming & Rage
Board
News & AnnouncementsMPGH TimesSuggestions & HelpGiveaways
More Sections
Art & Graphic DesignProgrammingHackingCryptocurrency
Hacks & Cheats
Games
ValorantCS2 / CS:GOCall of Duty / WarzoneFortniteApex LegendsEscape From Tarkov
+14 moreLeague of LegendsGTA VMinecraftRustROTMGBattlefieldTroveBattleOnCombat ArmsCrossFireBlackshotRuneScapeDayZDead by Daylight
Resources
Game Hacking TutorialsReverse EngineeringGeneral Game HackingAnti-CheatConsole Game Hacking
Tools
Game Hacking ToolsTrainers & CheatsHack/Release NewsNew
Submit a release →Share your cheat, tool, or config with the community.
AINEW
AI Tools
General & DiscussionPrompt EngineeringLLM JailbreaksHotAI Agents & AutomationLocal / Open Models
AI × Gaming
AI Aimbots & VisionML Anti-CheatGame Bots & Automation
Create
AI Coding / Vibe CodingAI Art & MediaAI Voice & TTS
The AI frontier →Where game hacking meets modern machine learning. Jump in.
Marketplace
Buy & Sell
SellingBuyingTradingUser Services
Trust & Safety
Middleman LoungeMarketplace TalkVouch Copy Profiles
Money
Cryptocurrency TalkCurrency ExchangeWork & Job Offers
Start selling →List accounts, services, and goods. Use the middleman to trade safe.
MPGH The Dark Arts

A community for offensive security research, reverse engineering, and AI.

Community

ForumMarketplaceSearch

Account

RegisterLog in

Legal

Privacy PolicyForum RulesHelp & FAQ
© 2026 MPGH · All rights reserved.Built by the community, for the community. For educational purposes onlyContent is shared for security research and education — we don't condone illegal use. You're responsible for complying with applicable laws. Use at your own risk.
Home › Forum › Programming › Game Development › DirectX/D3D Development › Simple D3D9 Aimbot

Simple D3D9 Aimbot

Posts 31–45 of 51 · Page 3 of 4
lvous
lvous
Quote Originally Posted by ves23 View Post
Using viewprojection & localtoworld, no boxes are being drawn, heres the full shader log pastebin.com/1m39x6a5
Log says 230, I assume it's correct. It is usually 230-233 in ue3 engine games.

Code:
struct ModelInfo_t
{
	float vOutX, vOutY;
};
std::vector<ModelInfo_t>ModelInfo;

float aimheight = 70.0f;
void AddModel(LPDIRECT3DDEVICE9 pDevice)
{
	D3DVIEWPORT9 Viewport;
	pDevice->GetViewport(&Viewport);
	D3DXMATRIX ProjMatrix, ViewMatrix, WorldMatrix;
	D3DXVECTOR3 vOut(0, 0, 0), vIn(0, 0, aimheight);

	pDevice->GetVertexShaderConstantF(0, ProjMatrix, 4);
	pDevice->GetVertexShaderConstantF(230, ViewMatrix, 4);

	D3DXMatrixIdentity(&WorldMatrix);
	D3DXVec3Project(&vOut, &vIn, &Viewport, &ProjMatrix, &ViewMatrix, &WorldMatrix);

	if (vOut.z < 1.0f)
	{
		ModelInfo_t pModelInfo = { static_cast<float>(vOut.x), static_cast<float>(vOut.y) };

		ModelInfo.push_back(pModelInfo);
	}
}
Code:
if (ModelInfo.size() != NULL)
{
	for (int i = 0; i < ModelInfo.size(); i += 1)
	{
		if (ModelInfo[i].vOutX > 1)
		{
			DrawCornerBox(Device, (int)ModelInfo[i].vOutX, (int)ModelInfo[i].vOutY+20, 20, 30, 2, D3DCOLOR_ARGB(255, 255, 255, 0));
		}
	}
}
ModelInfo.clear();
#31 · edited 11y ago · 11y ago
VE
ves23
Quote Originally Posted by lvous View Post
Log says 230, I assume it's correct. It is usually 230-233 in ue3 engine games.

Code:
struct ModelInfo_t
{
	float vOutX, vOutY;
};
std::vector<ModelInfo_t>ModelInfo;

float aimheight = 70.0f;
void AddModel(LPDIRECT3DDEVICE9 pDevice)
{
	D3DVIEWPORT9 Viewport;
	pDevice->GetViewport(&Viewport);
	D3DXMATRIX ProjMatrix, ViewMatrix, WorldMatrix;
	D3DXVECTOR3 vOut(0, 0, 0), vIn(0, 0, aimheight);

	pDevice->GetVertexShaderConstantF(0, ProjMatrix, 4);
	pDevice->GetVertexShaderConstantF(230, ViewMatrix, 4);

	D3DXMatrixIdentity(&WorldMatrix);
	D3DXVec3Project(&vOut, &vIn, &Viewport, &ProjMatrix, &ViewMatrix, &WorldMatrix);

	if (vOut.z < 1.0f)
	{
		ModelInfo_t pModelInfo = { static_cast<float>(vOut.x), static_cast<float>(vOut.y) };

		ModelInfo.push_back(pModelInfo);
	}
}
Code:
if (ModelInfo.size() != NULL)
{
	for (int i = 0; i < ModelInfo.size(); i += 1)
	{
		if (ModelInfo[i].vOutX > 1)
		{
			DrawCornerBox(Device, (int)ModelInfo[i].vOutX, (int)ModelInfo[i].vOutY+20, 20, 30, 2, D3DCOLOR_ARGB(255, 255, 255, 0));
		}
	}
}
ModelInfo.clear();
Made a video with
Code:
Device->GetVertexShaderConstantF(0, ProjMatrix, 4); 
Device->GetVertexShaderConstantF(4, ViewMatrix, 4);
Just to show that it partially works. Also used 70 aimheight in this, then going down slowly.
http://www.youtube.com/watch?v=aq6ct...ature=youtu.be




Then here's what 230 gives me:


I even scrolled through all the possible combinations of ViewMatrix and ProjMatrix, starting to think, the problem is not in that.

Would it be possible, if you could help me on skype ? Or some other IM?
#32 · edited 11y ago · 11y ago
Jhem
Jhem
Quote Originally Posted by lvous View Post
which game pointblank? if you have the classes and the right offset then yes
Yes, and I don't quite Understand this.
(float)aimheight
#33 · 11y ago
lvous
lvous
Quote Originally Posted by ves23 View Post
I even scrolled through all the possible combinations of ViewMatrix and ProjMatrix, starting to think, the problem is not in that.
..
I think the problem was DrawPoint. D3DCLEAR_ZBUFFER made the boxes disappear. Worldtoscreen works, here is the working version:

pastebin.com/Ykk8q4yL



The boxes are still buggy, I think you need to filter out heads or bodies somehow which can be difficult.

- - - Updated - - -

Quote Originally Posted by Jhem View Post
Yes, and I don't quite Understand this.
(float)aimheight
That's where you simply adjust the height of the esp box, usually it draws the box at the lowest point (feet) and you want to draw or aim heigher.
#34 · 11y ago
VE
ves23
Quote Originally Posted by lvous View Post
I think the problem was DrawPoint. D3DCLEAR_ZBUFFER made the boxes disappear. Worldtoscreen works, here is the working version:

pastebin.com/Ykk8q4yL



The boxes are still buggy, I think you need to filter out heads or bodies somehow which can be difficult.

- - - Updated - - -


That's where you simply adjust the height of the esp box, usually it draws the box at the lowest point (feet) and you want to draw or aim heigher.
You play Tera, too? Cool ! I just used your w2s, and it worked ! I don't think it has anything to do with the buffer, maybe I'm wrong, but I haven't tested further, and can't tell where the problem was. Thanks a lot, though

Here's a video of it:

#35 · 11y ago
lvous
lvous
Quote Originally Posted by ves23 View Post
You play Tera, too? Cool ! I just used your w2s, and it worked ! I don't think it has anything to do with the buffer, maybe I'm wrong, but I haven't tested further, and can't tell where the problem was. Thanks a lot, though

Here's a video of it:

Looks good. I don't play tera, just wanted to test something and see if I can make it work :> Noticed that nicknames are also a shader with a different localtoworld
#36 · edited 11y ago · 11y ago
VE
ves23
Quote Originally Posted by lvous View Post
Looks good. I don't play tera, just wanted to test something and see if I can make it work :> Noticed that nicknames are also a shader with a different localtoworld
You can make an epic bot with the info on the crosshair. Its very easy to read that distance address, and you can cast skills based on the distance between you and the target. I've done it before and I believe, there was also an address that would show if you're aiming a friendly, and it can be used for the aimbot, to not aim friendly targets.
#37 · 11y ago
lvous
lvous
Quote Originally Posted by ves23 View Post
You can make an epic bot with the info on the crosshair. Its very easy to read that distance address, and you can cast skills based on the distance between you and the target. I've done it before and I believe, there was also an address that would show if you're aiming a friendly, and it can be used for the aimbot, to not aim friendly targets.
Do you have the address for enemies in crosshair? Try my autoshoot, I also added distance esp. pastebin.com/PJhNQfG3
#38 · 11y ago
Jhem
Jhem
Quote Originally Posted by lvous View Post
Do you have the address for enemies in crosshair? Try my autoshoot, I also added distance esp. pastebin.com/PJhNQfG3
How can be done the w2s?
Code:
bool WorldToScreen(D3DXVECTOR3 inpos, D3DXVECTOR3 &outpos, LPDIRECT3DDEVICE9 pDevice)
{
	DWORD dwRenderData = (DWORD)GetModuleHandleA("i3GfxDx.dll") + 0x0000;
	CRenderData* RenderData = (CRenderData*)(dwRenderData);

	D3DXVECTOR3 vScreen;
	D3DVIEWPORT9 g_ViewPort;

	pDevice->GetViewport(&g_ViewPort);
	g_ViewPort.X = g_ViewPort.Y = 0;
	g_ViewPort.MinZ = 0;
	g_ViewPort.MaxZ = 1;
	D3DXVec3Project(&vScreen, &inpos, &g_ViewPort,
		&RenderData->RenderData->ProjectMatrix,
		&RenderData->RenderData->ViewMatrix,
		&RenderData->RenderData->WorldMatrix);

	if (vScreen.z < 1.0f && vScreen.x > 0.0f && vScreen.y > 0.0f && vScreen.x < g_ViewPort.Width && vScreen.y < g_ViewPort.Height)
	{
		outpos.x = vScreen.x;
		outpos.y = vScreen.y;
		outpos.z = vScreen.z;

		return true;
	}

	return false;
}


- - - Updated - - -

Something like doing like this?

Code:
void AddModel(LPDIRECT3DDEVICE9 Device)
{
	ModelInfo_t* pModel = new ModelInfo_t;
         DWORD dwRenderData = (DWORD)GetModuleHandleA("i3GfxDx.dll") + 0x0000;
	CRenderData* RenderData = (CRenderData*)(dwRenderData);

	Device->GetViewport(&viewport);
	D3DXVECTOR3 vScreenCoord(0, 0, (float)aimheight), vWorldLocation(0, 0, 0);

	D3DXVec3Project(&vScreenCoord, &vWorldLocation, &viewport, &RenderData->ToMyProject, &RenderData->ToMyView, &RenderData->ToMyWOrld); //Pointed to my game

	if (vScreenCoord.z < 1)
	{
	pModel->Position2D.x = vScreenCoord.x;
	pModel->Position2D.y = vScreenCoord.y;
	}

	ModelInfo.push_back(pModel);
}
#39 · edited 11y ago · 11y ago
VE
ves23
Quote Originally Posted by lvous View Post
Do you have the address for enemies in crosshair? Try my autoshoot, I also added distance esp. pastebin.com/PJhNQfG3
Yeah, I have it, I'm even using right now, so I don't aim dead stuff, flying boxes, etc, just using it like a 'alive-check'. I just opened my old projects, and this is how I used to do my bot for tera http://pastebin.com/rseG93bX . Hey, if you want, you could add me in skype, and maybe we can make some fun bot or something, " fuzzu_wuzzu " not with 1.
#40 · 11y ago
lvous
lvous
Quote Originally Posted by Jhem View Post
[FONT="Comic Sans MS"][COLOR="Red"][SIZE="2"][B]

How can be done the w2s?
..
Something like doing like this?

Code:
void AddModel(LPDIRECT3DDEVICE9 Device)
{
	ModelInfo_t* pModel = new ModelInfo_t;
         DWORD dwRenderData = (DWORD)GetModuleHandleA("i3GfxDx.dll") + 0x0000;
	CRenderData* RenderData = (CRenderData*)(dwRenderData);

	Device->GetViewport(&viewport);
	D3DXVECTOR3 vScreenCoord(0, 0, (float)aimheight), vWorldLocation(0, 0, 0);

	D3DXVec3Project(&vScreenCoord, &vWorldLocation, &viewport, &RenderData->ToMyProject, &RenderData->ToMyView, &RenderData->ToMyWOrld); //Pointed to my game

	if (vScreenCoord.z < 1)
	{
	pModel->Position2D.x = vScreenCoord.x;
	pModel->Position2D.y = vScreenCoord.y;
	}

	ModelInfo.push_back(pModel);
}
Point blank is using settransform if I remember correctly, if you want wotldtoscreen without offsets then just use this:
Code:
Device->GetViewport(&viewport);
D3DXMATRIX projection, view, world;
D3DXVECTOR3 vScreenCoord(0, 0, (float)aimheight), vWorldLocation(0, 0, 0);

Device->GetTransform(D3DTS_VIEW, &view);
Device->GetTransform(D3DTS_PROJECTION, &projection);
Device->GetTransform(D3DTS_WORLD, &world);

D3DXVec3Project(&vScreenCoord, &vWorldLocation, &viewport, &projection, &view, &world);

if (vScreenCoord.z < 1)
{
pModel->Position2D.x = vScreenCoord.x;
pModel->Position2D.y = vScreenCoord.y;
}
Of course it would be better if you find the offsets, I don't have the game.
#41 · 11y ago
VE
ves23
Quote Originally Posted by lvous View Post
Of course it would be better if you find the offsets, I don't have the game.


Grabbed the addresses last night, and my bot is fully working.

In my dll:
Code:
if(Base==NULL)Base=(UINT_PTR)GetModuleHandle("TERA.exe");

CrosshairIDBase = read<DWORD>(Base + 0x1D17BA4);  
if(CrosshairIDBase != NULL)CrosshairIDBaseOffset1 = read<DWORD>(CrosshairIDBase + 0x14); 
if(CrosshairIDBaseOffset1 != NULL)CrosshairIDBaseOffset2 = read<DWORD>(CrosshairIDBaseOffset1 + 0x2e4); 
if(CrosshairIDBaseOffset2 != NULL)CrosshairID = read<DWORD>(CrosshairIDBaseOffset2 + 0x28);
In my bot.exe, reading externally:

Code:
DWORD FFS = mem.read<int>((DWORD)Base + 0x1D17BA4);
DWORD FirstPointer = mem.read<int>((DWORD)FFS + 0x14);
DWORD SecondPointer = mem.read<int>((DWORD)FirstPointer + 0x2e4);
DWORD CurrentDistance = mem.read<int>((DWORD)SecondPointer + 0x28);

DWORD HealthAddress1 = mem.read<int>((DWORD)Base + 0x01D17BA4);
DWORD HealthAddressOffset1 = mem.read<int>((DWORD)HealthAddress1 + 0x14);
DWORD HealthAddressOffset2 = mem.read<int>((DWORD)HealthAddressOffset1 + 0x40);
DWORD HealthAddressOffset3 = mem.read<int>((DWORD)HealthAddressOffset2 + 0x10);


DWORD CurrentDistance = mem.read<int>((DWORD)SecondPointer + 0x28);
DWORD CurrentHealth = mem.read<int>((DWORD)HealthAddressOffset3 + 0x48);
DWORD CurrentMana = mem.read<int>((DWORD)HealthAddressOffset3 + 0x78);
DWORD CurrentResolve = mem.read<int>((DWORD)HealthAddressOffset3 + 0x498);
DWORD IdCheck = mem.read<int>((DWORD)SecondPointer + 0x1c);
Now, there's probably a better way to read all this, but I don't know it. I also tried that distance esp, and all i'm getting is 0's. How did you manage to do it?
#42 · 11y ago
lvous
lvous
Quote Originally Posted by ves23 View Post
Grabbed the addresses last night, and my bot is fully working.

In my dll:
Code:
if(Base==NULL)Base=(UINT_PTR)GetModuleHandle("TERA.exe");

CrosshairIDBase = read<DWORD>(Base + 0x1D17BA4);  
if(CrosshairIDBase != NULL)CrosshairIDBaseOffset1 = read<DWORD>(CrosshairIDBase + 0x14); 
if(CrosshairIDBaseOffset1 != NULL)CrosshairIDBaseOffset2 = read<DWORD>(CrosshairIDBaseOffset1 + 0x2e4); 
if(CrosshairIDBaseOffset2 != NULL)CrosshairID = read<DWORD>(CrosshairIDBaseOffset2 + 0x28);
In my bot.exe, reading externally:

Code:
DWORD FFS = mem.read<int>((DWORD)Base + 0x1D17BA4);
DWORD FirstPointer = mem.read<int>((DWORD)FFS + 0x14);
DWORD SecondPointer = mem.read<int>((DWORD)FirstPointer + 0x2e4);
DWORD CurrentDistance = mem.read<int>((DWORD)SecondPointer + 0x28);

DWORD HealthAddress1 = mem.read<int>((DWORD)Base + 0x01D17BA4);
DWORD HealthAddressOffset1 = mem.read<int>((DWORD)HealthAddress1 + 0x14);
DWORD HealthAddressOffset2 = mem.read<int>((DWORD)HealthAddressOffset1 + 0x40);
DWORD HealthAddressOffset3 = mem.read<int>((DWORD)HealthAddressOffset2 + 0x10);


DWORD CurrentDistance = mem.read<int>((DWORD)SecondPointer + 0x28);
DWORD CurrentHealth = mem.read<int>((DWORD)HealthAddressOffset3 + 0x48);
DWORD CurrentMana = mem.read<int>((DWORD)HealthAddressOffset3 + 0x78);
DWORD CurrentResolve = mem.read<int>((DWORD)HealthAddressOffset3 + 0x498);
DWORD IdCheck = mem.read<int>((DWORD)SecondPointer + 0x1c);
Now, there's probably a better way to read all this, but I don't know it. I also tried that distance esp, and all i'm getting is 0's. How did you manage to do it?
Thanks for the offsets don't have much time right now but I will try later. Well the distance esp works fine in the example I posted, you use D3DXVec3Unproject and then get the distance between VectorMiddle and vIn
Code:
D3DXVECTOR3 VectorMiddle..
D3DXVec3Unproject(&VectorMiddle, &ScreenMiddlee, &Viewport, &ProjMatrix, &ViewMatrix, &WorldMatrix);
D3DXVec3Project(&vOut, &vIn, &Viewport, &ProjMatrix, &ViewMatrix, &WorldMatrix);
float RealDistance = GetDistance(VectorMiddle.x, VectorMiddle.y, vIn.x, vIn.y);
#43 · 11y ago
Jhem
Jhem
Quote Originally Posted by lvous View Post
Point blank is using settransform if I remember correctly, if you want wotldtoscreen without offsets then just use this:
Code:
Device->GetViewport(&viewport);
D3DXMATRIX projection, view, world;
D3DXVECTOR3 vScreenCoord(0, 0, (float)aimheight), vWorldLocation(0, 0, 0);

Device->GetTransform(D3DTS_VIEW, &view);
Device->GetTransform(D3DTS_PROJECTION, &projection);
Device->GetTransform(D3DTS_WORLD, &world);

D3DXVec3Project(&vScreenCoord, &vWorldLocation, &viewport, &projection, &view, &world);

if (vScreenCoord.z < 1)
{
pModel->Position2D.x = vScreenCoord.x;
pModel->Position2D.y = vScreenCoord.y;
}
Of course it would be better if you find the offsets, I don't have the game.
I have the offsets. So I can use this w2s?
And BTW, PB game doesn't have a correct Model or stride, it is possible to do the head only?
Code:
void AddModel(LPDIRECT3DDEVICE9 Device)
{
	ModelInfo_t* pModel = new ModelInfo_t;
         DWORD dwRenderData = (DWORD)GetModuleHandleA("i3GfxDx.dll") + 0x0000;
	CRenderData* RenderData = (CRenderData*)(dwRenderData);

	Device->GetViewport(&viewport);
	D3DXVECTOR3 vScreenCoord(0, 0, (float)aimheight), vWorldLocation(0, 0, 0);

	D3DXVec3Project(&vScreenCoord, &vWorldLocation, &viewport, &RenderData->ToMyProject, &RenderData->ToMyView, &RenderData->ToMyWOrld); //Pointed to my game

	if (vScreenCoord.z < 1)
	{
	pModel->Position2D.x = vScreenCoord.x;
	pModel->Position2D.y = vScreenCoord.y;
	}

	ModelInfo.push_back(pModel);
}
#44 · 11y ago
VE
ves23
Quote Originally Posted by lvous View Post
Thanks for the offsets don't have much time right now but I will try later. Well the distance esp works fine in the example I posted, you use D3DXVec3Unproject and then get the distance between VectorMiddle and vIn
Code:
D3DXVECTOR3 VectorMiddle..
D3DXVec3Unproject(&VectorMiddle, &ScreenMiddlee, &Viewport, &ProjMatrix, &ViewMatrix, &WorldMatrix);
D3DXVec3Project(&vOut, &vIn, &Viewport, &ProjMatrix, &ViewMatrix, &WorldMatrix);
float RealDistance = GetDistance(VectorMiddle.x, VectorMiddle.y, vIn.x, vIn.y);
Any idea how to lock the aimbot, to 1 target, like for an example, if I have 1 target in my fov, to aim at it and ignore all others ? Btw, got the distance thingy working, and im using it, instead of crosshair difference, i think its much better
#45 · 11y ago
Posts 31–45 of 51 · Page 3 of 4

Post a Reply

Similar Threads

  • simple unpatched aimbot plixBy DanOfAwsome in Combat Arms Discussions
    2Last post 14y ago
  • A simple undetected aimbotBy tylormartin in Battlefield 3 (BF3) Hacks & Cheats
    1Last post 13y ago
  • Simple [Aimbot]By tabuzo013 in General
    8Last post 15y ago
  • How To make your own simple AimbotBy sumsar1812 in Battlefield Heroes Hacks
    41Last post 16y ago
  • Simple aimbot source codeBy yusako in Call of Duty Modern Warfare 2 Coding / Programming / Source Code
    23Last post 15y ago

Tags for this Thread

#pure d3d aimbot