返回研究记录
本页目录

安装包导入与拆包记录

2026年10月24日:资料站手机优先适配

用户改为主要在手机浏览并授权完整更新、发布资料站。保留原暖纸与游戏图像,900px及以下用底部纯图标导航、safe-area与全宽单列;电脑继续分栏。房间分类与检索吸顶,手机只保留等级直接输入,效果和配方按行展示;角色与敌人使用名单→详情流程,返回与跨页切换保留查询、筛选和位置。手机筛选调用原生选择器,输入至少16px;角色三维横排,审讯图标两排且可点按显示名称与档位;敌人首领查询在名单中按需展开。没有重加重复标题、版本标签、操作教程、输入光圈或装饰动画。

三个阅读数据payload与上一版逐项一致,房间215、角色222、敌人90、首领配置1000条。生成模板、共享控件、站点样式与静态导出同步更新,保留离线HTML。新增tools/verify_mobile_site.mjs,覆盖模拟触摸、搜索、筛选、配方跳转、天数与随行查询、深链接、返回和导航记忆;320/390/430px、844px横屏、768px与1280/1440px页面均无横向溢出。电脑原角色与敌人回归检查通过。验证是Chromium视口与合成触摸,尚非iOS/Android实机测试。修改前源、截图、检查报告与发布结果在analysis/imported-20261023/mobile-upgrade/。

2026年10月24日:发布Cloudflare资料站并提交DNS托管迁移

用户指定将资料站发布到dungeonmaker.guixu.pro,随后要求把整个guixu.pro的DNS解析迁到Cloudflare。使用原短剧站同一账号,但创建独立Pages项目guixu-dungeonmaker,生产分支main。当前部署ID前缀c970adb0,备用入口https://guixu-dungeonmaker.pages.dev;关联了正式域名,HTTPS验证与证书状态仍待DNS切换传播后确认。

新增tools/export_docs_site.py,将本地文档服务的现有三个资料页、研究记录及说明静态导出到docs/站点/。保留三标签窄栏、图片内嵌、交互脚本和详情hash;修正离线HTML文件名链接为线上路由,添加旧地址重定向、404及公共样式与图标许可证。不上传APK、拆包目录、签名密钥、存档或重复源图片。16个部署文件共6352649字节;JavaScript语法及内部链接通过。线上12份页面/样式/许可正文已逐一读回,与本地SHA256一致。Chrome核对敌人搜索、三标签切换、222位角色和已加载图片无损坏。

发布工具为tools/deploy_docs_site.sh,线上校验工具为tools/verify_docs_site.py,部署说明为docs/网站部署说明.md。继续复用现有Wrangler登录,OAuth凭据只在其加密存储中保留,不写入仓库。没有修改短剧的Pages项目或应用后端。

DNS迁移前从GoDaddy导出8条区域记录,保存在analysis/imported-20261023/dns-migration/godaddy-before.zone。其中根A为WebsiteBuilder占位,额外通过原权威服务器解析并保留13.248.243.5与76.223.105.230;保留sd、www、_domainconnect及DMARC内容,NS/SOA由新托管方生成。Cloudflare免费区域f3cdc9b693fc66eec0e87e59a415441a中导入7条业务记录(含新dungeonmaker的CNAME),全部DNS only,原TTL保留。对ajay.ns.cloudflare.com直接查询已逐项返回预期值。

GoDaddy已保存自定义域名服务器ajay.ns.cloudflare.com、karsyn.ns.cloudflare.com,Cloudflare已触发检查。此记录写入时注册局和公共递归解析仍返回旧NS,故迁移处于已提交、等待外部传播状态,不能据此声称正式域名已完全可用。切换前DNSSEC未启用,没有关闭现有安全功能,也未执行付费域名注册转移。迁移截图、计划及逐项核验在上述analysis目录,后续以最终核验报告为准。

2026年10月24日:局内魔王与怪物升级经验固定,合并房间缓增并发布625版

用户要求魔王和普通怪物的升级需求不再随等级上涨,并明确授权编译发布。确认GC.AutoLevelUpMonster识别当前魔王及魔王类型后,仍进入与普通怪物相同的GC.CalcNeedExpMonster门槛循环;GC.LevelUpPlayerMonster实际扣费和PlayerMonsterData.get_fNewExpRate经验条也使用同一入口。局内初始内部等级为0,原门槛为(内部等级+40)×fMonNeedExpBonus。

新增并启用client/patches/fixed-unit-experience.json:仅将0x851b34的add x8,x19,#40改为mov x8,#40,使每级需求固定为trunc(float32(40×fMonNeedExpBonus))。减耗系数及原有取整保留;转生、超越、征服者等经验入口、升级属性成长、战斗奖励不变。没有读取或改写手机存档。

tools/verify_unit_experience.py直接执行该ARM64计算函数,覆盖9档内部等级、全部256种星级参数和8种需求系数,共18432例;确认等级不再影响需求、初始值和减耗保留、栈及保留寄存器保持。核查自动升级、实际扣除、经验条共用计算与元进度函数字节未变。补丁前启用清单、工具、文档、发布指针及原计算函数备份在analysis/imported-20261023/fixed-unit-experience/before/。

本次同时合入此前尚未发布的slow-linear-room-experience:房间经验为初始值×(显示等级+39)÷40,仍逐级平滑增长;单位固定经验与房间缓增分别计算。房间16024例指令模拟、卡包与继承检查继续通过。发布DungeonMaker-inherit-20261024-114447.apk,版本代码625,沿用624签名;NAS为UGREEN/APK/dungeonmaker/,更新日志及校验记录在更新日志/。与624比较,非签名payload只变Manifest版本代码与原生库中的两项经验规则。签名、对齐、全包内容、NAS读回SHA256核验通过,尚未实机游玩验证。

