Repository navigation
Releases: Ezeny1337/NextDumper
Releases · Ezeny1337/NextDumper
Release list
NextDumper v0.1.4
Full Changelog: v0.1.3...v0.1.4
🚀 Release Notes / 更新日志
🌟 English
⚙️ Analyzer & Function Boundary Recovery
- Unwind-table function boundaries: Added
EhFrameIndex, which locatesPT_GNU_EH_FRAMEfrom the in-memory ELF program headers (ELF32/ELF64) and decodes the standard sorted.eh_frame_hdrbinary-search table. Function bounds now come from exact[start, next_start)entries instead of heuristic scanning whenever the table is available. - Bounded on-demand reads: Table entries are read lazily during O(log n) lookups; the full table is never allocated, and no
libdwarf/libunwinddependency is introduced. - Zero-regression fallback:
FunctionBoundary::Find()keeps its existing signature and silently falls back to the instruction-scan heuristic when the table is absent, uses an unsupported encoding, does not cover the address, or targets the final entry (which has no successor). The index is built once per analysis and shared through anchored resolution, independent of instruction width.
🧩 Layout Discovery & Game Compatibility
- Vendor block-size variants: Name-pool discovery now probes
blocksBit16 (0x10), 14 (0x0e), and 18 (0x12), trying the UE standard value first. Only the first passing candidate per parameter combination is emitted, preventing duplicate layouts from being rejected as ambiguous downstream.NamePoolLayoutvalidation now accepts block-size bits up to 18. - Read-only XOR key extension point:
IGameProfilenow exposesRodataXorKey()with a default of no obfuscation. A registered but inertTencentAceProfileexample demonstrates the XOR-0xE2 declaration and never matches by design. The hook is not yet consumed by runtime callers and is reserved for offline analysis/decode-plan integration.
⚡ Performance & Caching
- FName resolution cache:
ObjectModelReadercaches resolved name strings by FName field address for the lifetime of the session.Name,FullName,ClassName, and Outer-chain traversal reuse the same cache, eliminating repeated name-pool walks and string reconstruction.
📊 Observability & Diagnostics
- Consistent hexadecimal addresses: Introduced a shared
common/Hexformatter and applied it across runtime logs, diagnostic messages, structured artifacts, and generated SDK comments. All runtime addresses now use uppercase0xhexadecimal, while offsets, sizes, counts, indices, and flags remain decimal to avoid ambiguity. - Single formatting implementation: Consolidated the former generation-local formatter and removed its temporary wrapper header, so every module now shares one address-formatting path.
🔄 Breaking Changes & Migration
- GameProfile ABI: Appending
RodataXorKey()changes theIGameProfilevtable layout. Out-of-tree profile implementations compiled against the previous interface must be rebuilt; existing overrides remain source-compatible. - Text format change: Addresses in text logs and diagnostic message strings are now hexadecimal. Tooling that parses these strings must be updated; structured JSON address fields were already hexadecimal.
🌟 中文
⚙️ Analyzer 与函数边界恢复
- 基于 unwind 表的函数边界:新增
EhFrameIndex,从内存中的 ELF 程序头(ELF32/ELF64)定位PT_GNU_EH_FRAME,并解析标准的有序.eh_frame_hdr二分查找表。只要 unwind 表可用,函数边界就直接取自精确的[start, next_start)区间,不再依赖指令扫描启发式。 - 有界按需读取:表项在 O(log n) 查找过程中惰性读取,不整表分配,也不引入
libdwarf/libunwind等第三方依赖。 - 零回归回退:
FunctionBoundary::Find()保持原有签名;当表缺失、编码不受支持、地址未被覆盖或命中最后一项(无后继表项)时,静默回退到指令扫描启发式。索引每次分析只构建一次,并通过 anchored resolution 共享,与指令宽度无关。
🧩 布局发现与游戏兼容性
- 厂商块大小变体:名称池布局发现现在依次尝试
blocksBit16(0x10)、14(0x0e)和 18(0x12),优先使用 UE 标准值。每个参数组合只输出首个通过校验的候选,避免重复布局被下游探针判为歧义;NamePoolLayout的合法上限同步放宽到 18。 - 只读段 XOR 键扩展点:
IGameProfile新增RodataXorKey(),默认表示无混淆。注册了未激活的TencentAceProfile示例,演示 XOR-0xE2 的声明方式,其Matches()恒为 false。该扩展点尚未接入运行时调用方,预留给离线分析与解码计划集成。
⚡ 性能与缓存
- FName 解析缓存:
ObjectModelReader在会话生命周期内按 FName 字段地址缓存已解析的名称字符串。Name、FullName、ClassName及 Outer 链遍历复用同一缓存,避免重复的名称池解析与字符串构造。
📊 可观测性与诊断
- 地址统一为十六进制:新增共享的
common/Hex格式化工具,并应用到运行时日志、诊断消息、结构化产物和生成的 SDK 注释。所有运行时地址统一为0x前缀大写十六进制;偏移、大小、计数、索引和标志位保持十进制,避免语义混淆。 - 统一格式化实现:合并原先 generation 模块内的格式化实现,并删除临时包装头文件,所有模块现在共用同一条地址格式化路径。
🔄 破坏性变更与迁移说明
- GameProfile ABI:追加
RodataXorKey()会改变IGameProfile的 vtable 布局。基于旧接口编译的仓库外 profile 实现需要重新编译;已有重写代码在源码层面保持兼容。 - 文本格式变更:文本日志与诊断消息字符串中的地址已改为十六进制;依赖这些字符串的解析工具需要同步调整。结构化 JSON 中的地址字段原本就是十六进制。
NextDumper v0.1.3
Full Changelog: v0.1.2...v0.1.3
🚀 Release Notes / 更新日志
🌟 English
⚙️ Memory Reading & Performance
- Capture overlap scanning: Accelerated observation checks when captured ranges are disjoint, while retaining the full overlap-validation path when ranges intersect. Reuses existing observation storage and avoids unnecessary setup for empty captures.
- Batched metadata reads: Groups object-table scans and related schema probes into bounded read windows. Batches fixed property and field-class metadata reads, and reuses field metadata already collected during traversal.
- Lower read-path overhead: Avoids redundant lifecycle checks before the first backend read and skips backend setup for cache-only transfers, while retaining transfer-boundary checks and checks between subsequent reads.
- Schema probe reuse: Reuses validated child-property and identity results during subtype candidate checks without reducing configured sampling limits.
📦 SDK Generation
- Streamed artifact serialization: Writes manifest, diagnostics, and runtime metadata directly to their output streams instead of materializing full intermediate documents.
- Reduced formatting allocations: Replaces stream-based hexadecimal formatting and temporary type-key strings; JSON escaping and byte serialization write more directly to their destinations.
🛡️ Stability & Compatibility
- Preserved Capture overlap checks, validation, process-lifecycle safeguards, and object-table tail enumeration.
- No CLI options or JSON schema versions were changed.
🌟 中文
⚙️ 内存读取与性能
- Capture 重叠扫描优化:观测范围互不重叠时快速跳过无关区间;检测到实际交叠后仍保留完整校验路径。复用已有观测存储,并避免空 Capture 的冗余准备。
- 批量读取元数据:对象表扫描和相关 Schema 探测改用有界窗口批读;属性与 FieldClass 固定字段合并读取,并复用遍历过程中已取得的字段元数据。
- 降低读取路径开销:移除首次后端读取前的重复生命周期检查,并让纯缓存传输跳过后端准备;保留传输入口/出口检查及多次读取之间的检查。
- 复用 Schema 探测结果:子属性与身份校验复用已验证结果,同时保留既有采样上限。
📦 SDK 生成
- 流式写入产物:Manifest、Diagnostics 和 Runtime 元数据直接写入输出流,避免先构造完整的中间文档字符串。
- 减少格式化分配:十六进制格式化和生成类型去重不再依赖临时流字符串;JSON 转义及字节序列化也减少中间字符串构造。
🛡️ 稳定性与兼容性
- 保留 Capture 重叠检测、稳定性验证、进程生命周期保护和对象表尾部枚举。
- 未更改命令行选项或 JSON Schema 版本。
NextDumper v0.1.2
🚀 Release Notes / 更新日志
🌟 English
⚙️ Memory Architecture & Performance
- Native process memory subsystem: Removed KittyMemoryEx and introduced an owned memory-access implementation based on
process_vm_readv, providing bounded reads, batched reads, and unified interfaces for memory scanning and mapping inspection. - Precise read contracts: Established explicit process-view and read semantics to distinguish requested ranges from successfully observed data, with improved short-read handling, lifecycle error propagation, and bounded batch accounting.
- Batched object and name reads: Added bounded-window reads for object slots and class pointers, merged adjacent
FNamefield reads and boundary queries, and introduced batched Capture revalidation. Batched observations are validated without assuming an atomic memory snapshot. - Cache and phase boundaries: Introduced explicit cache boundaries across processing phases to improve read reuse and prevent duplicate writebacks on cache hits.
- Optional performance logging: Added the
--memory-logoption, disabled by default, to create a dedicated performance log only when explicitly requested.
🔍 Analyzer & Architecture Support
- More reliable address dataflow analysis: Improved ARM instruction analysis to prevent unknown immediate values and invalid base registers from contaminating address calculations.
MOVK/MOVTcomposition now requires known input values. - Architecture-aware state tracking: Improved caller-saved register invalidation and added support for Store writeback, literal-parameter parsing, and checked offset arithmetic.
- Conservative instruction handling: Added safer handling of ARM32 PC writes and ARM64 reserved encodings to avoid deriving unreliable addresses.
🛡️ Reliability & Boundary Validation
- ELF and memory mapping validation: Added readable-range checks for ELF images and validation for overlapping
PT_LOADsegments. - Archive metadata validation: Strengthened ZIP local metadata validation to reject invalid or inconsistent archive structures.
- Reflection and symbol-state handling: Preserved incomplete symbol states and improved class-pointer diagnostics to avoid prematurely treating unresolved data as complete.
- Safer memory operations: Improved zero-byte short-read handling, error propagation, batch read-budget accounting, and boundary checks across memory, module, and reflection components.
🔧 Build System & Dependencies
- Android NDK upgrade: Upgraded CI to NDK
26.3.11579264to ensure a consistent build environment and avoid libc++ compatibility issues. - Reduced external dependencies: Replaced KittyMemoryEx-dependent functionality with project-owned implementations for memory access, ELF/APK/ZIP64 handling, and ARM instruction decoding. Removed legacy write-compatibility interfaces.
🔄 Breaking Changes & Migration
- Memory subsystem migration: External consumers relying on KittyMemoryEx or the removed write-compatibility interfaces must migrate to the new memory subsystem.
- Build requirements: Android builds require NDK r26 or later. CI uses NDK
26.3.11579264.
🌟 中文
⚙️ 内存架构与性能
- 自有进程内存子系统:移除 KittyMemoryEx,基于
process_vm_readv建立自有内存访问实现,提供有界读取、批量读取,以及统一的内存扫描与映射检查接口。 - 精确读取契约:建立明确的进程视图与读取语义,区分请求范围和实际成功观测的数据,并完善短读处理、生命周期错误传播及批量读取预算管理。
- 对象与名称批读:对象槽位和 class 指针采用有界窗口读取,合并相邻的
FName字段读取与边界查询,并在 Capture 阶段批量复核已观测范围。批量读取会进行范围验证,但不被视为原子内存快照。 - 缓存与阶段边界:建立明确的处理阶段缓存边界,提高读取结果的复用能力,并避免缓存命中引发重复写回。
- 可选性能日志:新增默认关闭的
--memory-log选项,仅在显式启用时创建并写入独立的性能日志。
🔍 Analyzer 与架构支持
- 更可靠的地址数据流分析:改进 ARM 指令分析,防止未知立即数和失效基址污染地址计算。
MOVK/MOVT仅在输入值已知时进行组合。 - 架构相关的状态跟踪:改进 caller-saved 寄存器状态清理,并补充 Store writeback、literal 参数解析及带溢出检查的偏移计算。
- 保守的指令处理:对 ARM32 PC 写入和 ARM64 保留编码采取更稳健的处理策略,避免推导出不可靠的地址。
🛡️ 可靠性与边界校验
- ELF 与内存映射校验:新增 ELF 可读范围检查,并校验重叠的
PT_LOAD段。 - 归档元数据校验:强化 ZIP 本地元数据验证,拒绝无效或不一致的归档结构。
- 反射与符号状态处理:保留尚未完成的符号状态,并改进 class 指针诊断,避免过早将未解决的数据视为完整。
- 更安全的内存操作:完善零字节短读处理、错误传播、批量读取预算管理,以及内存、模块和反射组件中的边界校验。
🔧 构建系统与依赖
- 升级 Android NDK:CI 升级至 NDK
26.3.11579264,统一构建环境并避免 libc++ 兼容性问题。 - 减少外部依赖:将内存访问、ELF/APK/ZIP64 处理及 ARM 指令解码迁移至项目自有实现,移除 KittyMemoryEx 及旧的写入兼容接口。
🔄 破坏性变更与迁移说明
- 迁移至新内存子系统:依赖 KittyMemoryEx 或已删除的写入兼容接口的外部调用方,需要迁移至新的内存访问实现。
- 构建环境要求:Android 构建需要 NDK r26 或更高版本,CI 固定使用 NDK
26.3.11579264。
NextDumper v0.1.1
💥 The project is renamed NextDumper
💥 项目更名为 NextDumper
AndUEFker v3.2.1
Full Changelog: https://github.com/Ezeny1337/AndUEFker/compare/v3.2.0...v3.2.1
🚀 Release Notes / 更新日志
🌟 English
⚙️ Features
- Version-sensitive property layouts: Improved Property layout handling across Unreal Engine versions, including runtime probing of standard and internal-index
UObject::Outerlayouts. - Ambiguity-aware Outer detection: Reject ambiguous
Outerlayout candidates and report supporting evidence instead of silently selecting a potentially incorrect layout. - Physical storage accuracy: Excluded
CPF_Virtualinterface properties from physical storage layouts to improve generated SDK layout correctness. - String type preservation: Preserved UTF-8 and ANSI string types in generated SDK descriptions.
🌟 中文
⚙️ 特性
- 版本相关的 Property 布局:改进不同 Unreal Engine 版本下的 Property 布局处理,新增对标准布局和内部索引布局中
UObject::Outer的运行时探测。 - 具备歧义判定能力的 Outer 探测:拒绝存在歧义的
Outer布局候选,并报告相应的判定证据,避免静默选择可能错误的布局。 - 物理存储布局准确性:将
CPF_Virtual接口属性排除在物理存储布局之外,提高生成 SDK 的布局准确性。 - 字符串类型保留:在生成的 SDK 描述中保留 UTF-8 和 ANSI 字符串类型,避免字符串编码类型信息丢失。
AndUEFker v3.2.0
Full Changelog: https://github.com/Ezeny1337/AndUEFker/compare/v3.1.1...v3.2.0
🚀 Release Notes / 更新日志
🌟 English
⚙️ Features
- Compile-Time GameProfile & Compatibility Diagnosis: Introduced the foundational compile-time
GameProfilesystem and integrated profile resolution into the session workflow. Added a dedicated.diagnosis.jsonreport covering target package, module, architecture, pointer width, profile and runtime states, compatibility status, and actionable findings with stable codes and next actions. When no profile matches, the existing automatic discovery and identity decoding pipeline remains available. - Unified Name Decoding & DecodePlan Extensions: Extended
DecodePlanwith FName number handling and UTF-8/UTF-16 name text decoding. Unified text decoding across layout discovery, name probing, and actual reads to ensure consistent behavior throughout the decoding pipeline. - Profile Failure Handling & Diagnostic Classification: Added explicit handling for profile-related exceptions and structured diagnostic classification. Process, memory, module, and output failures are categorized as runtime issues, while root binding, schema, and reflection failures are reported as compatibility or profile validation issues, providing clearer troubleshooting guidance.
🌟 中文
⚙️ 特性
- 编译期 GameProfile 与兼容性诊断:建立编译期
GameProfile基础,并将 Profile 匹配与解析接入会话流程。新增独立的.diagnosis.json诊断报告,统一记录目标包名、模块、架构、指针宽度、Profile 状态、运行状态、兼容性状态,以及包含稳定错误码 (code) 和后续处理建议 (next action) 的诊断条目。当前 Profile 注册表为空或未匹配到适用 Profile 时,仍保留现有的自动发现与 Identity 解码流程。 - 统一名称解码与 DecodePlan 扩展:扩展
DecodePlan,新增 FName Number 处理以及 UTF-8/UTF-16 名称文本解码能力。统一布局发现、名称探针和实际读取阶段的文本解码逻辑,确保各阶段采用一致的解码规则,减少因行为不一致导致的探测与读取偏差。 - Profile 异常处理与诊断分类完善:新增 Profile 相关异常处理,并完善结构化诊断分类。进程、内存、模块及输出故障归类为运行时问题;根绑定、Schema 和反射相关故障归类为兼容性问题或 Profile 验证问题。通过稳定错误码与明确的后续处理建议,帮助更准确地定位故障原因并指导排查。
AndUEFker v3.1.1
Full Changelog: https://github.com/Ezeny1337/AndUEFker/compare/v3.1.0...v3.1.1
🚀 Release Notes / 更新日志
🌟 English
⚙️ Features
- Session log: Now the log is named according to the timestamp.
- Artifact directory: Now if there is the same artifact directory in the target directory, it will be overwritten.
🌟 中文
⚙️ 特性
- 会话日志:现在日志以时间戳命名。
- 产物目录:现在如果目标目录有相同的产物目录,它将会被覆盖。
AndUEFker v3.1.0
Full Changelog: https://github.com/Ezeny1337/AndUEFker/compare/v3.0.0...v3.1.0
🚀 Release Notes / 更新日志
🌟 English
⚙️ Features
- IDA import script: Added IDA importer, generate IDA type declaration from reflection artifact, and add name and comment for the execution entry RVA in qualified modules.
- *Core layout description: Added EngineLayouts.hpp artifact to describe the resolved core reflection layout.
🌟 中文
⚙️ 特性
- IDA导入脚本:新增 IDA 导入器,从反射产物中生成 IDA 类型声明,为符合条件的模块内执行入口 RVA 添加名称和注释。
- 核心布局描述:新增 EngineLayouts.hpp 产物来描述已解析的核心反射布局。
AndUEFker v3.0.0
Full Changelog: https://github.com/Ezeny1337/AndUEFker/compare/v2.5.0...v3.0.0
🚀 Release Notes / 更新日志
🌟 English
⚙️ Features & Architecture
- Source-backed cross-version storage models: Added candidate families for UE4.23–5.6 value storage, including FText outer references, Weak/Lazy/Soft object references, delegate detector variants, remote-object configurations, and Sparse element layouts. Ambiguous candidates remain explicit.
- Container layout descriptions: Added source-backed heap and MemoryImage Array/Set/Map descriptions, allocation-bit validation, Sparse element formula checks, target pointer decoding, and reflected-size-aware layout tags.
- Independent runtime evidence: Added bounded read-only sampling for live object values, containers, Weak references, delegate fields, FText headers, and Sparse delegate storage. Runtime evidence has its own stability checks and does not downgrade a complete reflection SDK.
- Reflection and SDK representation: Added typed opaque storage, semantic type information, storage-layout candidates, offset descriptions, delegate storage categories, bounded failure paths, and shared generation type identifiers.
- Evidence-oriented diagnostics: Removed the
--detailed-diagnosticsswitch and made useful diagnostic evidence the default. Added bounded normal samples, anomaly retention, omission counters, producer provenance, capture-attempt history, shared owner/entry contexts, and JSON evidence references. - Generation architecture: Split artifact publication, SDK emission, metadata serialization, generation reporting, runtime field planning, runtime value reading, and reflection evidence logging into focused internal modules.
- Module boundaries: Moved
ModuleImageandModuleArchitectureintoanduefker::module, removed the oldappforwarding aliases, and reduced implementation dependencies in public headers.
📊 Binding, Schema & Performance
- Binding and schema probing: Reused ELF lookup and probe-session results, prioritized symbol-backed candidates, retained analyzer fallback, improved schema profile selection, and preserved runtime-observed versus profile-expected feature evidence.
- ARM and object-store support: Improved ARM64 packed
FUObjectItemprobing and decoding, retained ARM32 support, validated object identity and construction state, and bounded chunked object-table tail enumeration. - Memory and capture accounting: Fixed short-read handling, overlapping observation checks, fresh identity reads, cache capacity edge cases, merged adjacent capture validation reads, and recorded logical/cache/backend read statistics.
- Reflection completeness: Added delegate signature closure, function registry de-duplication, execution-entry versus native-entry semantics, property-tail candidates, enum storage-width validation, object-property class diagnostics, and layout conflict evidence.
- Container evidence quality: Fixed the container evidence queue being cleared before probing, preserved accounting between candidates and omitted records, and retained full JSON observations while keeping normal logs bounded.
🐛 Bug Fixes & Stability
- Rejected ambiguous name-table, object-layout, schema, container allocator, and Sparse candidates instead of silently selecting a layout.
- Corrected offset-description generation, cyclic declaration handling, target pointer-width output, bool/enum storage representation, and base-layout dependency propagation.
- Added checked bounds for object indices, name entries, property references, container counts, allocation bits, pointer decoding, and serialized evidence budgets.
- Kept Opaque storage as an intentional descriptive representation; unresolved internal expansion no longer incorrectly marks an otherwise complete SDK as incomplete.
🔄 Breaking Changes & Migration
- Removed
--detailed-diagnostics; diagnostic output is now produced by default with bounded normal sampling and full machine-readable records. - Reflection and artifact JSON contracts evolved substantially: reflection metadata progressed from schema 4 to schema 10, manifest/diagnostics from schema 3 to schema 9, and runtime metadata from schema 3 to schema 4.
- Generated storage wrappers now carry semantic types, reflected sizes, and optional source-backed layout tags. Consumers must not treat generated declarations as native ABI-compatible C++ objects.
- Execution-entry RVAs are explicitly described as reflected runtime entries and are not guaranteed to be original native business-function addresses.
- External source consumers must migrate
ModuleImageandModuleArchitecturetoanduefker::module; the unusedModuleCatalog::FindSymbolwrapper was removed.
🌟 中文
⚙️ 特性与架构
- 源码驱动的跨版本存储模型:新增覆盖 UE4.23–5.6 的值存储结构族候选,涵盖 FText 外层引用、Weak/Lazy/Soft 对象引用、不同 Delegate detector 结构、remote-object 配置及 Sparse 元素布局。候选存在歧义时保留明确状态。
- 容器布局描述:新增普通 heap 与 MemoryImage Array/Set/Map 的源码布局描述、allocation bits 校验、Sparse 元素公式核对、目标 pointer 解码及基于反射大小的布局标签。
- 独立运行时证据:新增对运行时对象值、容器、Weak 引用、委托字段、FText header 和 Sparse 委托存储的有界只读采样。实例证据拥有独立稳定性校验,不会因为无法读取动态值而降低完整反射 SDK 的状态。
- 反射与 SDK 表示:新增 typed opaque 存储、语义类型、值存储候选、偏移描述、委托存储分类、有界失败路径和共享生成类型 ID。
- 证据型诊断:移除
--detailed-diagnostics,有用的诊断证据默认输出。新增有界正常样本、异常记录、省略计数、生成器来源、Capture Attempt 历史、共享 owner/entry 上下文及 JSON 证据引用。 - 生成器架构:拆分产物发布、SDK 生成、元数据序列化、生成报告、运行时字段规划、运行时值读取和反射证据日志,降低职责耦合。
- 模块边界:将
ModuleImage和ModuleArchitecture下沉到anduefker::module,删除旧的app转发别名,并减少公共头文件中的实现依赖。
📊 绑定、Schema 与性能
- 绑定与 Schema 探测:复用 ELF 查找和探测会话结果,优先使用符号候选,保留 Analyzer 后备路径,改进 Schema profile 选择,并区分运行时实际观测特征与 profile 预期特征。
- ARM 与对象表支持:改进 ARM64 packed
FUObjectItem探测与解码,保留 ARM32 支持,校验对象身份与构造状态,并对 Chunked 对象表增长执行有界尾部补读。 - 内存与 Capture 统计:修复短读处理、重叠观察区间、身份新鲜读取和缓存容量边界问题;合并相邻 Capture 复核读取,并记录逻辑读取、缓存命中及后端读取统计。
- 反射完整性:新增委托签名闭包、函数地址去重、反射执行入口与 native 入口语义区分、属性尾部候选、枚举存储宽度校验、ObjectProperty 类诊断及布局冲突证据。
- 容器证据质量:修复容器证据在探测前被清空的问题,保证候选、保留记录和省略记录的计数闭合;完整观察保存在 JSON 中,普通日志保持有界。
🐛 问题修复与稳定性
- 对歧义的名称表、对象布局、Schema、容器分配器和 Sparse 候选拒绝选择,而不是静默使用未知布局。
- 修正偏移描述生成、循环声明处理、目标 pointer 宽度输出、Bool/Enum 存储表示及基类布局依赖传播。
- 强化对象索引、名称 Entry、属性引用、容器计数、allocation bits、指针解码和诊断预算的边界校验。
- 保留 Opaque 作为有意设计的描述型表示;内部实现未展开不会再错误地把本来完整的 SDK 标记为未完成。
AndUEFker v2.5.0
Full Changelog: https://github.com/Ezeny1337/AndUEFker/compare/v2.4.0...v2.5.0
🚀 Release Notes / 更新日志
🌟 English
⚙️ Features & Performance
- Chunked Object Tables & ARM64 Support: Added bounded tail re-reading for growing chunked object tables, alongside status tracking for enum coverage. Implemented layout probing and pointer decoding for ARM64 packed
FUObjectItem, with strict object identity and construction state validation. - Diagnostics & Execution Tracing: Introduced phase timing, memory read stats, and throttled progress reporting with real-time log persistence. Added per-capture-attempt metrics tracking object counts, changed bytes, read failures, and retry reasons.
- Reflection & SDK Generation Enhancements: Expanded reflection descriptions to include full names, target sizes, type references, boolean layouts, and opacity reasons. Outputted function addresses, flags, and parameter roles, updating the JSON schema version accordingly.
- Performance Optimization & Streaming Output: Shared anchor results across batch scans for name layouts and object item shape probing. Merged adjacent capture re-read operations with granular fallback, eliminated redundant identity checks during class collection, and enabled streaming output for large artifacts with topological sorting for type declarations.
🐛 Bug Fixes & Stability
- Memory Read & Cache Integrity: Fixed an issue where short reads were incorrectly treated as full reads, preventing scans on un-transferred bytes. Corrected overlapping observation checks across different start addresses to ensure data changes are captured, and switched identity re-validation to fresh reads to prevent frozen caches from bypassing safety checks.
- Name Table & Object Layout Binding: Re-validated name table stride and headers using consecutive name entries, removing stride scoring bias and rejecting ambiguous layouts. Neutralized the impact of empty object slots on layout confidence, while reinforcing boundary checks for object layouts, name indices, and entry publication ranges.
- Code Generation Fixes: Fixed missing struct closures in offset-description branches. Converted cyclic dependency types to explicit offset descriptions, and ensured base address types are output according to the target pointer width.
🌟 中文
⚙️ 特性与性能优化 Features & Performance
- Chunked 对象表与 ARM64 适配: 支持分块 (Chunked) 对象表增长时的有界尾部补读,并记录枚举覆盖状态;新增对象的身份与构造状态检查,并实现了对 ARM64 packed
FUObjectItem的布局探测与指针解码。 - 运行时诊断与持续日志: 引入阶段计时、内存读取统计及节流进度展示,支持在运行过程中持续写入日志;按 Capture Attempt 追踪并保留对象计数、变化字节、读取失败和重试原因。
- 反射描述与代码生成增强: 补全反射描述信息(完整名称、目标尺寸、类型引用、Bool 布局及 Opaque 原因),增加函数地址、Flags 和参数角色输出,并同步更新了 JSON Schema 版本。
- 批量处理与流式输出: 批量扫描并共享锚点探测结果,复用名称布局与 Object Item Shape 探测;合并相邻 capture 的复核读取(失败时自动回退到精确区间);减少常用类收集中的重复身份检查;大型产物升级为流式输出,类型声明按拓扑结构排序并清理了冗余代码。
🐛 问题修复与稳定性升级 Bug Fixes
- 内存读取与缓存校准: 修复短读 (Short Read) 被误诊为完整读取的问题,防止扫描未传输字节;修复不同起始地址重叠观察时未检测到数据变化的问题;身份复核改用实时新鲜读取,避免因冻结缓存而使安全检查失效。
- 名称表与布局绑定修正: 通过连续名称 Entry 重新验证 Stride 与 Header,移除 Stride 评分偏置并拒绝歧义布局;修正空对象槽位对布局置信度的负面影响,全面强化对象布局、名称索引与 Entry 发布范围的边界检查。
- 代码生成修复: 修复
offset-description分支缺少结构体闭合的问题;循环依赖类型改用显式偏移描述,基础地址类型统一按目标指针宽度进行正确输出。