skript023/Mono-Hacking
GitHub: skript023/Mono-Hacking
一个用于逆向研究和探索 Mono/Unity 游戏的 C++ 内部框架,提供运行时脚本支持和游戏行为操控能力。
Stars: 0 | Forks: 0
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, 云资产清单, 偏移量, 内存修改, 内存读写, 内部作弊, 数据擦除, 游戏修改器, 游戏安全, 游戏逆向, 运行时注入, 逆向工程