首页 / 资讯中心 / 文章详情

5 分钟读懂 YimMenuV2:游戏菜单框架如何靠钩子、内存扫描与 Lua 撑起功能

5 分钟读懂 YimMenuV2:游戏菜单框架如何靠钩子、内存扫描与 Lua 撑起功能 ★ FEATURED ARTICLE
5 分钟读懂 YimMenuV2游戏菜单框架如何靠钩子、内存扫描与 Lua 撑起功能【免费下载链接】YimMenuV2Experimental menu for GTA 5: Enhanced项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenuV2打开 YimMenuV2 的 README第一行就写得直白——Experimental menu for GTA 5: Enhanced。它不是一个通用游戏菜单框架而是专门给 GTA V 增强版用的注入式菜单编译成一个YimMenuV2.dll用注入器塞进游戏进程按INSERT或Ctrl\呼出界面。换句话说这是一个用 C23 写的游戏菜单框架加模组合集。代码量不算大却把钩子、内存操作、Lua 沙箱三件事摊开给你看很适合当现代 C 的样本读。先弄清它是什么一个注入式的 GTA V 菜单先泼点冷水省得你按参考文章里的通用框架预期去看。它是experimental实验性的官方自己都这么标。线上玩法有个绕不开的硬限制README 的Common issues里写明公共局大约每 5 分钟会被踢一次因为目前没有完整的 BattlEye 绕过合法的 host 会在心跳失败时把你移除。还有一处容易踩它推荐配 FSL一个WINMM.dll使用FSL 会把账号存档重定向到磁盘。你把 FSL 删了存档进度会消失游戏甚至可能起不来。所以定位很清楚单人和非官方环境里更稳线上反作弊有限制。把它当工程样本读很值别当成线上无敌工具。读懂三层目录core、game、types 各管什么 整个src/分三层分工是这个项目最该先记住的一点目录定位典型内容src/core/与具体游戏无关的通用框架hooking、memory、renderer、scripting、commandssrc/game/GTA V 增强版特化实现features、hooks、pointers、invokersrc/types/逆向出来的游戏内部结构rage 容器、network 同步节点、script 全局变量一句话总结core 不碰游戏细节game 负责对接 GTA Vtypes 放逆向出的结构体。这就是可移植说法的依据——真要换个游戏理论上只动game和typescore 基本能复用。features/下再按 network、players、recovery、self、vehicle、world 分目录功能点一目了然。钩子系统拆解Detour、IAT、VMT 各自何时用钩子hook说白了就是截住游戏原本的函数调用插进自己的逻辑类比成在快递路线上设个中转站。src/core/hooking/给了四种手段DetourHook改函数入口跳板最常用IATHook改导入地址表IATVMTHook改虚函数表vtableCallSiteHook在某条调用指令处打跳板注册钩子有固定套路模板参数T让类型在编译期对齐写错当场报错BaseHook::AddHooks::Anticheat::GameSkeletonUpdate( new DetourHook(GameSkeletonUpdate, Pointers.GameSkeletonUpdate, handler));打开 Hooking.cpp 你会看到一个构造函数里挂了二三十个钩子全是同一套BaseHook::Add 具体 Hook的组合反作弊相关、脚本线程ScriptVM、RunScriptThreads、网络消息ReceiveNetMessage、同步写入WriteSyncTree、匹配Matchmaking*、输入GetRawInputData。加新钩子照着抄就行。不写死地址用模式扫描定位游戏函数游戏一更新内存地址就变。所以项目不写死地址而是按一段特征字节在内存里搜出函数位置——类比不按门牌号找按门口的招牌找。src/core/memory/里PatternScanner负责这件事普通注入时用std::asyncstd::future并发跑多组特征手动映射manual map时则退化成串行代码注释里写明了线程池在那种场景下会出问题。PatternCache缓存结果BytePatches负责打字节补丁改一小段机器码。所有扫出来的指针集中在 game/pointers/钩子就引用这里。于是三者是一条流水线找地址pointers→ 打补丁BytePatches→ 挂钩子hooking。给玩家留的口子Lua 沙箱脚本不想每次加功能都重编译 C把.lua丢进%appdata%/YimMenuV2/scripts启动时递归加载改完重载即可。这套沙箱在 docs/lua-api.md 里写得很细每个脚本跑在独立沙箱独立 LuaJIT 状态默认只开放base/table/string/math/debug/bit/jitio、os、ffi都拿不到文件读写走项目自己的FileMgr不走iorequire只能加载 scripts 目录内的.lua路径穿越、绝对路径、字节码/原生模块一律拒绝API 面很宽notify、menu、ImGui、memory、pointer、Entity/Ped/Vehicle、Player、natives、network、stats、transactions等local greeting require(include.greeting) greeting.say_hello()它的作用是把 C 的钩子和内存能力包成 API 暴露出去core/scripting/和game/scripting/libraries/两块代码就是干这个的。对新手来说这是最友好的扩展入口。从构建到注入上手路径与常见坑 ⚠️构建CMake ≥ 3.20C23依赖imgui、minhook、nlohmann_json、LuaJIT、AsyncLogger见 CMakeLists.txt有cross-compile.cmake支持跨平台产物是 DLL。git clone https://gitcode.com/GitHub_Trending/yi/YimMenuV2读代码建议顺序先看 main.cpp 的启动顺序FileMgr → Pointers.Init → AnticheatBypass → Hooking → ScriptMgr再进hooking然后memory/pointers最后挑一个game/features/下的功能点跟读。常见坑均来自 README公共局每 5 分钟被踢无完整 BattlEye 绕过合法 host 因心跳失败移除你删 FSL 后存档消失 / 游戏起不来FSL 把存档重定向到磁盘起不来可删Documents/GTAV Enhanced/Profiles一句话收尾它麻雀虽小钩子、内存、Lua 三套机制都完整拿它练手现代 C 工程怎么组织比读一堆零散 demo 划算。【免费下载链接】YimMenuV2Experimental menu for GTA 5: Enhanced项目地址: https://gitcode.com/GitHub_Trending/yi/YimMenuV2创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
阅读完成 · 觉得有帮助?
咨询建站