Skip to content

About

A Windows memory value editor for offline single-player games, with versioned game profiles and player-named saved fields.

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

肝肾大圣-单机游戏数值编辑器

优先说明

1、开源,有清晰的扩展规范,用户可以使用AI进行非常方便的模块化扩展,扩展后再上传到项目,实现循环互惠。

2、免费,永久无限制使用所有功能。

3、干净,无任何多余逻辑,无任何广告、弹窗、收集之类的让人不爽的逻辑。

4、实用:

  • 多游戏同时运行,一个编辑器即可修改。
  • 多进程游戏,不需要用户区分哪一个才是数据进程,自动识别自动处理。
  • 支持类似CE功能的加速、扫描。
  • 便捷,将目标保存到字段,重启游戏后仍可自动找到,不依赖上一次运行的临时地址。
  • 模块化,可以只下载自己玩的游戏的编辑模块,用不到的不用下载。
  • 版本化,可同时支持同一个游戏的不同版本。
  • 也可以下载完整离线包,包含全部模块,解压即玩。

完整离线包下载请加QQ群:1127372613。

一个面向 Windows 离线单机游戏的本地数值扫描与管理工具。它不仅保存临时地址,还把玩家确认过的字段整理到按游戏、按版本隔离的本地游戏库中。

最新版本:v0.5.5。项目只发布正式版本,不再设置预览版更新通道。

v0.5.5 将专属模块兼容性诊断移到后台,诊断期间窗口保持响应;切换游戏、进程、模块或退出后丢弃迟到结果,与连接检查共用串行门禁。补齐精确构建/动态构建两类模块的包回归,并在扩展指南沉淀属性单位、掉落分层及主线程读取的通用分析方法。Host API 8、资料格式和现有游戏模块均不变。见发布方案与复核。

v0.5.4 修复 Steam 详情页等公共窗口与游戏同名时被误认作第二个游戏实例的问题。识别用游戏实际原名和明确别名,不用玩家可编辑的库备注;小更新不因文件哈希变化重新关联。新增默认只预览的本地历史 ZIP 维护工具,保留发布/目录输入和最近三份不同离线内容,未知文件不猜删。Host API 8 和四个游戏模块均不变。见发布方案与复核。

v0.5.3 修复专属模块更新和手动回退的候选排序:旧构建精确匹配不再遮挡能动态解析小更新的新版,未登记构建也能从可用候选中手动回退。远征正式版 0.1.2 承接已交付的 0.0.7~0.1.1;本地交付与正式标签统一计数,禁止编号倒退。发布工具保留旧包、拒绝覆盖,目录/文档提交后仍能校验来源并补传原资产。Host API 8 不变。见详细方案与三遍复核。

v0.5.2 汇总已测试的名称优先识别、通用启动器路由/倍速、专属页面会话保留和串行刷新。小更新不会因哈希变化把同名游戏变成另一个游戏;构建仍隔离旧地址,游戏专属动态定位留在模块中。Host API 8 不变,远征正式模块要求至少 0.5.2。见发布集成方案与复核。

v0.5.1 集成此前本地修复并调整游戏库图标:置顶在锁定左侧,三个小状态图标缩小,锁定再略小一点;固定槽、主题色、悬停和连接图标不变。Host API 8 正式提供字段写入协调和整页快照;对应新模块要求主程序至少 v0.5.1,旧包不覆盖。见集成方案与复核。

后台操作丢弃取消/解锁/目标改变后的迟到显示,停用模块不影响其它游戏锁定,再次筛选全部读取失败保留旧结果。同一保存条目的刷新、手改和周期锁定按顺序执行,过期模块页面不能报告错误或保存字段,刷新核对实际进程启动身份。历史本地记录见后台边界和字段顺序与页面有效期。

重复条目、快捷入口、扫描写入和模块页面按实际目标协调;冲突锁定暂停提示。三个新模块接入 Host API 8 桥接;旧 API 6/7 页面包仍可加载,但未接入协调的模块字段锁定暂停。见原设计与验收。

