Official site anti-cheat Ultra Core Protector

Home Download F.A.Q. Addons Monitor Forum Support Advertise English version site UCP Anti-Cheat  Russian version site UCP Anti-Cheat
Ultra Core Protector - is the client-server anti-cheat freeware, for server protection from unscrupulous players.

Abilities Supported games  
Condition Zero
Counter-Strike 1.6
Day of Defeat
Adrenaline Gamer
Team Fortress Classic
Counter-Strike Source
MU Online
Ragnarok Online
Half-Life 2 Deathmatch
Adrenaline Gamer 2
Team Fortress 2
CSGO: Can’t make aimbot work


I’m writing a new external cheat because of the noobiness of my first one. Tbh I never tried to understand how works an aimbot but now thanks to this thread I understand much more.

So the problem is that whenever I shoot it locks in the sky.

The Aimbot function
void CAimbot::Aimbot()
CMath Math;
Vector3 vector, angles, myEyes, ennemyPos, aimReal;
while (true)
if (g_options.aim_enabled)
while (GetAsyncKeyState(VK_LBUTTON) && helper_t.IsValidWeapon())
myEyes = CalcLocalPos();
ennemyPos = CalcBone(scan_t.Entities, 8);

vector = CalcAngle(myEyes, ennemyPos);
Math.VectorAngles(vector, angles);
aimReal = CalcAngle(helper_t.GetViewAngles(), angles);


The CalcBone function (yes I know I can read it in one RPM but later)
Vector3 CAimbot::CalcBone(C_PlayerData Entity, int bone)
Vector3 vector;
vector.x = Mem.Read(Entity.m_dwBoneMatrix + (0x30 * bone) + 0xC);
vector.y = Mem.Read(Entity.m_dwBoneMatrix + (0x30 * bone) + 0x1C);
vector.z = Mem.Read((Entity.m_dwBoneMatrix + (0x30 * bone) + 0x2C));
return vector;

Vector3 CAimbot::CalcLocalPos()
Vector3 HeadPos;
HeadPos.x = scan_t.Player.m_vecOrigin.x + scan_t.Player.m_vecViewOffset.x;
HeadPos.y = scan_t.Player.m_vecOrigin.y + scan_t.Player.m_vecViewOffset.y;
HeadPos.z = scan_t.Player.m_vecOrigin.z + scan_t.Player.m_vecViewOffset.z;
return HeadPos;

Vector3 CAimbot::CalcAngle(Vector3 myHead, Vector3 ennemyHead)
Vector3 store;
store.x = ennemyHead.x - myHead.x;
store.y = ennemyHead.y - myHead.y;
store.z = ennemyHead.z - myHead.z;

return store;

PS: This is how I read players’ datas
class C_PlayerData
byte _0x70[0x70];
float m_clrRender;
byte _0xEC[0x78];
bool m_bDormant;
int m_iTeam;
byte _0xFC[0x6];
int m_iHealth;
int m_flags;
Vector3 m_vecViewOffset;
Vector3 m_vecVelocity;
byte _0x134[0x16];
Vector3 m_vecOrigin;
byte _0x2968[0x2556];
DWORD m_dwBoneMatrix;
byte _0x2EE8[0x84C];
int m_hActiveWeapon;
byte _0x2F88[0x9C];
int m_iIteamDefinitionIndex;
byte _0x3010[0x84];
float m_viewPunchAngle;
byte _0x301C[0x6];
float m_aimPunchAngle;
byte _0x3028[0x6];
float m_aimPunchAngleVel;
byte _0x387E[0x852];
bool m_bIsScoped;
byte _0x3888[0x9];
bool m_bIsDefusing;
byte _A2B0[0x6A27];
int m_iShotsFired;
byte _0xB238[0xF84];
int m_iArmorValue;
byte _0xB2A4[0x68];
int m_iCrossID;

void Scanner::ScanPlayers()
while (true)
Player = Mem.Read(Mem.Read(Mem.ClientBase + Offsets::dwLocalPlayer));
InCrossEnt = Mem.Read(Mem.Read(Mem.ClientBase + Offsets::dwEntityList + (Player.m_iCrossID - 1) * 0x10));
for (int i = 1; i <= 64; i++) { Entities = Mem.Read(Mem.Read(Mem.ClientBase + Offsets::dwEntityList + (i * 0x10)));

What do you think ?