diff --git a/README.md b/README.md index 674b306..5ed3142 100644 --- a/README.md +++ b/README.md @@ -2,5 +2,6 @@ Apex Legends QEMU/KVM hack 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 diff --git a/apex_dma/Game.cpp b/apex_dma/Game.cpp index ef2abe9..2b9d43f 100644 --- a/apex_dma/Game.cpp +++ b/apex_dma/Game.cpp @@ -2,6 +2,7 @@ extern bool firing_range; float smooth = 12.0f; bool aim_no_recoil = true; +int bone = 2; uint64_t Entity::Observing(WinProcess& mem, uint64_t entitylist) { @@ -197,16 +198,6 @@ QAngle CalculateBestBoneAim(WinProcess& mem, Entity& from, uintptr_t t, float ma return QAngle(0, 0, 0); } } - - 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 TargetBonePosition = target.getBonePosition(mem, bone); diff --git a/apex_dma/apex_dma.cpp b/apex_dma/apex_dma.cpp index 11fbf2a..af7e1ac 100644 --- a/apex_dma/apex_dma.cpp +++ b/apex_dma/apex_dma.cpp @@ -34,6 +34,7 @@ extern bool aim_no_recoil; int safe_level = 0; bool aiming = false; extern float smooth; +extern int bone; bool actions_t = false; bool esp_t = false; @@ -77,16 +78,21 @@ float lastvis_aim[100]; void ProcessPlayer(WinProcess& mem, Entity& LPlayer, Entity& target, uint64_t entitylist, int index) { int entity_team = target.getTeamId(); - if (target.Observing(mem, entitylist) == LPlayer.ptr) - { - if (entity_team == team_player) - { - tmp_all_spec++; - } - else + uint64_t obs = target.Observing(mem, entitylist); + if (obs) + { + if(obs == LPlayer.ptr) { - tmp_spec++; + if (entity_team == team_player) + { + tmp_all_spec++; + } + else + { + tmp_spec++; + } } + return; } Vector EntityPosition = target.getPosition(); Vector LocalPlayerPosition = LPlayer.getPosition(); @@ -138,7 +144,7 @@ void DoActions(WinProcess& mem) std::this_thread::sleep_for(std::chrono::milliseconds(1)); 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(g_Base + OFFSET_LOCAL_ENT); 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(add_addr + sizeof(uint64_t)*13); uint64_t smooth_addr = mem.Read(add_addr + sizeof(uint64_t)*14); uint64_t max_fov_addr = mem.Read(add_addr + sizeof(uint64_t)*15); + uint64_t bone_addr = mem.Read(add_addr + sizeof(uint64_t)*16); if(mem.Read(spec_addr)!=1) { @@ -593,6 +600,7 @@ static void set_vars(WinProcess& mem, uint64_t add_addr) aim_no_recoil = mem.Read(aim_no_recoil_addr); smooth = mem.Read(smooth_addr); max_fov = mem.Read(max_fov_addr); + bone = mem.Read(bone_addr); if(esp && next) { @@ -696,7 +704,7 @@ static void init() bool apex_found = false; bool client_found = false; //Client "add" offset - uint64_t add_off = 0x39870; + uint64_t add_off = 0x3e870; while(active) { diff --git a/apex_dma/offsets.h b/apex_dma/offsets.h index 61108fb..848b43f 100644 --- a/apex_dma/offsets.h +++ b/apex_dma/offsets.h @@ -6,7 +6,7 @@ #if VERSION == STEAM #define OFFSET_ENTITYLIST 0x18c7af8 #define OFFSET_LOCAL_ENT 0x1c76fb8 //LocalPlayer - #define OFFSET_NAME_LIST 0x8151950 + #define OFFSET_NAME_LIST 0x81518d0 #define OFFSET_TEAM 0x430 //m_iTeamNum #define OFFSET_HEALTH 0x420 //m_iHealth @@ -29,7 +29,7 @@ #define OFFSET_OBSERVING_TARGET 0x32e0 //m_hObserverTarget #define OFFSET_MATRIX 0x1b3bd0 - #define OFFSET_RENDER 0x4077bd8 + #define OFFSET_RENDER 0x4077b58 #define OFFSET_WEAPON 0x1a0c //m_latestPrimaryWeapons #define OFFSET_BULLET_SPEED 0x1e1c @@ -42,10 +42,9 @@ #define OFFSET_GLOW_T2 0x2c4 //1193322764 = enabled, 0 = disabled #define OFFSET_GLOW_ENABLE 0x350 //7 = enabled, 2 = disabled #define OFFSET_GLOW_THROUGH_WALLS 0x360 //2 = enabled, 5 = disabled -#elif VERSION == ORIGIN #define OFFSET_ENTITYLIST 0x18c7af8 #define OFFSET_LOCAL_ENT 0x1c76fb8 //LocalPlayer - #define OFFSET_NAME_LIST 0x8151950 + #define OFFSET_NAME_LIST 0x81518d0 #define OFFSET_TEAM 0x430 //m_iTeamNum #define OFFSET_HEALTH 0x420 //m_iHealth @@ -68,7 +67,7 @@ #define OFFSET_OBSERVING_TARGET 0x32e0 //m_hObserverTarget #define OFFSET_MATRIX 0x1b3bd0 - #define OFFSET_RENDER 0x4077bd8 + #define OFFSET_RENDER 0x4077b58 #define OFFSET_WEAPON 0x1a0c //m_latestPrimaryWeapons #define OFFSET_BULLET_SPEED 0x1e1c diff --git a/apex_guest/Client/Client/main.cpp b/apex_guest/Client/Client/main.cpp index b7308d5..588c45e 100644 --- a/apex_guest/Client/Client/main.cpp +++ b/apex_guest/Client/Client/main.cpp @@ -35,11 +35,12 @@ uint64_t g_Base = 0; //write float max_dist = 200.0f*40.0f; //read float smooth = 12.0f; float max_fov = 15.0f; +int bone = 2; bool valid = false; //write bool next = false; //read write -uint64_t add[16]; +uint64_t add[17]; bool k_f5 = 0; bool k_f6 = 0; @@ -134,6 +135,7 @@ int main(int argc, char** argv) add[13] = (uintptr_t)&aim_no_recoil; add[14] = (uintptr_t)&smooth; 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)); Overlay ov1 = Overlay(); ov1.Start(); diff --git a/apex_guest/Client/Client/overlay.cpp b/apex_guest/Client/Client/overlay.cpp index 7f1a37f..6af4fc6 100644 --- a/apex_guest/Client/Client/overlay.cpp +++ b/apex_guest/Client/Client/overlay.cpp @@ -13,6 +13,7 @@ extern int allied_spectators; extern float max_dist; extern float smooth; extern float max_fov; +extern int bone; int width; int height; bool k_leftclick = false; @@ -117,7 +118,7 @@ void Overlay::RenderMenu() all_spec_disable = false; } 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); if (ImGui::BeginTabBar(XorStr("Tab"))) { @@ -182,6 +183,9 @@ void Overlay::RenderMenu() ImGui::Text(XorStr("Max FOV:")); 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(); } if (ImGui::BeginTabItem(XorStr("Visuals"))) @@ -341,14 +345,7 @@ DWORD Overlay::CreateOverlay() if (IsKeyDown(VK_INSERT) && !k_ins && ready) { show_menu = !show_menu; - if (show_menu) - { - ClickThrough(false); - } - else - { - ClickThrough(true); - } + ClickThrough(!show_menu); k_ins = true; } else if (!IsKeyDown(VK_INSERT) && k_ins)