停用模块或无法访问进程时仍可解除已有锁定;新模块页面及旧式宿主页面使用快照丢弃协调写入期间的旧数据/错误,停用后不再回填,不自动重试。快照不保证游戏自然变化或未知原生地址与语义字段之间的事务一致性。见原方案与验收。

主要功能

  • 连接本机正在运行的 Windows 进程;Electron/NW.js、Unity 等多进程游戏可任选同一游戏实例中的一个进程,应用会自动归组并把扫描与专属修改转到实际数据进程。进程列表只显示标题、进程名和 PID,不把内部“主进程/游戏数据”等路由角色交给用户判断。

  • 精确扫描 4 Bytes、8 Bytes、Float 和 Double。

  • 数值类型可选择“所有类型”,一次检查全部基础数值表示。

  • 可选择“直接数值”“按比例存储”或“所有套路”;比例参数不会被拆成大量重复套路。

  • 按“精确值、已改变、未改变、增加、减少”继续过滤。

  • 首次扫描会完整保留所有候选,不会因结果过多而提前截断;大量候选使用程序目录下的临时扫描文件继续过滤,界面列表最多显示前 1,000 条并始终显示后台候选总数。

  • 扫描区域在读取期间变化时,大块读取失败会有限地按页检查仍可读部分,不改内存保护、不跨不可读页拼接数值;异常枚举或全部读取失败明确报错,不冒充成功的零结果。见扫描边界验证记录。

  • 支持撤销上一次过滤;候选少于 100 个时实时刷新当前值,并保留“首次”和“上一次”数值。

  • 扫描结果支持 Ctrl、Shift 和 Ctrl+A 标准多选,可把所选地址批量修改为同一个界面值;保存字段仍要求单选。

  • 双击候选地址即可先试改,不需要先保存字段。

  • 玩家在保存字段时手动填写备注名称;程序不会猜测字段含义。

  • 左侧游戏库支持搜索、清空搜索、置顶、锁定、重命名、连接、断开连接和从库移出;搜索无结果不会清空右侧正在使用的游戏。顶部“连接”连接进程下拉框当前选择的进程,编辑区“连接/断开”只操作右侧当前游戏库条目,两组操作不会串用选择目标。若条目已安装专属模块,“从库移出”会同时卸载模块;仍在展示该游戏时保留可继续通用扫描的临时连接,移出期间已切换到另一个游戏时则安全断开原游戏,不改当前游戏。

  • 游戏库条目单行显示头像、名称和右侧固定位置的置顶、锁定、本地模块已加载、已连接四个主题图标;前三个图形缩小,锁定略小,未生效的图标留空,连接图标稍大,图标和完整名称可悬停查看含义,头像没有悬停提示。列表不再显示版本数和字段数,但数据仍保留。模块加载标记不代表当前游戏构建已兼容;已安装但加载失败或等待重启时不显示。可按连接状态、名称或本地模块排序,并可同时连接多个游戏,在左侧切换各自的扫描、加速和锁定会话。游戏主进程退出或 PID 被复用时会在约一秒内自动断开并同步状态;多进程游戏的数据进程单独重建时会自动重新定位,并清空已经失效的临时扫描结果。

  • 置顶或锁定的游戏条目不能删除;锁定不影响扫描、修改数值、保存字段或其他正常功能。

  • 根据游戏平台 Build ID、游戏自身声明版本、引擎文件版本、架构以及 EXE/关键运行时文件的组合指纹保存独立版本档案;下拉框用“当前运行版本/历史版本 + 日期 + 字段数”帮助选择,技术身份彼此分栏展示。

  • 当前构建变化时不会套用旧的原始内存地址;构建仍受支持的游戏专属字段会按语义键迁移到新版本档案。

  • 首先按名称识别游戏,支持名称、窗口标题、进程名及模块声明的中英文别名;同名更新、换路径或换平台不因哈希变化要求重新关联。多个同名运行实例仍选择实际进程。构建指纹只用于版本记录和隔离旧地址,不决定游戏归属。连接会话保留专属页面、输入及选中内容页,切换游戏不重建页面;同一模块读取串行等待,断开后排队请求取消。见原设计与验收。

  • 已识别引擎/已有游戏窗口不误转向 Web 辅助程序;多实例可显式选择;模块包哈希贯通兼容选择;连接保存失败恢复完整版本状态;昂贵模块校验在后台执行。本地完整测试包可预装未发布模块,但不替换官方同版本资产。见详细方案与检查记录。

  • 静态地址优先保存为“模块 + 偏移”;动态地址保存为本次进程会话地址,并在重启后要求重新定位。

  • 所有档案只保存在本机,写入时自动保留上一份配置备份。

  • 支持浅色、深色、护眼墨绿、暖砂纸张和雾蓝灰五套完整主题;标签页、列表、输入弹框、确认弹框、错误弹框和标题栏均跟随当前主题,并在进程列表显示程序图标。

  • “本游专属”支持从独立的 GameValueEditor-Modules 模块中心检查、校验、按需安装、更新、手动回退和卸载游戏专属模块;未入库但已连接的游戏也能“查新”,安装成功后会自动生成正常游戏库条目。模块从运行时影子副本加载,正式安装目录可安全卸载;若外部程序仍短暂占用文件,会记录并在下次启动继续清理。Host API 6 及以上模块被更新或回退后会停用,并等待用户重启主程序启用目标版本,其他模块不会跟随重载。

  • “本游专属”操作栏按“回退、查新、更新/下载、卸载、诊断、献者”排列,按钮间距 8 DIP。右下角按“回退、查新、更新、官网”固定显示,不能更新时更新置灰,按钮间距加大为 12 DIP;状态及版本文字不挤动按钮。

  • “兼容性诊断”会汇总宿主/API 版本、当前构建指纹、模块安装与目录状态、加载错误、页面支持情况,以及模块提供的只读扩展检查。报告可一键复制,并自动隐藏本机路径、用户名、PID、内存地址和存档内容。

  • 模块顶部可查看整个游戏专属模块的贡献者;GitHub 名称可打开个人主页,并可按名称、首次贡献日期或最新贡献日期排序。贡献者不按具体编辑功能分级,也不显示贡献次数或排名。

  • “快捷入口”支持直接编辑备注名称、分组和当前值,并可锁定目标值持续保持。

  • 分组输入框支持直接输入、按文字筛选已有分组,或保留新文字创建分组。

  • 官方模块及其具体能力、支持构建和验证记录统一维护在 GameValueEditor-Modules;主程序不包含任何游戏 ID、页面清单或游戏专属读写逻辑。

  • 顶部倍速栏支持把当前连接的 x64 单机游戏设置为 0.01–100.00 倍,最多两位小数;小于 1 可减速,大于 1 可加速,应用新倍数和回正时保持游戏时钟连续。倍速按钮在每次操作后共同冷却至少 2 秒,无法识别计时入口时会安全失败。

  • 模块和应用更新下载均显示百分比、已下载容量与总容量;连续 60 秒没有数据或总时间超过 20 分钟会自动停止并恢复为可重试状态,不会长期卡在“下载中”。

  • 模块检查和下载绑定发起时的游戏、版本与连接;切换页面后旧响应不会开启新页面的安装/回退按钮。等待重启的模块由加载器持续停用,卸载其他模块或同进程重装都不能绕过此限制。

  • 右下角可检查 GitHub 正式版更新或选择服务器上最近一个更低版本手动回退;检查动作永不下载或安装,回退也不会自动触发。主程序回退前会核对全部已安装模块,若目标主程序不兼容某个模块,会阻止回退并提示先手动回退该模块。更新包校验后由用户决定立即重启安装,或留到下次启动自动安装。独立更新器会等待短暂文件占用,并在持续失败时恢复本次事务替换前的文件;这属于安装失败恢复,不是自动版本回退。

  • 主程序和每个游戏模块的版本号互不绑定,分别按 +0.0.1 递增并在个位到 10 时进位;兼容性由模块版本声明的 Host API 与主程序版本范围明确建立。GitHub 自动只保留主程序最近 3 个正式包,以及每个模块各自最近 3 个正式包,旧 Release 资产删除后仍保留 Git 标签和源码历史。

  • 安装失败恢复若也遇文件锁,完整备份和恢复记录会保留,不启动混合版本、不允许新更新;释放占用后可显式重试,见恢复说明。这属于安装失败恢复,不是自动版本回退。

  • 切换游戏后,旧入库和扫描结果不会覆盖新游戏;会话仍有效的模块只读刷新只回填自己的缓存页面,隐藏页面不能写入、弹框或覆盖全局状态。断开、进程重建或模块替换后页面失效并释放。扫描候选绑定进程启动实例和扫描代。整数编码保持 Int64 精度,拒绝越界、无法整除的比例目标及 NaN/Infinity。

  • 游戏库按调用时快照串行保存,缺失或损坏的主文件可使用有效备份;双份损坏、未来数据格式会明确拒绝覆盖。更新替换前再次核对当前安装模块;中断事务在正常界面加载前被拦截。

  • v0.5.0 新增模块资料保护、可恢复安装事务和同数据目录单实例:损坏登记不再当作空记录覆盖;模块缺文件会说明具体原因;未完成安装恢复到操作前状态,成功安装不自动降级。主程序启动先取得独占租约,避免多开覆盖资料。详见设计与验收记录。

  • v0.5.0 补充三项安全边界:游戏库缺少必要列表时按损坏处理,不默认为空库;通用写入区分写入失败、回读失败、不一致和一致,不用目标值冒充实际值;错误日志限量轮换并安全兜底。回读一致不代表游戏效果已生效。不确定的手动写入会暂停该字段原有数值锁定并说明原因。详见方案与验收记录。

  • v0.5.0 修复游戏身份和会话边界:同名进程不再自动合并档案;移出 A 期间切到 B,不改 B 的会话,A 安全回正并断开;仍在展示 A 时保留完整临时连接。关闭时先安全回正,再提交退出;准备失败保留操作和连接监测,允许重试,不自动重新加速。详见详细方案与三遍检查。

  • 右下角“官网”按钮可打开本项目 GitHub 主页,并带有两秒防重复点击冷却。

