vmread
MisterY52 4 years ago
parent 409facb7e4
commit 199614a0c6

@ -2,5 +2,6 @@
Apex Legends QEMU/KVM hack Apex Legends QEMU/KVM hack
UnknownCheats thread: https://www.unknowncheats.me/forum/apex-legends/406426-kvm-vmread-apex-esp-aimbot.html UnknownCheats thread: https://www.unknowncheats.me/forum/apex-legends/406426-kvm-vmread-apex-esp-aimbot.html
Bone IDs reference: https://www.unknowncheats.me/wiki/Apex_Legends_Bones_and_Hitboxes
Game version (Steam & Origin): v3.0.2.79 Game version (Steam & Origin): v3.0.3.105

@ -2,6 +2,7 @@
extern bool firing_range; extern bool firing_range;
float smooth = 12.0f; float smooth = 12.0f;
bool aim_no_recoil = true; bool aim_no_recoil = true;
int bone = 2;
uint64_t Entity::Observing(WinProcess& mem, uint64_t entitylist) uint64_t Entity::Observing(WinProcess& mem, uint64_t entitylist)
{ {
@ -198,16 +199,6 @@ QAngle CalculateBestBoneAim(WinProcess& mem, Entity& from, uintptr_t t, float ma
} }
} }
Vector EntityPosition = target.getPosition();
Vector LocalPlayerPosition = from.getPosition();
float dist = LocalPlayerPosition.DistTo(EntityPosition);
int bone = 2;
if (dist < 500)
{
bone = 5;
}
Vector LocalCamera = from.GetCamPos(); Vector LocalCamera = from.GetCamPos();
Vector TargetBonePosition = target.getBonePosition(mem, bone); Vector TargetBonePosition = target.getBonePosition(mem, bone);
QAngle CalculatedAngles = QAngle(0, 0, 0); QAngle CalculatedAngles = QAngle(0, 0, 0);

