移除内存修改类功能(NoSway/InfStamina/NoFallDmg): Mono 版偏移不兼容防乱写; 中文字体换全量 CJK 字库修复问号

This commit is contained in:
kedou 2026-08-05 22:27:33 +08:00
parent c3e9737d20
commit 211d8ac4c2
6 changed files with 22 additions and 50 deletions

View File

@ -1,28 +1,7 @@
#include "Framework.h" #include "Framework.h"
void CFramework::MiscAll() // 内存修改类功能 (NoSway/InfStamina/NoFallDmg) 已移除:
{ // 它们依赖 IL2CPP 版偏移, 在 EXFIL DELTA (Mono 0.16.9) 上偏移不兼容, 会乱写内存。
// BasePointer
uintptr_t Physics = m.Read<uintptr_t>(local.m_address + offset::Player::pPhysics);
uintptr_t BreathEffector = m.Read<uintptr_t>(local.m_pWeaponAnimation + offset::WeaponAnimations::Breath);
uintptr_t Stamina = m.Read<uintptr_t>(Physics + offset::Physics::Stamina);
// No Recoil/Sway
if (g.g_NoSway) {
m.Write<int>(local.m_pWeaponAnimation + 0x140, 1); // Mask?
m.Write<float>(BreathEffector + 0xa4, 0.001f);
}
// InfStamina
if (g.g_InfStamina && m.Read<float>(Stamina + 0x48) < 85.f)
m.Write<float>(Stamina + 0x48, 100.f);
// NoFall Damage
if (g.g_NoFallDmg && m.Read<float>(Physics + offset::Physics::FallDamageMultiplier) != 0.f)
m.Write<float>(Physics + offset::Physics::FallDamageMultiplier, 0.f);
}
void CFramework::GetESPInfo(const int& SpawnType, std::string& vOutStr, ImColor& vOutColor) void CFramework::GetESPInfo(const int& SpawnType, std::string& vOutStr, ImColor& vOutColor)
{ {

View File

@ -20,8 +20,7 @@ public:
void UpdateStaticList(); void UpdateStaticList();
void RenderInfo(); void RenderInfo();
void RenderMenu(); void RenderMenu();
void RenderESP(); void RenderESP();
void MiscAll();
void AimAll(); void AimAll();
private: private:
CGame* tarkov = new CGame(); CGame* tarkov = new CGame();

View File

@ -119,9 +119,8 @@ void CFramework::RenderMenu()
ImGui::Separator(); ImGui::Separator();
ImGui::Spacing(); ImGui::Spacing();
ImGui::Checkbox("无摆动", &g.g_NoSway); ImGui::TextDisabled("内存修改类功能已移除");
ImGui::Checkbox("无限耐力", &g.g_InfStamina); ImGui::TextDisabled("(Mono 版偏移不兼容, 防止乱写内存)");
ImGui::Checkbox("无掉落伤害", &g.g_NoFallDmg);
ImGui::EndChild(); ImGui::EndChild();
ImGui::BeginChild("##C021", ImVec2(ImGui::GetContentRegionAvail()), true); ImGui::BeginChild("##C021", ImVec2(ImGui::GetContentRegionAvail()), true);
@ -234,11 +233,11 @@ void CFramework::RenderMenu()
ImGui::InputInt("MC", &g.g_AimMcOffset, 8, 8, ImGuiInputTextFlags_CharsHexadecimal); ImGui::InputInt("MC", &g.g_AimMcOffset, 8, 8, ImGuiInputTextFlags_CharsHexadecimal);
ImGui::InputInt("旋转", &g.g_AimRotOffset, 4, 4, ImGuiInputTextFlags_CharsHexadecimal); ImGui::InputInt("旋转", &g.g_AimRotOffset, 4, 4, ImGuiInputTextFlags_CharsHexadecimal);
// 误改输入框会直接导致 Memory 模式失效, 一键恢复默认 // 误改输入框会直接导致 Memory 模式失效, 一键恢复本客户端实测默认值
if (ImGui::Button("重置偏移 (0x170/0x2C0)", ImVec2(ImGui::GetContentRegionAvail().x, 0.f))) if (ImGui::Button("重置偏移 (0x1E0/0x3A4)", ImVec2(ImGui::GetContentRegionAvail().x, 0.f)))
{ {
g.g_AimMcOffset = 0x170; g.g_AimMcOffset = 0x1E0;
g.g_AimRotOffset = 0x2C0; g.g_AimRotOffset = 0x3A4;
} }
if (ImGui::Button("扫描旋转偏移(两步)", ImVec2(ImGui::GetContentRegionAvail().x, 0.f))) if (ImGui::Button("扫描旋转偏移(两步)", ImVec2(ImGui::GetContentRegionAvail().x, 0.f)))

View File

@ -18,8 +18,8 @@ namespace offset
namespace Player namespace Player
{ {
constexpr auto pPlayerBody = 0xC0; constexpr auto pPlayerBody = 0xC0;
constexpr auto pMovementContext = 0x170; constexpr auto pMovementContext = 0x1E0; // EXFIL DELTA (Mono 0.16.9) 实测. IL2CPP 0.15.x 是 0x170
constexpr auto pWeaponAnimation = 0x1E0; constexpr auto pWeaponAnimation = 0x1E0; // IL2CPP 版定义, Mono 版实际是 MovementContext (框架旧代码保留)
constexpr auto pProfile = 0x600; constexpr auto pProfile = 0x600;
constexpr auto pPhysics = 0x610; constexpr auto pPhysics = 0x610;
constexpr auto pHealthController = 0x640; constexpr auto pHealthController = 0x640;
@ -29,8 +29,8 @@ namespace offset
namespace MovementContext namespace MovementContext
{ {
// Vector2 (x = yaw, y = pitch) [rad] // Vector2 (x = yaw, y = pitch) [rad]
// SPT 3.11.x (EFT 0.15.x) の既定値。ズレていたらメニューの [回転デバッグ] で確認して調整する事。 // EXFIL DELTA (Mono 0.16.9) 实测: +0x3A4. IL2CPP 0.15.x 是 0x2C0
constexpr auto Rotation = 0x2C0; constexpr auto Rotation = 0x3A4;
} }
// EFT.Profile // EFT.Profile

View File

@ -29,10 +29,7 @@ struct Globals
float g_ESP_MaxDistance = 500.f; float g_ESP_MaxDistance = 500.f;
float g_ESP_MaxItemDistance = 50.f; float g_ESP_MaxItemDistance = 50.f;
// Misc // Misc (内存修改类功能已移除: Mono 版偏移不兼容, 防止乱写内存)
bool g_NoSway = false;
bool g_InfStamina = true;
bool g_NoFallDmg = true;
// Aim (自瞄) // Aim (自瞄)
bool g_Aim = false; bool g_Aim = false;
@ -55,11 +52,12 @@ struct Globals
float g_RecoilStrength = 4.f; // 每次下拉的鼠标单位(mickeys) float g_RecoilStrength = 4.f; // 每次下拉的鼠标单位(mickeys)
int g_RecoilInterval = 15; // 下拉间隔 [ms] int g_RecoilInterval = 15; // 下拉间隔 [ms]
// Aim Offset (运行时可调, 默认 = Offset.h 的值) // Aim Offset (运行时可调, 默认 = 本客户端实测值)
// Memory 模式自瞄用: Player + g_AimMcOffset -> + g_AimRotOffset (Vector2 yaw/pitch) // Memory 模式自瞄用: Player + g_AimMcOffset -> + g_AimRotOffset (Vector2 yaw/pitch)
// 内置扫描器 [Scan Rotation] 找到后会直接写到这里, 再复制进 Offset.h 固化 // EXFIL DELTA (Mono 0.16.9) 实测: Player+0x1E0 = MovementContext, +0x3A4 = Rotation
int g_AimMcOffset = 0x170; // 内置扫描器 [扫描旋转偏移] 找到后会直接写到这里
int g_AimRotOffset = 0x2C0; int g_AimMcOffset = 0x1E0;
int g_AimRotOffset = 0x3A4;
// System // System
bool g_StreamProof = false; bool g_StreamProof = false;

View File

@ -17,8 +17,6 @@ auto cheat = std::make_unique<CFramework>();
void Overlay::OverlayUserFunction() void Overlay::OverlayUserFunction()
{ {
cheat->MiscAll();
cheat->RenderInfo(); cheat->RenderInfo();
if (g.g_ESP) if (g.g_ESP)
@ -59,13 +57,12 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
// Load Font // Load Font
io.Fonts->AddFontFromMemoryCompressedTTF(RobotoRegular_compressed_data, RobotoRegular_compressed_size, 13.f, nullptr); io.Fonts->AddFontFromMemoryCompressedTTF(RobotoRegular_compressed_data, RobotoRegular_compressed_size, 13.f, nullptr);
// 中文字体 fallback (微软雅黑, 菜单中文化用) // 中文字体 fallback (微软雅黑, 全量 CJK 字库, 菜单中文化用)
static const ImWchar cjk_ranges[] = { 0x4E00, 0x9FFF, 0 };
if (GetFileAttributesA("C:\\Windows\\Fonts\\msyh.ttc") != INVALID_FILE_ATTRIBUTES) if (GetFileAttributesA("C:\\Windows\\Fonts\\msyh.ttc") != INVALID_FILE_ATTRIBUTES)
{ {
ImFontConfig cjk_config; ImFontConfig cjk_config;
cjk_config.MergeMode = true; cjk_config.MergeMode = true;
io.Fonts->AddFontFromFileTTF("C:\\Windows\\Fonts\\msyh.ttc", 13.f, &cjk_config, io.Fonts->GetGlyphRangesChineseSimplifiedCommon()); io.Fonts->AddFontFromFileTTF("C:\\Windows\\Fonts\\msyh.ttc", 13.f, &cjk_config, io.Fonts->GetGlyphRangesChineseFull());
} }
// Load Icon // Load Icon
@ -81,7 +78,7 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
ImFontConfig cjk_icon_config; ImFontConfig cjk_icon_config;
cjk_icon_config.MergeMode = true; cjk_icon_config.MergeMode = true;
cjk_icon_config.GlyphOffset.y = 2.f; cjk_icon_config.GlyphOffset.y = 2.f;
io.Fonts->AddFontFromFileTTF("C:\\Windows\\Fonts\\msyh.ttc", 16.f, &cjk_icon_config, io.Fonts->GetGlyphRangesChineseSimplifiedCommon()); io.Fonts->AddFontFromFileTTF("C:\\Windows\\Fonts\\msyh.ttc", 16.f, &cjk_icon_config, io.Fonts->GetGlyphRangesChineseFull());
} }
io.Fonts->Build(); io.Fonts->Build();