2026年10月24日:房间经验改为每40级增加一份初始值,暂不发布

按用户最新规则,房间经验倍率为 (40+X)/40,X解释为已升过的级数,即显示等级L减1;基础需求为 Exp×(L+39)/40,中间逐级平滑增加。无额外减耗时,战斗房在1/21/41/81级的升级需求为100/150/200/300,绝对者对应3200/4800/6400/9600。全局需求修正与原有float32运算、向零截断保留,因此非整数及浮点边界仍按游戏原有方式取整。

新增 client/patches/slow-linear-room-experience.json 并替换active清单中的旧linear-room-experience,历史旧补丁保留。原GC.CalcNeedExpRoom内0x857f50加载值改为常量2.5;0x857f6c的三条经验幂运算指令替换为内部等级加40、定点转浮点除16、再除2.5,得到 (X+40)/40。仅这16字节变化,不修改ExpPw配置、房间效果、继承或卡包全开规则。

验证工具兼容旧线性和新缓增两种指令,源码检查覆盖281条房间、19档等级、三种全局需求系数及指数参数独立变化,共16024例,确认倍率边界、原取整、寄存器及栈。合并全部生效补丁后再与本地624安装包的原生库逐字节比较,差异仅限新的经验指令,补丁无重叠;未读取玩家存档。旧启用清单、工具及目标指令备份、验证报告位于 analysis/imported-20261023/room-slow-linear-experience/。

用户明确要求先不发布。本次只完成本地补丁与指令模拟,没有编译、签名或上传新APK,也没有更新发布指针;NAS最新仍为624版,其中尚未包含这次经验规则。

2026年10月24日:全部卡包内容开满与计费修正,发布624版

用户改为要求所有卡牌全部解包、解锁,并明确不要排除卡包内的皮肤等条目。仍不恢复来源全开存档或悬浮菜单。以RebirthStorePack中Category=eMaseog、Lock=false的九个当前卡包为范围:原版、觉醒、高级、堕落、冒险、神话、征服者、古代词典及魔界/DLC卡包。按Detail的实际成员关联RebirthStore.Max,去除重复成员后共1206种卡牌,合计2774次抽取量,含90项卡包内勇者外观;卡包之外的付费皮肤包、挑战通关和剧情记录不额外写入。

新增 tools/build_pack_unlock_patch.py,从当前元数据默认值读取ValueKey数值,按所属卡包及最大次数生成98段紧凑清单。client/patches/all-card-packs-unlocked.json在GC.RefreshRebirthStoreFactor初始化后的0x88c100插入调用:先读已拥有数量,缺失时用GC.BuyRebirthStore(pack,0)确保卡包记录存在,再按差额调用GC.UnlockRebirthStoreItem(pack,item,false,false,false),完成后仅保存一次,继续原有卡包因子刷新。赠送过程不增加收费抽取计数,不扣魔石;实际解锁沿用原游戏接口。覆盖更新时只补缺失次数,不回退已有卡牌、不覆盖其他进度。

注入代码和只读清单位于原ELF首段结束后的零填充区0x1feda54,最终长1108字节;首个RX段的文件和内存尺寸相应扩展,仍在下一个段前,不移动原有段、不增加库长度。被替换的ADRP在返回前重放,原函数的参数、保留寄存器和栈保持。原始APK和展开目录保持不变,修改前原生库继续在构建before中备份。

tools/verify_pack_unlock.py执行实际ARM64赠送代码,原游戏API根据静态反汇编建模;覆盖空白、部分已有、全部已有及额外进度四类状态,各重复两次。确认首轮仅补足差额、第二轮不再赠送、不超Max、不访问范围外卡牌、不产生收费抽取、仅变更时保存一次,并验证原指令重放、寄存器和栈。这里没有运行Unity游戏,不能替代实机验证。清单、汇编、目标代码及验证在 analysis/imported-20261023/card-pack-unlock/。

最初生成623版后,继续检查发现GC.get_uConsMaseog并非按nBuyCnt扣费,而是按每个魔石卡包的Cost乘已拥有卡牌数量反算累计消费。因此即使赠送不增加收费抽取次数,623仍可能使余额变负。该版本未向用户交付链接,历史APK保留,NAS和本地更新日志已标为被624取代。

624额外在0x8534dc加入消费过滤,按同一1206种卡牌清单将其计费数量置0,清单之外的魔王主题皮肤等继续原有计费。指令模拟逐项覆盖全部RebirthStore条目及边界编号的0/1/17数量,共4596个用例,确认只豁免赠送清单;这同时避免后续加载时反算消费再次扣款。

最终 DungeonMaker-inherit-20261024-032136.apk,版本代码624,沿用维护签名发布到 UGREEN/APK/dungeonmaker/,日志和校验在 更新日志/。与622比较,共同非签名条目仅Manifest版本代码与libil2cpp.so不同;DEX、资源、继承和房间经验修改保持。签名、对齐、全部APK条目、继承、房间经验与卡包/计费指令模拟、ELF段边界以及NAS完整读回均通过。构建核验在 analysis/imported-20261023/build/20261024-032136/,尚待用户实机启动和查看卡包内容、魔石余额。

2026年10月24日:移除来源悬浮菜单与预置存档,发布622版

用户在确认来源包会自动应用无限权能后,改为要求去掉悬浮窗和原始预置存档,从头体验游戏;同时表示自行卸载后重新安装。新增并启用 client/patches/remove-source-menu-and-save.json,保留本项目怪物继承、房间线性经验和重签启动修复。没有读取或清除设备存档,也没有加入启动时清档逻辑。