下载与运行

在 GitHub Releases 下载正式版压缩包,或使用源码生成本地测试包,解压后运行:

GameValueEditor.exe

发布包为 Windows x64 自包含版本,不要求用户另行安装 .NET。某些高权限游戏需要以管理员身份运行本工具才能访问。

基本使用

  1. 启动离线单机游戏。
  2. 在顶部选择游戏进程并点击“连接”。
  3. 输入游戏当前显示的数值,选择数值类型和搜索套路,点击“首次扫描”。
  4. 回到游戏改变数值。
  5. 在工具中选择“精确值、增加了、减少了”等条件,点击“再次扫描”。
  6. 确认正确地址后,先点击“保存入库”。
  7. 选中扫描结果,点击“保存选中字段”。
  8. 玩家手动输入名称,例如“洞府残核”;名称不由程序自动推导。

游戏版本规则

同一个游戏可以保存多个版本档案。普通游戏使用 EXE 的 SHA-256;Unity IL2CPP 游戏还会组合 GameAssembly.dll 与 global-metadata.dat 的 SHA-256。游戏平台 Build ID、游戏自身声明版本和引擎文件版本会分开显示,方便玩家辨认,但不会代替安全构建指纹。游戏换安装目录或 Steam 库后,重新连接会刷新路径与平台信息,不会因此失去游戏库身份。

