Akebi-GC 实践指南:读懂一个基于内存注入与 Hook 技术的开源游戏增强框架
Akebi-GC 实践指南读懂一个基于内存注入与 Hook 技术的开源游戏增强框架【免费下载链接】Akebi-GC(Fork) The great software for some game that exploiting anime girls (and boys).项目地址: https://gitcode.com/gh_mirrors/ak/Akebi-GCAkebi-GC 是一款面向《原神》的开源游戏增强框架核心建立在内存注入与 Hook 技术之上功能按模块化架构组织覆盖自动拾取、实体过滤、游戏内透视、传送等场景。项目把注入程序与功能 DLL 分成清晰的三块是适合初学者和进阶开发者研究 Windows 进程内存操作、函数 Hook 与特征码扫描的完整工程样本。本文从使用者视角梳理模块协作关系、配置文件的验证方式与排错路径帮你不用逐行读源码也能建立整体认知。适用人群与常见误区先想清楚你要从中学到什么适合谁读这个项目学过 C 基础想看一个完整的 Windows DLL 工程进程注入、渲染后端 HookDX11/DX12、跨线程事件分发游戏逆向方向想知道特征码signature扫描如何替代硬编码地址想参考同一个项目里管理几十个功能模块的模块化架构做法三个常见误区先纠正这是个作弊工具吗——项目定位是技术演示框架。工程上值得看的是事务化 Hook 管理、线程安全容器、事件订阅分发这些与游戏无关的通用能力。clone 下来就能跑——整条链路是 Windows MSVC 环境含 .sln 与多个 .vcxproj且需要匹配目标游戏的运行时版本。游戏更新后功能还能用——不一定。项目用多特征码候选、交叉引用xref和模块哈希校验来降低版本敏感度但坏掉时你仍然需要知道怎么排查。三工程分工从内存注入到功能落地的完整链路 解决方案拆成三个工程职责边界很明确injector独立注入程序定位目标进程后把功能 DLL 送进去cheat-base基础库提供 Hook 管理、特征码扫描、配置序列化、事件系统、渲染后端等基础设施不感知任何具体游戏功能cheat-library功能库所有用户可见的功能都在这里自动拾取、传送、ESP、相机控制等只依赖 cheat-base 的接口如何理解注入模块injector/src/injector.cpp的核心只有一个封装函数两种策略在编译期二选一#ifdef MANUAL_MAP bool result ManualMapDLL(hProc, filepath); #else bool result LoadLibraryDLL(hProc, filepath); #endifLoadLibrary 路线在目标进程内远程调用系统加载器由 loader 完成 DLL 初始化代码量最小、最容易调试手动映射路线自己读 PE 文件、映射节区、解析导入表并调用入口点对内存布局的掌控更细但实现更复杂这里的关键是两条路线收敛在同一个入口上上层功能代码完全不关心DLL 是怎么进来的这也是阅读注入模块时可以抓住的主线。为什么 Hook 层选择 Detourscheat-base/src/cheat-base/HookManager.h对微软 Detours 库做了薄封装对外只暴露安装、调用原函数、卸载三类操作。两个工程细节值得注意事务化安装attach/detach 都包在 DetourTransactionBegin/Commit 里并更新当前线程避免一次改多个函数时出现半完成状态原函数留档内部表记录Hook 处理函数 → 原函数地址的映射调用原函数时查表即可卸载 Hook 时也能按表还原做游戏 Hook 原理入门可以从这个文件开始把拦截入口 → 透传参数 → 调用原函数 → 返回增强结果当成一个闭环再去功能文件里看闭环如何被具体业务使用。功能代码解剖以 AutoLoot 为例看懂 Feature 接口cheat-library 里的功能都遵循同一形态继承 cheat-base 的Feature类实现少量纯虚接口——GetGUIInfo()提供功能名与所属分组DrawMain()绘制配置区DrawStatus()可选绘制屏幕状态栏。以cheat-library/src/user/cheat/world/AutoLoot自动拾取为例它的配置项全部声明为config::Field模板字段每个开关都能绑定热键内部维护一个线程安全队列和一个时间戳分别记录待拾取目标与下次执行时机。功能本身不主动轮询游戏状态而是接收基础层推送的事件新实体创建时触发实体处理逻辑每帧更新时触发拾取判定。cheat-base 的CheatManagerBase统一接住渲染、按键、窗口消息再分发给各功能——这就是事件系统的协作模型也是模块化架构的核心功能只声明某事件发生时做什么不关心事件来源也不感知其他功能的实现。实体过滤从哪里来拾取、透视、传送等功能都依赖cheat-library/src/user/cheat/game/下的实体管理层EntityManager维护实体集合IEntityFilter及其实现负责哪些实体该被显示或处理。新增功能时你通常不需要动实体层只需订阅合适的事件并接入过滤链。模块依赖关系一图读懂依赖方向是单向的功能模块 → 实体/事件/配置/Hook 基础设施 → 注入与扫描底层。写新功能时如果发现自己需要反向依赖比如基础库去引用某个功能就说明设计跑偏了。地址从哪里来PatternScanner 与 signatures.json 的协作机制Hook 需要目标函数地址而地址随游戏更新变化。Akebi-GC 的答案是特征码扫描cheat-library/res/signatures.json按模块如 UserAssembly.dll分组每个命名条目包含两类信息——signatures多条候选特征码字符串??是通配字节。跨版本轻微变动时多条候选保证仍有一条能命中xref交叉引用法先定位引用点再按相对偏移回推目标地址PatternScanner类负责解析这份文件、扫描目标模块内存并缓存结果附带两个配套机制模块哈希校验对照assembly_checksum.json判断模块是否还是采集特征码时的版本和 AVX2 加速的批量匹配。它的用途一句话概括回答更新后某个函数现在在哪个地址。遇到版本更新地址找不到时怎样排查按这个顺序走能定位大部分问题先看模块哈希。哈希不一致说明整份特征码对新版本失效此时修单个条目没有意义需要重新采集哈希一致但单条目失败检查该条目signatures列表的候选是否全部穷尽再对照新版反汇编补充特征码特征码命中但行为不对多半是xref的相对偏移随编译器重排而变化重算偏移怀疑旧缓存复用扫描器有更新检测与存取逻辑更新后第一次正常、随后异常往往与旧偏移缓存有关配置与资源文件Akebi-GC 配置方法验证清单cheat-library/res/目录集中了不依赖代码的数据各文件分工如下signatures.json/assembly_checksum.json特征码库与模块哈希ascension_materials.json角色与培养材料的映射表供需要认识游戏数据的模块使用map_*.json提瓦特、千织平野、地下矿脉等区域地图数据支撑地图类功能icons/与iconsHD/游戏内物品、怪物图标的高低清两档经 res.rc/resource.h 编译进 DLL运行时由基础库的资源加载器读取下面是高清图标库中的一张宝箱图标既用于界面渲染也作为实体类型的视觉标识实际配置分三层行为开关走config::Field声明由菜单渲染、框架自动序列化到 JSON 配置文件游戏数据走 res 目录的静态 JSON图片走 icons 资源。配置验证时建议核对三件事热键没有跨功能冲突、对应功能的过滤子项确实开启、配置文件写入后格式合法解析失败时框架会回退默认值表现为怎么改都没用。学习路径从注入到 Hook 的推荐阅读顺序按难度递进建议这样读先注入读 injector 下两种实现的源文件理解远程线程与手动映射两条内存注入路线的取舍再 Hook 封装HookManager.h 百来行一次读完就能理解事务化安装、查表调原函数、批量卸载的完整闭环这是游戏 Hook 原理入门的关键文件然后事件系统cheat-base/src/cheat-base/events/的模板事件类支持订阅、-退订并提供可取消事件类型读懂它等于读懂了功能与基础设施的全部解耦方式最后业务功能挑 AutoLoot 或某个传送功能按配置字段 → 事件订阅 → 实体过滤 → 渲染的顺序跟一遍项目中还有两处工程实践值得搬进自己的项目跨线程数据统一用线程安全容器而不是散落互斥锁把卸载所有 Hook做成批量操作保证异常退出时也能恢复目标进程状态。下一步建议想验证完整链路先克隆仓库 https://gitcode.com/gh_mirrors/ak/Akebi-GC 只浏览解决方案结构再从cheat-library/src/framework/的入口文件入手看功能如何注册进菜单只想搞懂 Hook直接读 HookManager.h 与 inject 目录两个文件试着画一张特征码命中 → 地址计算 → 安装 Hook → 调用原函数的时序图想添加自己的功能找一个配置项最少的现有功能做模板照抄Feature 子类 Field 声明 事件订阅三件套避免把业务逻辑直接塞进事件回调里【免费下载链接】Akebi-GC(Fork) The great software for some game that exploiting anime girls (and boys).项目地址: https://gitcode.com/gh_mirrors/ak/Akebi-GC创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考