取消UnityPlayerActivity.onCreate中的OGM启动、SavesRestoring导入和SmaliHelper弹窗调用,连同此前取消的旧签名检查共四处固定长度NOP,保留原Unity初始化。删除三个来源附加DEX、libOGM.so、assets/space.txt和两份弹窗文字资源;被移除内容在构建目录before/removed中备份。移除SYSTEM_ALERT_WINDOW权限及OGM服务,替换fullBackupContent为allowBackup=false,并同步二进制Manifest资源编号,关闭应用的标准系统备份恢复。修改工具为 tools/strip_source_mod.py;未改变只读来源APK。

新包 DungeonMaker-inherit-20261024-025113.apk,版本代码622,沿用621版维护签名,已发布到 UGREEN/APK/dungeonmaker/;对应更新日志、SHA256和构建报告仍在 更新日志/。与621比较,删除项恰为七项,其余共同非签名条目仅Manifest和classes.dex不同,玩法原生库及单位数据完全一致。独立aapt核查allowBackup真实资源ID为0x01010280且值为false;DEX反汇编核查四个注入入口已取消、Unity初始化保留。继承、经验指令模拟、DEX内部校验、签名、对齐、ZIP条目及NAS完整读回通过,验证记录位于 analysis/imported-20261023/build/20261024-025113/。

本次移除已定位的注入菜单、自动修改和存档导入,不据此宣称恢复为官方原版:来源配置本身可能已有其他修改。新包尚未实机启动验证;用户卸载重装后可核对空白进度及权能消耗。

2026年10月24日:核查来源包的全开与无限权能

用户反馈621版可启动,但图鉴、图片、难度等均已解锁,太古难度开局魔王权能显示消耗0。未新增玩法修改。静态核查并在隔离ARM64指令模拟中解出原libOGM.so注册的getFeatureList四条原始菜单文本:折相思原创/加入我们、解锁皮肤、无限权能、无限魔石。模拟仅替代C++初始化锁与atexit,不启动游戏或原生注入线程。菜单中的Category是原框架展示类型,不据此虚构为可独立关闭的开关。

继续核查用户未手动开启的情况:libOGM.so的初始化函数0x6ebe0创建入口为0x6d69c的工作线程;该线程在0x6ded4直接调用0x70498应用补丁对象0xdd6f0,与Preferences.Changes中编号2的路径0x6eaf0使用同一个补丁对象。编号2原始标签为无限权能,Java菜单构造器将Category仅生成说明View,不生成Toggle。因此该来源包会在加载后自动应用无限权能,不要求用户手动勾选;不是普通菜单开关的默认值问题。本轮仅核查,没有修改此行为。

来源APK还包含assets/space.txt,实际是ZIP,内有约981KB的shared_prefs/com.GameCoaster.DungeonMaker.v2.playerprefs.xml;启动时的SavesRestoring.DoSmth调用SmartDataRestoreForYou。621版按用户要求保留来源菜单与存档恢复入口,libOGM.so及预置存档与来源逐字节一致。全开状态很可能来自预置存档和来源修改,尚未读取设备存档或解密核对具体解锁标记,不将每一项都断言为已查明来源。

正常有效权能的GC.GetPowerCost(0x871b84)最后调用Math.Max(1,计算值),PowerElt.InitView显示与pageDefence.GetBattlePowerCost都引用该路径;0仅有无效权能eNone的特例。该函数在621版与来源包一致。因此所有有效权能均为0不符合这条正常计费逻辑,与原菜单明确宣称的无限权能一致;未复现运行时钩子。GC.IsMawangBeyond检查魔王对应解锁及可选转生等级>13要求,不由选择太古难度直接触发。资料保存在 analysis/imported-20261023/mod-baseline-audit/,含菜单文本、原生反汇编、来源资源校验与边界记录。

2026年10月24日:定位重签后的启动异常

用户实机反馈620版首次打开要求悬浮窗权限,授权后重新打开直接退出;另行确认来源APK在同一设备可打开。核查来源DEX确认,UnityPlayerActivity.onCreate在Unity初始化前有四个注入调用:OGM菜单启动、SavesRestoring、SmaliHelper弹窗,以及com.mycompany.myapp6.MainActivity.A(Context)。OGM菜单主动请求SYSTEM_ALERT_WINDOW,来源包本来就附带这一菜单;前两次发布保留了这些来源代码,发布前仅完成玩法和包完整性核验,遗漏了启动自检的兼容性。

MainActivity.A(Context)从混淆short数组解出硬编码证书MD5 d08870c84b1be72d7fa56aba3120c161,与来源证书恰好一致;本项目维护签名MD5为 f51e86e06e2b5f940f1ec638566cc312。该方法对实际证书作MD5并比较,不同则抛RuntimeException,异常处理再抛RuntimeException,发生在Activity.onCreate与UnityPlayer初始化之前。因此维护版在这条启动路径上必然不满足来源包自检。尚未收集设备崩溃堆栈,不据此排除其他运行时兼容性问题。

用户明确选择保留原菜单和修改项,只修复启动。新增 client/patches/resigned-startup-compat.json,仅将classes.dex偏移0x2aab0a处的6字节调用改为3条NOP;DEX长度、方法布局与其他代码保持,重算DEX SHA1和Adler32。原OGM、弹窗、存档恢复入口和悬浮窗权限均保留;原生玩法补丁不变。构建与验证工具新增DEX补丁支持,预检源字节及重叠并保留原DEX备份。