当前实现先按规范化游戏原始名称及明确别名关联游戏库条目,文件指纹、安装路径和模块 Supports 不再否决同名游戏。只有多个条目或多个真实运行实例无法唯一选择时才需要选择实际条目/进程;不会因为小更新就要求用户重新关联。通用运行程序名(如 Electron、Game)本身不是游戏名称,使用实际游戏窗口/产品名或模块别名。Steam 详情页、浏览器等公共程序的同名标题不是游戏实例,玩家可编辑的库备注不作身份凭据。

游戏
├─ 版本 A(组合构建指纹 A)
│  ├─ 玩家命名字段 1
│  └─ 玩家命名字段 2
└─ 版本 B(组合构建指纹 B)
   └─ 玩家命名字段 1

数据位置

应用采用便携式数据目录。本地游戏库保存在程序所在文件夹的:

data\library.json

备份文件:

data\library.backup.json

崩溃日志(如有):

data\crash.log

日志连同 crash.1.log、crash.2.log 最多保留三份,每份上限 1 MiB;超长详情会注明截断。正常目录不可写时,尝试 %TEMP%\GameValueEditor\crash-logs\<目录身份>;两处都失败仍提示原错误,不会声称日志已保存。日志只在本机留存,不自动上传。

游戏图标、可选模块和待安装更新分别保存在 data\icons、data\modules 和 data\updates。应用更新不会覆盖整个 data 目录。