@ -34,6 +34,7 @@ extern bool aim_no_recoil;
int safe_level = 0; int safe_level = 0;
bool aiming = false; bool aiming = false;
extern float smooth; extern float smooth;
extern int bone;
bool actions_t = false; bool actions_t = false;
bool esp_t = false; bool esp_t = false;
@ -77,7 +78,10 @@ float lastvis_aim[100];
void ProcessPlayer(WinProcess& mem, Entity& LPlayer, Entity& target, uint64_t entitylist, int index) void ProcessPlayer(WinProcess& mem, Entity& LPlayer, Entity& target, uint64_t entitylist, int index)
{ {
int entity_team = target.getTeamId(); int entity_team = target.getTeamId();
if (target.Observing(mem, entitylist) == LPlayer.ptr) uint64_t obs = target.Observing(mem, entitylist);
if (obs)
{
if(obs == LPlayer.ptr)
{ {
if (entity_team == team_player) if (entity_team == team_player)
{ {
@ -88,6 +92,8 @@ void ProcessPlayer(WinProcess& mem, Entity& LPlayer, Entity& target, uint64_t en
tmp_spec++; tmp_spec++;
} }
} }
return;
}
Vector EntityPosition = target.getPosition(); Vector EntityPosition = target.getPosition();
Vector LocalPlayerPosition = LPlayer.getPosition(); Vector LocalPlayerPosition = LPlayer.getPosition();
float dist = LocalPlayerPosition.DistTo(EntityPosition); float dist = LocalPlayerPosition.DistTo(EntityPosition);
@ -138,7 +144,7 @@ void DoActions(WinProcess& mem)
std::this_thread::sleep_for(std::chrono::milliseconds(1)); std::this_thread::sleep_for(std::chrono::milliseconds(1));
while (g_Base!=0 && c_Base!=0) while (g_Base!=0 && c_Base!=0)
{ {
std::this_thread::sleep_for(std::chrono::milliseconds(200)); std::this_thread::sleep_for(std::chrono::milliseconds(30));
uint64_t LocalPlayer = mem.Read<uint64_t>(g_Base + OFFSET_LOCAL_ENT); uint64_t LocalPlayer = mem.Read<uint64_t>(g_Base + OFFSET_LOCAL_ENT);
if (LocalPlayer == 0) continue; if (LocalPlayer == 0) continue;
@ -563,6 +569,7 @@ static void set_vars(WinProcess& mem, uint64_t add_addr)
uint64_t aim_no_recoil_addr = mem.Read<uint64_t>(add_addr + sizeof(uint64_t)*13); uint64_t aim_no_recoil_addr = mem.Read<uint64_t>(add_addr + sizeof(uint64_t)*13);
uint64_t smooth_addr = mem.Read<uint64_t>(add_addr + sizeof(uint64_t)*14); uint64_t smooth_addr = mem.Read<uint64_t>(add_addr + sizeof(uint64_t)*14);
uint64_t max_fov_addr = mem.Read<uint64_t>(add_addr + sizeof(uint64_t)*15); uint64_t max_fov_addr = mem.Read<uint64_t>(add_addr + sizeof(uint64_t)*15);
uint64_t bone_addr = mem.Read<uint64_t>(add_addr + sizeof(uint64_t)*16);
if(mem.Read<int>(spec_addr)!=1) if(mem.Read<int>(spec_addr)!=1)
{ {
@ -593,6 +600,7 @@ static void set_vars(WinProcess& mem, uint64_t add_addr)
aim_no_recoil = mem.Read<bool>(aim_no_recoil_addr); aim_no_recoil = mem.Read<bool>(aim_no_recoil_addr);
smooth = mem.Read<float>(smooth_addr); smooth = mem.Read<float>(smooth_addr);
max_fov = mem.Read<float>(max_fov_addr); max_fov = mem.Read<float>(max_fov_addr);
bone = mem.Read<int>(bone_addr);
if(esp && next) if(esp && next)
{ {
@ -696,7 +704,7 @@ static void init()
bool apex_found = false; bool apex_found = false;
bool client_found = false; bool client_found = false;
//Client "add" offset //Client "add" offset
uint64_t add_off = 0x39870; uint64_t add_off = 0x3e870;
while(active) while(active)
{ {

@ -6,7 +6,7 @@
#if VERSION == STEAM #if VERSION == STEAM
#define OFFSET_ENTITYLIST 0x18c7af8 #define OFFSET_ENTITYLIST 0x18c7af8
#define OFFSET_LOCAL_ENT 0x1c76fb8 //LocalPlayer #define OFFSET_LOCAL_ENT 0x1c76fb8 //LocalPlayer
#define OFFSET_NAME_LIST 0x8151950 #define OFFSET_NAME_LIST 0x81518d0
#define OFFSET_TEAM 0x430 //m_iTeamNum #define OFFSET_TEAM 0x430 //m_iTeamNum
#define OFFSET_HEALTH 0x420 //m_iHealth #define OFFSET_HEALTH 0x420 //m_iHealth
@ -29,7 +29,7 @@
#define OFFSET_OBSERVING_TARGET 0x32e0 //m_hObserverTarget #define OFFSET_OBSERVING_TARGET 0x32e0 //m_hObserverTarget
#define OFFSET_MATRIX 0x1b3bd0 #define OFFSET_MATRIX 0x1b3bd0
#define OFFSET_RENDER 0x4077bd8 #define OFFSET_RENDER 0x4077b58
#define OFFSET_WEAPON 0x1a0c //m_latestPrimaryWeapons #define OFFSET_WEAPON 0x1a0c //m_latestPrimaryWeapons
#define OFFSET_BULLET_SPEED 0x1e1c #define OFFSET_BULLET_SPEED 0x1e1c
@ -42,10 +42,9 @@
#define OFFSET_GLOW_T2 0x2c4 //1193322764 = enabled, 0 = disabled #define OFFSET_GLOW_T2 0x2c4 //1193322764 = enabled, 0 = disabled
#define OFFSET_GLOW_ENABLE 0x350 //7 = enabled, 2 = disabled #define OFFSET_GLOW_ENABLE 0x350 //7 = enabled, 2 = disabled
#define OFFSET_GLOW_THROUGH_WALLS 0x360 //2 = enabled, 5 = disabled #define OFFSET_GLOW_THROUGH_WALLS 0x360 //2 = enabled, 5 = disabled
#elif VERSION == ORIGIN
#define OFFSET_ENTITYLIST 0x18c7af8 #define OFFSET_ENTITYLIST 0x18c7af8
#define OFFSET_LOCAL_ENT 0x1c76fb8 //LocalPlayer #define OFFSET_LOCAL_ENT 0x1c76fb8 //LocalPlayer
#define OFFSET_NAME_LIST 0x8151950 #define OFFSET_NAME_LIST 0x81518d0
#define OFFSET_TEAM 0x430 //m_iTeamNum #define OFFSET_TEAM 0x430 //m_iTeamNum
#define OFFSET_HEALTH 0x420 //m_iHealth #define OFFSET_HEALTH 0x420 //m_iHealth
@ -68,7 +67,7 @@
#define OFFSET_OBSERVING_TARGET 0x32e0 //m_hObserverTarget #define OFFSET_OBSERVING_TARGET 0x32e0 //m_hObserverTarget
#define OFFSET_MATRIX 0x1b3bd0 #define OFFSET_MATRIX 0x1b3bd0
#define OFFSET_RENDER 0x4077bd8 #define OFFSET_RENDER 0x4077b58
#define OFFSET_WEAPON 0x1a0c //m_latestPrimaryWeapons #define OFFSET_WEAPON 0x1a0c //m_latestPrimaryWeapons
#define OFFSET_BULLET_SPEED 0x1e1c #define OFFSET_BULLET_SPEED 0x1e1c

@ -35,11 +35,12 @@ uint64_t g_Base = 0; //write
float max_dist = 200.0f*40.0f; //read float max_dist = 200.0f*40.0f; //read
float smooth = 12.0f; float smooth = 12.0f;
float max_fov = 15.0f; float max_fov = 15.0f;
int bone = 2;
bool valid = false; //write bool valid = false; //write
bool next = false; //read write bool next = false; //read write
uint64_t add[16]; uint64_t add[17];
bool k_f5 = 0; bool k_f5 = 0;
bool k_f6 = 0; bool k_f6 = 0;
@ -134,6 +135,7 @@ int main(int argc, char** argv)
add[13] = (uintptr_t)&aim_no_recoil; add[13] = (uintptr_t)&aim_no_recoil;
add[14] = (uintptr_t)&smooth; add[14] = (uintptr_t)&smooth;
add[15] = (uintptr_t)&max_fov; add[15] = (uintptr_t)&max_fov;
add[16] = (uintptr_t)&bone;
printf(XorStr("add offset: 0x%I64x\n"), (uint64_t)&add[0] - (uint64_t)GetModuleHandle(NULL)); printf(XorStr("add offset: 0x%I64x\n"), (uint64_t)&add[0] - (uint64_t)GetModuleHandle(NULL));
Overlay ov1 = Overlay(); Overlay ov1 = Overlay();
ov1.Start(); ov1.Start();

@ -13,6 +13,7 @@ extern int allied_spectators;
extern float max_dist; extern float max_dist;
extern float smooth; extern float smooth;
extern float max_fov; extern float max_fov;
extern int bone;
int width; int width;
int height; int height;
bool k_leftclick = false; bool k_leftclick = false;
@ -117,7 +118,7 @@ void Overlay::RenderMenu()
all_spec_disable = false; all_spec_disable = false;
} }
ImGui::SetNextWindowPos(ImVec2(0, 0)); ImGui::SetNextWindowPos(ImVec2(0, 0));
ImGui::SetNextWindowSize(ImVec2(490, 190)); ImGui::SetNextWindowSize(ImVec2(490, 215));
ImGui::Begin(XorStr("##title"), (bool*)true, ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoScrollbar); ImGui::Begin(XorStr("##title"), (bool*)true, ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove | ImGuiWindowFlags_NoScrollbar);
if (ImGui::BeginTabBar(XorStr("Tab"))) if (ImGui::BeginTabBar(XorStr("Tab")))
{ {
@ -182,6 +183,9 @@ void Overlay::RenderMenu()
ImGui::Text(XorStr("Max FOV:")); ImGui::Text(XorStr("Max FOV:"));
ImGui::SliderFloat(XorStr("##3"), &max_fov, 5.0f, 250.0f, "%.2f"); ImGui::SliderFloat(XorStr("##3"), &max_fov, 5.0f, 250.0f, "%.2f");
ImGui::Text(XorStr("Aim at (bone id):"));
ImGui::SliderInt(XorStr("##4"), &bone, 0, 175);
ImGui::EndTabItem(); ImGui::EndTabItem();
} }
if (ImGui::BeginTabItem(XorStr("Visuals"))) if (ImGui::BeginTabItem(XorStr("Visuals")))
@ -341,14 +345,7 @@ DWORD Overlay::CreateOverlay()
if (IsKeyDown(VK_INSERT) && !k_ins && ready) if (IsKeyDown(VK_INSERT) && !k_ins && ready)
{ {
show_menu = !show_menu; show_menu = !show_menu;
if (show_menu) ClickThrough(!show_menu);
{
ClickThrough(false);
}
else
{
ClickThrough(true);
}
k_ins = true; k_ins = true;
} }
else if (!IsKeyDown(VK_INSERT) && k_ins) else if (!IsKeyDown(VK_INSERT) && k_ins)

Loading…
Cancel
Save