独立DEX反汇编确认旧签名检查调用已消失,原菜单和Unity初始化调用保留;更改范围限定为目标6字节与DEX头部校验字段。证据在 analysis/imported-20261023/startup-investigation/,含来源/维护证书对照、解混淆结果、启动片段、修改后反汇编及源验证记录。游戏运行仍需由实机确认。

修正版已构建并发布为 DungeonMaker-inherit-20261024-022014.apk,版本代码621,仍沿用620版维护签名;NAS路径为 UGREEN/APK/dungeonmaker/,更新说明和校验记录在 更新日志/。构建完成DEX校验、房间经验指令模拟、签名、16KiB对齐、ZIP全部条目读回和NAS完整SHA256核对。对比620版,除Manifest版本代码与classes.dex的单个启动调用及DEX校验字段外,所有payload相同,包括原MOD菜单的三个DEX、libOGM.so、全部玩法修改与资源。独立验证报告在 analysis/imported-20261023/build/20261024-022014/;未操作用户存档,尚未收到修正版的实机结果。

2026年10月24日:发布620版并简化安装包目录

用户重新授权编译并推送,同时要求安装包直接平铺、更新日志保留单独目录。将旧619版APK从 UGREEN/APK/dungeonmaker/APK/ 移至 UGREEN/APK/dungeonmaker/,迁移前后完整SHA256一致,删除已空的第二层APK目录;更新日志/ 保留原位。发布配置的nas_apk_subdirectory改为.,最新指针和发布说明同步;NAS一级APK总目录及另一游戏目录保持。迁移前配置、指针与核验记录在 analysis/imported-20261023/nas-layout-migration/ 下的flatten-apks记录中。

新包 DungeonMaker-inherit-20261024-021227.apk,版本代码620,版本名仍为1.11.24;直接发布到 UGREEN/APK/dungeonmaker/,更新说明、校验和构建报告位于同级 更新日志/。合入已准备的房间线性经验补丁,保留53种怪物继承标记与两条额外继承拦截补丁;书籍当前基线已全部每卷一次,本次不额外修改。

沿用619版同一签名。构建校验包括房间经验8437个指令模拟用例、签名、16KiB原生库对齐、全部ZIP条目完整性与非目标内容一致性、NAS完整读回SHA256。产物及修改前payload备份位于 analysis/imported-20261023/build/20261024-021227/,另有独立继承、房间经验与发布核验报告。未安装或操作游戏存档,尚未实机验证。

2026年10月24日:核查书籍最多阅读两次的要求

用户要求:原本一次读完的仍为一次,原本两次及超过两次的最多两次;继续暂不编译。当前基线Book表130条配置按分卷展开为272卷,各卷的Clear全部为1,MaxRead也全部为1。Book.bin与只读来源APK内对应Unity分片逐字节一致,不能把Clear列表中的三项、五项当作单卷需要三次、五次。

静态原生核查:加载器把分卷Clear值写入BookData.nClear(偏移0x18),并初始化nTotalReadCnt(0x2c);MaxRead写入nMaxRead(0x24),用于整卷完成次数。BData.GetMaxBookReadCnt(0x959820)返回Math.Max(1,nClear),实际读书推进与界面读取同一要求。因此本基线每卷均只需推进一次,按用户的最多两次规则实际应修改0卷,没有把一次书籍反而改为两次,也没有删除分卷或效果。若实机显示不同要求,需要核对实际安装包与本基线是否一致。

核查结果在 analysis/imported-20261023/book-reading-limit/verification.json,原生证据为 il2cpp/book-read-count-probes.txt、book-field-offsets.json 和既有 table-load-probes.txt。本次未新增生效补丁,原有继承和房间线性经验补丁保留;未构建、发布或操作存档,尚未实机验证。

2026年10月24日:准备线性房间升级经验补丁,暂不编译

按用户确认,房间升级经验由指数增长改为初始经验的1、2、3、4、5倍。统一计算入口 GC.CalcNeedExpRoom(RoomData, Int64) 位于 0x857eb8,编号入口 0x857fd0、界面显示和实际扣除最终使用同一计算。将 0x857f6c 起三条指令改为内部等级加1、转浮点、NOP,以显示等级替换原 Mathf.Pow(ExpPw, 内部等级) 的结果,保留各房间初始Exp、全局经验需求系数与原有float32乘法和向零截断。ExpPw同时参与部分效果成长,因此只解除其在经验公式中的作用,原字段和所有房间效果计算不改。

补丁为 client/patches/linear-room-experience.json,已加入active清单,与怪物继承补丁合用。构建工具支持多个原生补丁及变长指令片段,重叠或基线字节不符会中止;继承验证按构建报告的补丁清单核查,仍兼容已发布619版。

tools/verify_room_experience.py --source 在内存应用补丁,通过Unicorn执行实际ARM64计算函数;仅运行时类型数据和D68解码采用隔离桩,不运行游戏或读取存档。覆盖281条房间配置、10档等级(含99999)、三种全局需求系数及指数参数独立变化,共8437个用例;同时检查栈和保留寄存器。初始100对应100/200/300/400/500;绝对者对应3200/6400/9600/12800/16000。结果在 analysis/imported-20261023/room-linear-experience/room-experience-verification.json。

用户明确要求暂不编译,等待其他修改合并。本次未构建、签名或发布新APK,没有操作安装或游戏存档;最新已发布版本仍为619。这里只完成源补丁和指令模拟验证,尚未实机验证。

2026年10月24日:统一NAS一级APK目录