从源码构建

要求:Windows 10/11 和 .NET 8 SDK 或更高版本。

dotnet build GameValueEditor.sln -c Release
dotnet run --project tests/GameValueEditor.SmokeTests/GameValueEditor.SmokeTests.csproj -c Release

生成自包含发布包:

./scripts/publish.ps1

输出位于 dist/。

正式打包不会提前删旧包,候选包启动/更新器测试通过后才落盘,同版本已有包不可覆盖。仅验证未提交的本地改动时,使用 ./scripts/build-local-review-package.ps1,生成独立的未发布 review 包,不改版本或正式资产。

验证最终 ZIP 中的程序能够正常启动:

./scripts/test-package-startup.ps1 -ArchivePath ./dist/GameValueEditor-v0.5.5-win-x64.zip

官方游戏模块已迁移到独立仓库。在相邻目录克隆模块中心后,可按游戏目录名构建任意模块:

cd ../GameValueEditor-Modules
./scripts/Publish-GameModule.ps1 -Game fzzml -SkipCatalog

模块仓库已生成与目录大小/哈希一致的本地模块 ZIP 后,在主程序仓库根目录创建离线包(PowerShell 7.4+)。先运行 Release 构建准备模块页面核验器;工具读取已验证的标准主程序 ZIP,自动选择每个模块与宿主兼容的最新保留版本,不隐式下载:

./scripts/build-complete-offline-bundle.ps1
# 指定模块子集(输出名称为 selected-offline):
./scripts/build-complete-offline-bundle.ps1 -ModuleIds game.fzzml,game.worldapart
# 验证已有完整包,包括实际模块加载/页面创建与隔离启动:
./scripts/build-complete-offline-bundle.ps1 -VerifyOnly
# 离线工具回归测试(无需下载、构建或发布):
./scripts/test-offline-bundle.ps1

模块预装至真实的 data/modules/packages/{id}/{version},不包含个人数据。内容一致的已有包自动核验复用;不同内容默认拒绝覆盖,需指定另一个 OutputPath 或显式 -Force,新包校验和启动成功后才替换。旧 create-local-complete-package.ps1 命令仍可用,但仅转交同一实现。完整/子集离线包只供本地或 QQ 分发,不上传 GitHub;详见离线打包设计与验收和本地发布流程。

核验记录位于 artifacts/offline-bundle-receipts/<SHA256>.json,应和包单独保留。VerifyOnly 将包的完整性与目录下是否最新分别报告;有更新不代表旧包损坏,目录不可用只让新旧状态变为未知。记录存在时无需原始模块 ZIP;无记录则需要包内对应版本的原输入证据。下载支持用户取消、平均速率和等待提示,原有超时保护保持不变,校验/安装阶段不可取消。

本地历史生成包统一使用维护工具清理,不需手工挑选版本:

./scripts/clean-local-artifacts.ps1       # 默认只预览,绝不删除
./scripts/clean-local-artifacts.ps1 -Apply -WhatIf
./scripts/clean-local-artifacts.ps1 -Apply # 显式删除预览中的旧生成 ZIP,永久删除
# 也清理模块仓库时必须明确指定范围:
./scripts/clean-local-artifacts.ps1 -ModuleRepository ../GameValueEditor-Modules -IncludeModuleArchives
./scripts/test-local-artifact-cleanup.ps1
# 模块核验负向集成测试默认选最新完整包,也可显式指定 BundlePath:
./scripts/test-offline-module-verifier.ps1

工具保护发布索引中的标准主程序包(通常 3 版),离线包保留 3 个不同内容并确保保留最新完整包;重复内容仅占一个名额。可选模块范围保护目录中的各模块保留快照。只枚举指定 dist 根目录及两个已知旧工具目录,不递归遍历任意目录;个人数据、非 ZIP、核验记录、未知包和待发布版本不删。删除前重新核对方案及文件内容,-Apply 不会绕过操作系统/执行环境策略,也不会自动挂入打包发布流程。详见维护工具与识别修复。

完整的正式版验证使用本地脚本执行,不依赖 GitHub Actions:

./scripts/verify-release.ps1 -Version 0.5.5

该脚本依次执行 Release 构建、烟雾测试、自包含打包、发布包启动验证和更新器回滚验证。验证完成后使用 scripts/publish-github-release.ps1 推送标签、创建或恢复 GitHub Release、显示资产上传进度并校验线上 SHA-256;脚本支持显式代理、环境变量代理和 Windows 系统代理,具体见 本地发布流程。

搜索套路与专属适配器

通用搜索套路保存“如何编码界面数值”,例如直接存储或按可配置倍数存储。玩家确认并保存字段后,应用会把套路和参数保存到对应游戏版本。

如果游戏的真实数值只能通过其运行时对象和自身保存函数修改,则使用可选游戏模块。游戏归属先按名称识别,模块再检查自身功能所需的运行时结构;模块不支持某项操作不影响认出同一个游戏。Last Epoch 的本地修改不再以历史文件哈希白名单停用整个模块,而是按当前 IL2CPP 类/字段/方法重新定位,个别可选功能变化只影响该功能。其它模块的构建要求由模块自行维护,短函数序言不能证明固定布局兼容。页面注册与各页面的运行支持分别报告。游戏专属模块代表整个游戏,并自行声明页面、稳定编辑器 ID、字段生命周期和操作能力;页面结构、分组和交互由模块自由实现,主程序只提供导航容器、统一主题资源、控件样式、间距、弹框、生命周期和保存字段服务。

扩展新游戏前请阅读 新游戏搜索套路与专属模块扩展指南;模块实现细则和脚手架位于模块仓库。

v0.5.4:库条目的名称是用户备注,不再作为游戏归属依据;实际采集的原始识别名称、产品/进程名称与明确模块别名独立保存,重命名不影响识别。Steam 详情页、浏览器等公共窗口的同名标题不会冒充游戏进程。指纹只区分历史构建数据,不决定同名小更新是否属于同一游戏。

当前限制

  • 当前版本仅支持 Windows x64 主程序。
  • 不提供驱动、反反作弊、隐藏进程或绕过保护功能。
  • 通用扫描得到的动态堆地址在游戏重启或更新后通常需要重新扫描;专属适配器可按当前运行时的语义结构重新定位,不复用历史地址。
  • 不支持服务器权威的在线游戏数值。
  • 游戏加速依赖目标进程导入的常见 Windows 计时 API;部分自定义计时器或受保护程序可能不支持。
  • 修改异常数值可能损坏游戏进度,建议先备份存档。

使用范围

本项目仅面向离线单机游戏、个人研究、调试和可访问性用途。请遵守游戏许可协议和当地法律,不要用于多人在线游戏、破坏公平性或规避安全机制。

参与开发

参见 CONTRIBUTING.md 和 架构说明。

License

MIT

About

A Windows memory value editor for offline single-player games, with versioned game profiles and player-named saved fields.

Resources

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages