skript023/Mono-Hacking

GitHub: skript023/Mono-Hacking

一个用于逆向研究和探索 Mono/Unity 游戏的 C++ 内部框架,提供运行时脚本支持和游戏行为操控能力。

Stars: 0 | Forks: 0

C++ Logo

Valheim Hacks

一个用于探索和逆向工程基于 Mono / Unity 游戏的 C++ 框架。
专为与 Mono 运行时直接交互而构建。

⚠️ 严格仅用于教育和研究目的。

## 📌 概述 **Valheim Hacks** 是一个轻量级的内部框架,旨在与 Unity 游戏中使用的 Mono 运行时直接交互。 它在 Mono API 之上提供了一个清晰的抽象层,允许原生 C++ 代码与托管 C# 代码无缝交互。 使用此框架,您可以: - 访问 C# 中的类、方法和字段 - 直接从 C++ 调用托管方法 - 读取和操作游戏内对象(Player、Transform 等) - 探索 Unity 游戏的内部结构 - 使用嵌入式 JavaScript (QuickJS) 执行运行时脚本 ## 🧩 核心框架功能 这些是框架的可复用构建块,独立于任何特定的游戏逻辑。 - 🔍 Mono 反射辅助工具(类、方法、字段) - 🧠 MonoObject、MonoClass、MonoMethod 的简洁封装 - 🎯 直接方法调用 (`mono_runtime_invoke`) - 📦 实用转换(例如 `List` → `std::vector`) - 🧵 工作循环系统(tick/update 处理程序) - 🔌 易于扩展的 Hook 就绪架构 - 🖥️ 可选的 ImGui 调试界面 - 📜 嵌入式 JavaScript 引擎 (QuickJS) - ⚡ 无需重新编译的实时脚本 - 🧩 模块化且可扩展的设计 ## 🎮 游戏模块 (Valheim) 这些功能构建在框架之上,专用于游戏行为操控。 ### 👤 玩家 (自身) - 飞行 - 无限耐力 - 无重量 - 死亡不掉落物品 - 航行时始终保持顺风 - 携带任意物品传送 - 技能 / 属性修改器(生命值、耐力、护甲等) ### 🎒 物品栏 - 覆盖物品属性: - 耐久度 - 品质 - 堆叠数量 - 变体 - 自定义掉落数量 ### 🌍 世界 - 驯服所有动物(鹿、野猪、狼) - 世界交互工具 ### 👥 在线玩家 - 通过 Mono 检索玩家列表 - 为每个玩家动态生成子菜单 - 可扩展的玩家特定操作 ### 👁️ ESP - 玩家 / 实体 ESP - 名称、生命值、方框渲染 - 连线 & 骨骼可视化 ### 🎯 Aimbot - 可配置的 Aimbot: - FOV - 平滑度 - 触发键 - Triggerbot - FOV 可视化 - 可选的传送目标 ### 📍 传送系统 - 向前传送 - 自定义传送系统 - 按类别保存 / 加载位置 - 持久化传送存储 - 支持旋转感知的传送 ## 🧠 架构概览 项目分为两个主要层级: ### 核心层 处理: - Mono 交互 - 内存 / hooks - 脚本引擎 - UI 系统 ### 功能层 处理: - 游戏特定逻辑 - 玩家修改 - ESP / Aimbot / 传送 - 高层游戏玩法操控 ## 🧵 示例:动态 UI 系统 ``` canvas::add_submenu("ESP", "SubmenuESP"_hash, [](regular_submenu* sub) { sub->add_option>("esp_activate"_hash); sub->add_option>("draw_name"_hash); sub->add_option>("draw_health"_hash); }); ``` ## 📜 JavaScript 脚本 (QuickJS) 本项目集成了 **QuickJS**,支持使用 JavaScript 进行运行时脚本编写。 这使得无需重新构建项目即可快速进行原型设计和与游戏动态交互。 ### 能力 - 调用暴露的原生 C++ 绑定 - 与 Mono 类和对象交互 - 即时执行脚本 - 在移植到 C++ 之前更快地构建功能 ### 示例 ``` // Hooking Example detour.add( "Terminal::ConsoleCommand::IsValid", address, (ctx) => { console.log("ConsoleCommand", ctx.getArg(0).number().toString(16).toUpperCase()); console.log("Terminal", ctx.getArg(1).number().toString(16).toUpperCase()); console.log("Boolean", ctx.getArg(2).number().toString(16).toUpperCase()); return true; } ); detour.enable("Terminal::ConsoleCommand::IsValid"); // Access Max Health Example const klass = mono.get_class("Player", "assembly_valheim"); console.log("class:", klass); const field = mono.get_field(klass, "m_baseHP"); console.log("field:", field); const player = unity.get_local_player(); console.log("player:", player); mono.set_field_float(player, field, 800.0); // Add tab menu example import * as canvas from "canvas"; canvas.add_tab("Test2", 45, sub => { sub.add_bool("Flying"); sub.add_slider("Max HP", 1, 500, 10); sub.add_choose("Mode", ["A", "B"], (i, v) => { console.log(i, v); }); }); ```
标签:C++, Hook技术, ImGui, Mono, QuickJS, Unity, Valheim, 云资产清单, 偏移量, 内存修改, 内存读写, 内部作弊, 数据擦除, 游戏修改器, 游戏安全, 游戏逆向, 运行时注入, 逆向工程