按用户纠正,将NAS根目录下的 dungeonmaker/ 和 noahfantasy/ 整体移入新建的 APK/ 一级目录;本项目现发布至 UGREEN/APK/dungeonmaker/APK/,Noah Fantasy发布至 UGREEN/APK/noahfantasy/releases/。两个项目的发布配置与最新版本指针已同步,原一级游戏目录不再保留。各游戏内部的历史版本和更新日志结构不变。

迁移前后逐项核对50个文件的路径、大小和修改时间,所有非APK文件的SHA256一致;13个APK通过同一共享盘内的目录重命名搬移,内容不重写。配置和最新指针的迁移前备份、文件清单及验证记录在 analysis/imported-20261023/nas-layout-migration/20261024-015850/。历史构建报告保留当时路径;来源包、下载原件及游戏存档不受本次目录调整影响。

2026年10月24日:继承修改包与NAS发布

按用户要求生成独立派生APK,版本代码619,文件DungeonMaker-inherit-20261024-015316.apk。53种原本不可继承的正编号普通怪物、少女怪物和堕落勇者,Inherit改为true,包含觉醒怪物、事件怪物及堕落女神。BData.IsInheritMonster另有事件和剧情模式提前否决,故将0x95b2a8、0x95b2cc两条条件分支改为NOP;保留剧情NPC排除、获取/解锁及禁用名单检查、继承格数。静态证据见analysis/imported-20261023/il2cpp/inherit-monster-probes.txt。

补丁放client/patches/all-monsters-inheritable.json,启用记录为active.json;构建和独立验证工具分别为tools/build_inheritable_apk.py、tools/verify_inheritable_apk.py。修改前payload备份在对应build/before中。独立读回核对全部223条正编号友方配置(含图鉴隐藏记录),仅53个继承字段变化,其他字段不变;原生差异仅两条指令。APK签名、16KiB原生库对齐、全部非签名条目及NAS完整读回SHA256通过,尚未实机验证。

NAS新增dungeonmaker/APK及dungeonmaker/更新日志,每次版本分开保存,不覆盖历史。NoahFantasy历史日志原本已在其releases/更新日志,保留原游戏归属。来源APK、展开目录、NAS和下载来源包均不修改。用户明确安装不由本任务处理,故未安装或操作存档。

本项目使用独立固定签名密钥,私钥和口令仅保存在本机analysis/signing,不上传NAS。来源包私钥不可用,因此首个修改版签名不同,不能视作可直接覆盖来源包;后续本项目版本保持包名与签名一致并递增版本代码。发布位置和数据保留条件见安装包发布与更新约定。本次构建、签名、条目验证及独立验证报告在analysis/imported-20261023/build/20261024-015316/。

2026年10月24日:敌方勇者与首领配置阅读页

新增敌人速查,文档站第三个图标入口为/enemies/。从当前基线Unit选取90种正编号、Hero=true且ShowDic=true的敌方勇者,使用原敌方StartSkill,不复用堕落后技能。复用docs/assets/heroes的90张透明idle01原图并内嵌,来源清单仍在analysis;排除Roguelike负编号和隐藏剧情单位。

按元数据字段完整读取BossBattle.bin的1,009行,1,000条常规正序配置进入阅读版。查询天数显示对应或下一场首领配置,可点击首领与随行并筛选名单,不承诺其他模式或局内条件下的实际出场一致。BData.GetHeroByGrade/GetHeroGradeMax/IsCorrectHeroGrade静态核查表明普通名单受星级池、首领进度、难度和模式过滤,不制作伪固定的逐日普通名单。

DicItem.InitHero在0xadacbc读取UnitData.byGrade(0x48)显示星级;ShowGrade(0x49)参与筛选且含特殊大值,不能用于显示星数。页面使用Grade+1。多数HPBase/AtkBase是通用值1,不当作实际面板;只保留StatRate生命和攻击倍率,斜杠双值分别处理。技能展开全部占位符,不预测天数、难度及局内强化后的最终属性。

工具为tools/build_enemy_reference.py、tools/enemy_reference/、tools/verify_enemy_reference.mjs;结构化数据与边界见analysis/imported-20261023/enemy-reference.json、enemy-reference-evidence.json。原生取证为il2cpp/enemy-selection-probes.txt、enemy-display-probe.txt。验证覆盖90敌方配置与图像、全部技能占位符、1,000条首领引用、搜索与空状态、分组和难度门槛、女神双倍率、首领/随行跳转、换天数同步名单、书签和tab恢复、固定控件、离线HTML及1440/1280/390布局,结果与截图在enemy-reference-qa/。独立复查发现的星级字段与名单同步问题已修正并复验;未改动APK或存档,尚未实机验证。

2026年10月23日:核对名称并建立工作区

用户语音输入的 dongermaker 对应已找到的 dungeonmaker1.11.21.apk。先核对来源和包内身份,再建立 /Users/wangsheng/dev/dungeonmaker,与 noahfantasy 平级;没有创建 dongermaker 目录。

项目只复制来源文件,未搬走或修改下载/NAS原件。导入 APK 设为只读,并在 project.json 登记来源和哈希。

静态拆包证据

tools/prepare_apk.py 逐项读取 ZIP,验证全部 CRC,拒绝重复路径、路径穿越与符号链接,保存每个文件的 SHA256;提取前后都核对基线哈希。Manifest 解码函数复用自相邻项目 tools/inspect_apk.py,没有复用该游戏的解密算法。

原始文件在 analysis/imported-20261023/unpacked/,条目清单为同目录上层的 inventory.json,摘要为 summary.json,Manifest 阅读稿为 AndroidManifest.xml。

当前边界与后续工作

本轮未执行游戏、读取玩家存档、解密资源、反编译游戏逻辑、修改玩法或构建安装包。尚未确认安装兼容性、资源是否齐全、已有第三方修改或任何具体数值行为。后续按用户指定的改造项定位 IL2CPP 逻辑与配置,建立工作副本及构建签名流程,备份存档后再验证。

2026年10月23日:勇者配置与技能资料提取

用户要求整理可俘虏勇者及堕落后属性、技能,随后明确只需要Markdown,不生成Excel。已按数字顺序拼合Unity资源分片,通过UnityPy 1.25.4读取sharedassets0的序列化对象。自编元数据读取器采用IL2CPP v24.2字段布局,提取Unit、Skill、Strings、Buff、TortureEffect、Keyword、Difficult、TortureTool及Event;各表均按实际元数据字段逐项读取,要求精确消费完整对象并记录原始对象哈希。

确认90个正编号堕落角色:普通26、特殊战斗/异世界10、精英25、传说24、女神5。前85个原勇者编号与拷问表85行逐项一致。另5位女神在本包有独立堕落事件链,第4章条件为精神归零并持有50000灵魂。负编号是roguelike相关变体,未作为新的可俘虏角色重复统计。

资料见可俘虏勇者与堕落后属性技能。基础生命/攻击/防御保留原配置口径,未当作等级、技能、StatRate与装备加成后的面板,AvgBase未当作速度。固有技能占位符关联中文状态名及当前技能参数。发现浪客中文触发几率与参数错配,静态ARM64核查Unit.ResetMemberVar将常量0.2写入fFallenSamuraiCritChance,倍率5与不死每层追加0.05另存字段。精英天使文案显示不死1,BuffID却为不死2,已显式注明差异。

新增工具:tools/inspect_metadata.py、extract_game_tables.py、native_probe.py、export_corrupted_heroes.py。派生证据分别位于analysis/imported-20261023/unity-joined/、unity-tables/、il2cpp/和corrupted-heroes.json。没有修改APK、玩法或存档,没有启动游戏,尚未实机战斗验证。

2026年10月23日:地格、房间与升级参数整理

按当前active_sample继续读取RoomKind(281行)、RoomComponent(34行)和RogueCardTrigger(237行),所有对象按元数据字段精确消费并记录哈希。整理出221条非Roguelike房间配置、60种Roguelike房间及其83项触发器;两种机制分别成文,避免把Roguelike的零值通用字段当成无效果。

静态ARM64核查确认:界面等级为内部等级加1;伤害及指定参数还受ExpPw和Grade参与的等级倍率影响,不能只用线性增长;该倍率函数调用的是Math.Min。BuffUpg按项赋值,缺少的尾项为0,并不把单个增长值广播给所有状态。死亡之雾因此只有不死每级增加1,不死愤怒保持1。休息室、剑和盾等文案/字段差异和冰河祭坛第五阶段漏字均显式保留。

新增tools/export_rooms.py、tools/export_room_native_evidence.py;结构化派生资料保存于analysis/imported-20261023/rooms-reference.json,原生证据保存在il2cpp/room-*.txt、room-field-offsets.json、room-native-evidence.json及table-load-probes.txt��数值样例是默认系数下的静态计算,不包含遗物、强化、深渊之力等外部修正;未启动游戏、未改动APK或存档,尚未实机验证。

阅读版改为HTML

根据用户反馈,原长篇参数文档转存analysis/imported-20261023/room-evidence-docs/,docs改以房间速查为入口。阅读版只显示图标、星级、布阵人数、简短效果和合成材料;可搜索、调整等级、点击材料或后续产物并返回。重复材料逐个展示,配方按“研究所+冥想+冥想→图书馆”横向排列。空房间、魔王房间不列入阅读版,并排除4条剧情祭坛,保留215条常规及60条Roguelike房间。

新增tools/export_room_html.py与tools/room_guide_template.html。房间图标从Unity Sprite直接提取,优先选择PackRoom图集,排除同名道具/其他界面图片;图像现保存于docs/assets/rooms/,提取清单保存于analysis/imported-20261023/room-image-extraction-report.json,HTML内嵌215张图像,可离线阅读。原生参数、未知字段与完整取证仍留在analysis,不混入玩家阅读正文。

2026年10月23日:勇者成长核查与桌面图鉴

用户继续要求查看每级成长和经验规则,并希望用电脑端HTML深入浏览及通过角色图片辨认。新增升级成长与经验公式核查,记录GC.LevelUpPlayerMonster、RefreshLevelUpList、CalcNeedExpMonster等原生函数与LevelUp配置的对应证据:普通魔物升级从当前权重池抽取一种成长,原始Grow字段不等于每级三维固定增长;同级角色在同一全局系数下使用相同经验门槛。成长书、技能数对池子的影响及浮点截断另列说明。

桌面勇者图鉴包含90个角色、360个原始Sprite,按Hero/FH编号和icon/idle01名称精确匹配,图像直接内嵌以支持单文件离线阅读。图鉴支持搜索、分组、前后形态、技能说明、三人比较、浏览历史、成长池切换与经验计算。基础三维、随机成长期望和实际战斗面板分别标明口径;经验默认系数1仅作示例,没有读取存档确认该系数。

可复现工具为tools/extract_hero_images.py、tools/build_hero_reference.py和tools/hero_reference/模板。图像来源、对象编号及哈希见unity-tables/hero-image-index.json;成长与经验原生反汇编证据见il2cpp/下experience-probes、levelup-rules-probe、levelup-pool-probe、monster-levelup-probe等文件。

tools/verify_hero_reference.mjs使用本机Chrome以file协议检查1440与1280桌面宽度,覆盖图片加载、搜索空状态、分组、比较增删与保存、成长概率、经验计算、输入校验和历史返回;通过且无JavaScript错误。截图和结果保存在analysis/imported-20261023/hero-reference-qa/。这些是阅读工具验证与APK静态证据,尚未实机验证游戏行为;APK和存档保持不变。

阅读版移除Roguelike

按用户要求移除Roguelike入口、60条相关展示数据及模式切换逻辑;页面直接浏览215条常规房间,搜索上移到标题旁。图标、等级切换、材料逐个展开、合成路线和返回导航保留。原始提取表与历史证据不变。

本地文档站与统一导航

新增tools/docs_service.py,将房间速查、角色图鉴和研究记录组织为本机HTML文档站,默认地址为http://127.0.0.1:8764/。打开直接进入房间页,左侧64像素窄栏切换“房间”和“角色”;成长、经验与比较保留在角色页内,研究记录放在左下角“说明”。页面切换记住各自的详情位置;原离线HTML继续保留。使用方式见[文档服务使用说明](文档服务使用说明.md)。

浏览器检查通过:215条房间、90位角色、重复材料逐个展示、等级与详情切换保留、1440/1280桌面宽度及390宽度房间页均正常,没有JavaScript错误。截图与检查结果位于analysis/imported-20261023/docs-service/qa/。本轮只调整阅读工具,未改变游戏行为或安装包。

文档资源目录规范化

按用户要求,先更新AGENTS.md:阅读HTML与长期文档资源属于docs,原始拆包、反汇编、提取清单、哈希和验证产物属于analysis;工具和模板属于tools,根目录不创建output或outputs。

勇者页面迁为勇者图鉴,360张勇者图片归入docs/assets/heroes/,231张已提取房间图片归入docs/assets/rooms/(当前房间阅读版使用其中215张)。站点CSS、导航SVG及来源和许可归入docs/assets/。房间提取清单保留为analysis/imported-20261023/room-image-extraction-report.json,其他原生取证与历史参数资料位置不变。

提取、生成、服务和验证脚本及入口链接同步改用规范路径。两份HTML继续内嵌图像以支持离线阅读,HTTP文档站继续使用/rooms/和/heroes/;旧HTTP路径仅跳转,不保留旧目录或符号链接。迁移文件的来源、目标和SHA256记录在analysis/imported-20261023/docs-service/resource-migration.json。

599个迁移文件的内容哈希逐一一致后,删除旧副本及根目录outputs;output原本不存在,迁移后两者均不存在。重新执行图片提取和HTML生成成功,勇者离线交互验证通过;删除旧目录后又检查两份HTML的575张内嵌图像解码、文档站导航、房间等级保留、成长经验计算、静态资源字节、旧HTTP跳转和资源路径边界,无浏览器错误。结果见同目录resource-migration-verification.json;迁移不改变图像、玩法或APK。

2026年10月24日:移除成长与经验交互页

用户已了解通用规则,要求删除“成长与经验”页面。移除勇者图鉴的该标签、详情快捷入口、随机抽签与经验计算逻辑及专用样式;生成数据不再嵌入LevelUp表。文档站首页和使用说明同步移除交互入口,旧/growth/地址及tab=growth书签回到角色图鉴。技术核查记录和原生取证保留,角色资料与并排比较不变。

重新生成HTML并更新验证工具,确认搜索、90角色图片、三人比较、键盘导航与旧书签回退正常,1440/1280桌面无横向溢出、无JavaScript错误。

2026年10月24日:角色审讯工具与档位图标

按用户要求将审讯工具参考加入现有角色详情,不增加独立页面。TortureEffect的85行各自将12种工具完整分配到Best、Nice、Normal、Bad、Fail、Immune六组,忽略eNone空占位;HeroID关联原勇者编号,不直接使用堕落编号。5位女神没有普通审讯配置,另显示事件途径。

ARM64静态核查:BData.GetTortureEffect(0x959944)从字段偏移0x40到0x18依次返回代码1到6,分别对应Immune到Best;GC.GetTortureDmgValue(0x88fef8)的跳表位于0x19d2794,代码1/2/3分别乘0.4/0.6/0.8,代码4不变,5乘1.5,6乘2。所有工具基础Value均为50,故不计其他加成的单次精神削减依次为20/30/40/50/75/100。Immune只是该最低档的配置名,不能当作零效果或免疫概率。GC.CalcTortureDmg还叠加审讯者技能及转生工具强化;阅读版明确只展示基础值,不预测实际用时或完整存档数值。

TortureTool.Refresh(0xc39820)将效果代码拼接到字面量tl_并读取原始档位图;未探明时读取tl_0。元数据字面量4619/4620与原生全局引用、metadata usage表对应一致,确认tl_6到tl_1分别对应200%到40%。提取12张工具图标及tl_0~tl_6共19张原图,保存于docs/assets/torture-tools/,阅读HTML只内嵌12张工具和6张已知档位图。图像优先使用PackUI图集,排除eHungry同名房间精灵。

复现工具为tools/export_torture_reference.py和tools/build_hero_reference.py;结构化数据为analysis/imported-20261023/torture-reference.json;原生反汇编为il2cpp/torture-reference-probes.txt,图片来源、对象编号和哈希为unity-tables/torture-tool-image-index.json。浏览器验证覆盖全部90角色、85×12项工具、空档位、女神例外、图标加载、详情快捷跳转及键盘焦点,延续原有搜索和比较功能。资料来自当前包静态核查,尚未实机审讯验证。

移除角色技术展开说明

按用户要求删除角色详情底部“角色编号、配置与数据差异”展开区及专用样式,保留图片、三维、技能、审讯工具与堕落方式。原配置、数据差异与静态取证仍由研究记录维护,不混入玩家详情正文。

简化角色切换与审讯入口

按用户要求移除角色详情中的“上一位/下一位”按钮及“查看审讯工具/堕落方式”快捷跳转,角色通过左侧列表切换,审讯内容通过向下滚动查看。“加入比较”和审讯内容保留;验证脚本同步改用左侧列表与滚动操作。

审讯参考压缩与列表黑底修正

用户要求只保留工具及下方对应的效果档位图标,压缩为单行。阅读版移除分档大表、推荐段落、倍率及精神削减展示,保留原配置顺序的12对图标;名称与档位仅作为悬停提示和无障碍标签。原生参数取证仍保留在analysis中。

核查发现原先使用的30×30头像资源是RGB纹理,alphaTexture为空,导出结果所有像素alpha=255;不是CSS添加黑色背景。列表改用同角色原始idle01透明精灵,180张前后形态帧均含透明像素,原PNG资源不做改色或重绘。构建只内嵌180张透明人物帧与18张工具/档位图,共198张,原低清缩略图仍保留在提取资源和来源清单中。验证覆盖12对图标单行排列、无可见名称和比例、90角色/女神例外及原有搜索、比较和键盘导航。

按后续反馈,审讯图标条去掉可见标题及快捷跳转文字;不适用普通工具的女神完全省略该区域,不显示空栏或解释文案。

移除角色比较功能

按用户要求删除“加入比较”按钮和并排比较页面,清理比较列表、localStorage读写、计数、增删交互及专用样式。角色区仅有图鉴,因此一并删除标签导航和空工具栏;角色书签简化为hero编号,旧tab参数被忽略,仍保留对应角色。同步更新服务入口、说明和验证工具。

效果档位图标另有独立的黑底影问题:tl_1~tl_6原PNG含大量RGB=0且alpha非零的阴影像素,先前头像调整没有解决这部分。页面现只对档位图标应用SVG颜色遮罩,保留原彩色符号并使黑影在浅色底上透明;原PNG及工具图标不改。对六档分别截取实际浏览器渲染,检查未残留暗黑像素,记录于hero-reference-qa/effect-shadow-verification.json。

移除角色页顶部标题栏

按用户要求删除“勇者与堕落”顶部标题栏及其专用样式,离线HTML和文档站均改为角色列表、详情直接从顶部开始,使用完整视口高度;保留选中角色名称和左侧站点导航。

2026年10月24日:补全怪物分类与获取关系

角色图鉴新增132种正编号、ShowDic=true的怪物,保留90位堕落勇者,总计222个角色。隐藏编号21为石像鬼少女重复配置,不新增玩家条目;负编号Roguelike变体和魔王不混入本轮名单。

分类是阅读用的获取途径索引,不假称为游戏内部互斥类型:基础71种、具有配方的合成44种、明确事件命令或召唤书可获得18种、觉醒/精灵进阶35种。同一怪物可进入多个筛选;其中黑骑士少女既属基础怪物,也能在骑士之墓获得;五位精灵君主既是进化终点,也通过第二章契约事件获取。主展示分组为基础71、普通合成14、初始事件12、进化35,四组并集132。

提取器新增Book、RebirthStore、RebirthStorePack、Egg表,均按元数据字段读取并完整消费对象。合成材料来自Unit.Recipe,重复材料按原数组保留;20位觉醒怪物通过名称、原技能及配方交叉关联原形态。五系精灵按种子→精灵→大精灵→君主关联,前两阶段使用配方,最后阶段以事件的怪物和房间消耗验证。

事件获取通过Event的eGainSpecificMonster及eGainSpecificBook逐项关联;召唤书通过Book.V1指向怪物。原生GC.ReadBook在0x88dd1c~0x88dd74判定BookKey 60~63,将BookData.V1转整数后调用GetNewPlayerMonsterData;元数据常量对应凝聚灵魂的召唤书、未知的暗号、火山召唤书、雷电雕文召唤书。记录事件选项路径、开启条件、俘虏/灵魂/怪物/房间消耗;次元门路径标明存在随机分支。精灵配方的契约解锁另从eGainMonsterRecipe关联。数据只说明已查出的确定途径,不声称任意难度必定触发。

新增tools/export_monster_reference.py、extract_monster_images.py;结构化资料为analysis/imported-20261023/monsters-reference.json,132张原始idle01图片写入docs/assets/monsters/,精确名称、来源对象、尺寸及SHA256见unity-tables/monster-image-index.json。原生证据在il2cpp/monster-acquisition-probes.txt和monster-acquisition-evidence.json。补齐技能文案中的HEAL、REPEAT、BV3替换;未修改游戏逻辑。

角色页沿用既有简洁布局,加入类别筛选、材料/进化跳转与事件路径,材料跳转后浏览器返回可恢复原筛选。勇者双形态图、旧审讯图标及此前删除项的范围保持。图鉴仍为单文件离线HTML,330张原图内嵌;不使用output或outputs目录。

验证通过:222个角色的图片数量、技能数量和审讯适用范围;330张内嵌图像离线解码;132张新增PNG的哈希与透明通道;四类筛选及重叠计数;配方材料、觉醒本体、两条灵魂之泉途径、精灵君主的房间消耗链接;浏览器返回恢复筛选;1440/1280桌面与原有键盘选择。在线文档站再次确认角色/房间切换、PNG资源服务及此前删除的界面未重现,无浏览器错误。结果为hero-reference-qa/verification.json和monster-live-verification.json;图像和规则均属静态提取,尚未实机验证获取过程。