吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 887|回复: 11
上一主题 下一主题
收起左侧

[原创] 韩国Xigncode3 反作弊 AI 20小时完整静态分析一次记录(换源)

[复制链接]
跳转到指定楼层
楼主
lengkong 发表于 2026-8-21 04:18 回帖奖励
本帖最后由 lengkong 于 2026-8-22 00:55 编辑

XC3 完整专业逆向工程与虚拟化恢复报告

  • 版本:1.3.2
  • 日期:2026-08-22
  • 项目:XC3-analysis-20260820
  • 工件集:XC3 本地快照
  • 范围:二进制逆向、驱动协议、虚拟化结构、函数恢复、内存取证、跨会话差分、IR/CFG 证据。

    正文只列主要函数和调用锚点;全部 IDA 函数、VM handler、family 与 exports 随发布包以 CSV 交付。
    主程序尚未建立全量 IDB;NMSSWCore 运行时 .vdata 尚未完成函数边界恢复,均明确列为开放项。

0. 技术概览

0.1 系统定位

XC3 是一套多层系统,由 游戏主程序、NMSSWCore、x3 用户态模块和 xhunter 内核驱动 共同组成。
目前,各层入口、通信协议、VM 调度表、12,000 余个 IDA 函数和 1,647 条 VM 路径都已整理为可查询目录。
下一阶段的关键不再是收集静态函数名,而是补齐完整进程中的堆、线程栈和连续 VM 状态。

0.2 组件职责

组件 职责 当前恢复状态
游戏主程序 宿主应用 映像和导出已确认;完整函数图尚未建立
NMSSWCore.nsm 启动和编排层 8 个导出;运行时产生约 5.3MB .vdata
x3_x64.xem 主要用户态执行模块 loader、隐藏代码区、VM 调度器、驱动 wrapper 已定位
.vlizer 解压后才出现的隐藏代码区 范围、解码、修复、1,647 条路径已恢复
xhunter1.sys 内核服务层 44 个命令、请求格式、PID/句柄/线程相关函数和 live callbacks 已恢复
VM handler 调度器选中的一小段代码 1,647 条全部有 RVA、大小、终点、family 和哈希

0.3 恢复状态

状态 分析面 结论
Confirmed 工件身份 关键结论均绑定文件版本、大小与证据相位
Confirmed 驱动协议 44 个 opcode、request/response schema 与关键 helper
Confirmed VM 结构 1,647 个 table/stub/landing 全覆盖
Confirmed 跨会话稳定性 1,647 个 first block 与 table RVA 两轮一致
Partial VM 状态模型 已恢复 0x1A2 → 0x465 两段状态转换
Partial NMSSWCore .vdata 已捕获,内部格式仍待恢复
Missing input 完整 VM 语义 仍需 full process dump 中的 heap/stack/thread context
Open 全 IR/CFG 与原生等价 尚未达到完整去虚拟化验收

0.4 执行链

flowchart LR
    A[游戏启动] --> B[NMSSWCore 组织初始化]
    B --> C[x3 加载]
    C --> D[解压 .vlizer]
    D --> E[dispatcher 读取 selector]
    E --> F[从 1647 项表选择 handler]
    F --> G[修改 VM context / stack]
    F --> H[需要时调用 Windows API]
    C --> I[通过 wrapper 向 xhunter 写请求]
    I --> J[驱动按 opcode 调用 handler]

0.5 阅读索引

读者 建议顺序 可以跳过
第一次接触 XC3 0 → 1 → 4 → 12 → 13 发布包里的函数 CSV
项目负责人 0 → 1 → 6 → 12 → 13 单个函数字节与机器字段
驱动逆向人员 3 → 7 → 10.1/10.2 → 11 x3 全函数 CSV
VM 逆向人员 8 → 10.3/10.4/10.6 → 11/12 普通 PE exports
内存取证人员 3 → 5 → 9 → 11 → 13 44 opcode 的业务细节

0.6 术语索引

术语 定义
RVA 相对模块起点的地址;重启后仍可复用
VA 某次运行的绝对地址;ASLR 后会变化
IDA / IDB 反汇编工具 / 它保存的分析数据库
VAD Windows 记录进程每段虚拟内存用途的目录
mapped dump 只抓一个已加载模块的映像,不含整个进程堆和栈
full process dump 包含模块、私有内存、线程、栈和地址空间信息的完整进程快照
dispatcher 根据 selector 决定下一段 handler 的调度器
selector 调度表索引,可近似理解为“下一步编号”
handler VM 执行的一小段代码
context VM 保存寄存器、状态、标志和指针的数据区
IR 把混乱机器指令翻译成统一的 LOAD/STORE/ADD/BRANCH 等操作
CFG 控制流图,说明代码块之间如何跳转
family 指令形状相近的一组 handler;形状相同不自动等于语义相同

0.7 统计口径

  1. 12,148 个 x3 函数:来自 x3_x64.xem.bin 的 Stage5 IDB;这是 IDA 当前定义的全部函数,不表示每个都已经人工命名。完整目录:catalogs/x3_all_functions.csv
  2. 1,647 个 VM handler:来自 x3_x64.xem.bin.vlizer 区域;这是完整结构目录,不表示已经得到 1,647 个通用 opcode 语义。完整目录:catalogs/vm_handlers_1647.csv
  3. 1,431 个 family:由 x3_x64.xem.bin 的 1,647 个 handler 归一化聚类产生;仅用于压缩分析规模,不能替代语义验证。完整目录:catalogs/feature_families_1431.csv

全量函数与 handler 目录不进入正文;检索时使用发布包中的 CSV。

1. 执行摘要

本报告把 Stage1–12 的逆向结果合并为一条可复现证据链,并纳入两轮运行时模块映像和一份 live kernel dump:

  • xhunter1.sys:361 个 IDA 函数、44 项 opcode 分发、关键协议/状态/回调均有本地字节证据;
  • x3_x64.xem:12,148 个 Stage5 IDA 函数、1,647 项 VM handler 结构全覆盖;
  • NMSSWCore.nsm:8 个 PE exports、4 个现有 IDA 函数、运行时 RWX .vdata 已捕获;
  • VM:1,647 table RVA 与 1,647 first handler blocks 跨两次会话完全稳定;
  • 动态状态:0x1A2 → 0x465 bounded transition、API resolver、low-I/O、__piob、kernel callbacks 已建立;
  • 仍未完成:全 selector next-state、通用 VM state、全 IR/CFG、NMSSWCore .vdata 格式、完整用户进程 heap/stack。
对象 数量 含义
xhunter IDA functions 361 当前工作 IDB 全函数
x3 IDA functions 12148 Stage5 最终 mapped IDB 全函数
NMSSWCore IDA functions 4 现有 protected disk IDB 全函数
xhunter opcode handlers 44 44-entry driver protocol
x3 relevant function subset 192 entry 可达/相关函数深读集合
VM handlers 1647 全 selector 结构目录
feature families 1431 normalized structural family
live xhunter callbacks 9 kernel dump + IDA 语义交叉

2. 证据等级与地址规则

等级 定义 本报告用法
Confirmed 当前文件字节、IDB、CDB、结构化输出直接证明 RVA、函数边界、表项、回调、哈希
Inferred 多面证据一致但仍缺原生执行闭环 组件角色、部分 VM state 字段
Unknown 当前材料未覆盖或存在版本/运行时缺口 .vdata 格式、外部 heap、全 selector 语义

长期标识全部使用 RVA。0x7FF95C5A00000x7FFE486B00000x7FFA6CC00000 等 VA 只绑定各自会话。

3. 当前工件身份

文件 大小 证据面 版本/边界
x3_x64.xem 6865552 disk PE 2024.6.18.236
x3_x64.xem.bin 10391552 2026-08-21 mapped module base 0x7FFE486B0000
NMSSWCore.nsm 4322776 disk PE protected orchestration module
NMSSWCore.nsm.bin 11698176 2026-08-21 mapped module base 0x7FFE3CB90000
SevenDeadlySins_Origin-Win64-Shipping.exe.bin 217829376 2026-08-21 mapped module base 0x7FF6F6600000
xhunter1.sys 194448 disk driver 2023.12.7.78
xhunter1.sys.bin 196608 mapped driver snapshot historical capture
kernel.dmp 5627596800 PAGEDU64 live kernel bitmap dump 2026-08-21 20:27:14 +08:00
xcorona_x64.xem 7426904 disk PE mapped runtime snapshot absent
xmag_x64.xem 9314304 non-PE container runtime private region absent
xnina_x64.xem 2105344 non-PE container runtime private region absent

历史 Stage1 基线为 18 files / 185,509,317 bytes。2026-08-21 新抓取覆盖了两个 mapped .bin
并新增主程序 mapped image 与 kernel.dmp;因此旧报告中的“当前 18/18”只作为历史相位结论。
旧 x3 mapped snapshot 已从只读 IDB 完整恢复;精确身份记录保存在 manifest。

4. 系统架构与数据流

flowchart TD
    GAME[SevenDeadlySins Origin] --> CORE[NMSSWCore.nsm]
    CORE --> X3[x3_x64.xem]
    X3 --> VL[.vlizer decode / fixups]
    VL --> DISP[dispatcher RVA 0x8512AC]
    DISP --> TABLE[1647-entry table RVA 0x86C332]
    TABLE --> HANDLERS[stub -> landing -> terminal families]
    X3 --> WRAP[xhunter request wrappers]
    WRAP --> IRP[IRP_MJ_WRITE request/response]
    IRP --> DRIVER[xhunter1.sys 44 handlers]
    DRIVER --> KCB[process/image/Object callbacks]
    HANDLERS --> API[resolver / CRT / low-I/O / FILE]

5. 工具与数据库

工具 版本/模式 实际用途 边界
IDA Pro / IDALib 9.4.260713 x64 PE/driver IDB、函数、xrefs、标注、完整目录 只读导出或副本写入;原始字节未 patch
Hex-Rays 9.4.0.260713 关键 driver/x3 函数伪代码 混淆块以反汇编为准
CDB/WinDbg 10.0.29617.1000 PAGEDU64、EPROCESS/VAD、DriverObject、callback arrays kernel bitmap 缺用户页
Unicorn 2.1.4 bounded selector/context/API trace synthetic contracts 与原生等价分离
Capstone module 5.0.7 / metadata 5.0.9 block/terminal/normalized instruction catalog 静态解码
pefile / stdlib PE parser 2024.8.26 + self-contained parsers disk/mapped/relocation/import/section 比较 文件与会话绑定
Volatility 3 Framework 2.28.0 尝试解析 kernel bitmap 未构造 layer,结论不依赖它

6. Stage1–12 路线与验证

阶段 状态 验证 失败 主要结论
Stage1 PASS 18/18 0 18-file 基线、格式/签名/熵/import/export/string;185,509,317 bytes
Stage2 PASS 21/21 0 DriverEntry/IRP/44 handlers/164 labels
Stage3 PASS 27/27 0 correct mapped x3 IDB、14 wrappers
Stage4 PASS 44/44 0 LZMA86、1651 fixups、9 opcode semantics
Stage5 PASS 58/58 0 1647 table/stub/landing、context access
Stage6 PASS 42/42 0 selector 0x1A2→0x465 delta
Stage7 PASS 324/324 0 ABI-correct resolver/API shim/fastfail boundary
Stage8 PASS 1629/1629 0 low-I/O、bounded L3、producer/static proof
Stage9 PASS 756/756 0 __piob/FILE、1431 families、1647 structural IR
Stage10 PASS 387/387 0 18-file offline closure and completion matrix
Stage11 PASS 272/272 0 live target/xhunter/VAD/callbacks
Stage12 PASS 189/189 0 three mapped dumps/cross-session stability

7. xhunter1.sys 详细恢复

7.1 入口、IRP 与协议

DriverEntry RVA 0x24000
  -> xh_driver_entry_impl 0xB31C
     -> IRP_MJ_CREATE xh_irp_create 0xB138
     -> IRP_MJ_CLOSE  xh_irp_close  0xB0D0
     -> IRP_MJ_WRITE  xh_irp_write  0xB178
     -> DriverUnload  xh_driver_unload 0xB4F4
     -> xh_init_dispatch_table 0x2A3C

xh_irp_write
  -> xh_validate_write_request 0xB568
  -> xh_dispatch_opcode 0x3764
  -> xh_map_caller_buffer_write 0x81D0
  -> copy 0x2FA bytes
  -> xh_unmap_caller_buffer 0x7A74
字段 值/偏移 证据
request size 0x270 IRP write + validator
magic 0x345821AB request+0x04 compare
nonce +0x08 response 写按位取反
opcode +0x0C 44-entry linear dispatch
response pointer +0x10 caller buffer mapping
response marker 0x12121212 response+0x04
response status +0x0C NTSTATUS
copy size 0x2FA IRP response copy

7.2 live kernel callback surface

Stage11 live driver base:0xFFFFF8009FEF0000;DriverObject:0xFFFF998632903560;DeviceObject:0xFFFF998621EB3320

函数 RVA 函数范围 语义 live registration
nullsub_1 0x1FF4 0x1FF4–0x1FF7 线程对象 post-operation 空函数 process/image notify 或 process/thread Object callback
sub_140004764 0x4764 0x4764–0x4777 仅在 ProcessId==0 时进入内核映像处理器 process/image notify 或 process/thread Object callback
sub_140004778 0x4778 0x4778–0x48C0 验证 PE 指针并比较 TimeDateStamp/CheckSum 表 process/image notify 或 process/thread Object callback
sub_140004EA0 0x4EA0 0x4EA0–0x4FCB 进程句柄 post-operation 记录/状态更新 process/image notify 或 process/thread Object callback
sub_140004FCC 0x4FCC 0x4FCC–0x50D0 按 PID flags 条件化缩减进程句柄 DesiredAccess process/image notify 或 process/thread Object callback
sub_1400050D0 0x50D0 0x50D0–0x51B7 按 PID flags 条件化缩减线程句柄 DesiredAccess process/image notify 或 process/thread Object callback
sub_140006324 0x6324 0x6324–0x6417 从 PID flags 链移除退出进程 process/image notify 或 process/thread Object callback
sub_140007074 0x7074 0x7074–0x7198 进程创建分类并更新 PID flags process/image notify 或 process/thread Object callback
sub_1400072B4 0x72B4 0x72B4–0x72C8 create/exit 分流入口 process/image notify 或 process/thread Object callback

8. x3_x64.xem 与 VM 恢复

8.1 loader、decode 与 redirect

DllEntryPoint 0x13748C
  -> x3_vlizer_entry_bootstrap 0x591050
     -> x3_lzma_range_decode 0x591199
     -> relocate/redirect 0x591B3D
     -> .vlizer runtime range 0x591000–0x9E9000

pristine/runtime 差异 6,715 bytes,其中 1,651 个严格 qword RVA-to-VA fixup。
VM table 位于 RVA 0x86C332,共 1,647 qword;dispatcher 基本块位于 RVA 0x8512AC

8.2 VM 结构统计

项目 结果
entries/stubs/landings 1647 / 1647 / 1647,全唯一
stub encoding 全部 5-byte E9
even/odd pairs 823/823 为 +5 相邻;另 1 singleton
stub runs 219;最大 86 项
terminal distribution jbe1365 / je220 / ret31 / jmp-reg25 / jne5 / call-reg1
block instructions 6–455;median 82
block bytes 28–2550;median 434
exact block hashes 1642 unique;5 组二重复
RBP affine accesses 15,018 次,覆盖 1646 blocks
feature families 1431
tail/full structural signatures 1602

8.3 selector/context 与 API/CRT

  • selector 0x1A2:table 0x86D042 → stub 0x5B8E9D → landing 0x5F4BD5;下一 selector 0x465
  • selector 0x465:table 0x86E65A → stub 0x5F35BA → landing 0x76FF65;终止于 0x18A8D8 GetProcAddress call 前;
  • 第一段 17,560 instructions,RSP -0x28,7/11 context fields 改变;
  • 第二段 16,167 instructions,RSP -0xD8,8/11 fields 改变;
  • ABI-correct shim trace 最终到 RVA 0x137CF7 INT29 code 7;从 RVA 0x19D256 起依赖显式 zero-page contract;
  • __piob producer 0x1920E8,FILE-like stride 0x58;low-I/O target stride 0x40,与本机 UCRT 26100 推导 0x48 冲突。

8.4 跨会话稳定性

  • old base:0x7FF95C5A0000;new base:0x7FFE486B0000
  • table 归一化为 RVA 后,两轮结果完全一致;
  • handler first blocks:1647/1647 byte-exact;
  • relocation/table/IAT canonicalization 后仅剩 1888 bytes / 11 pages;
  • __piob/low-I/O 新指针位于模块外,module dump 未包含 pointee。

9. NMSSWCore 与主程序映像

NMSSWCore 新 mapped base:0x7FFE3CB90000.vdata RVA 0xB9000–0x75D000
大小 6,963,200 bytes,RWX,非零 5,323,973 bytes,entropy 6.14522。
该区域 disk raw size 为 0;当前只完成 page/entropy/pointer 分层,未建立函数边界与格式语义。

主程序 mapped base:0x7FF6F6600000.text 151,343,104 bytes 与磁盘映像 byte-exact。
主程序尚无全量 IDB,本文只列 PE exports,不宣称全函数恢复。

10. 主要函数与调用锚点

以下附录是函数权威索引。正文只保留查询最常用的 RVA、范围、名称、所属节和结构分类。
flags、chunks、first bytes、完整 context/stream profile 与哈希保存在 stage13/complete-report/catalogs/ 和 Stage9 CSV 中,
避免让主报告被低价值机器字段淹没。

10.1 xhunter 36 个关键函数

label IDA name start RVA end RVA size callers callees 作用
driver_entry DriverEntry 0x24000 0x2402C 44 0 xh_driver_entry_impl; __security_init_cookie 标准 DriverEntry 包装并进入主初始化
driver_entry_impl xh_driver_entry_impl 0xB31C 0xB4F2 470 1 nullsub_1; xh_init_dispatch_table; sub_140004744; sub_140004754; sub_14000575C; sub_1400072C8; sub_1400073A4; sub_140007B78; sub_140007C74; sub_14000B694; sub_14000B6FC; sub_14000B83C; IoCreateDevice; IoCreateSymbolicLink; IoDeleteDevice 安装 IRP create/close/write、unload 并初始化命令表/回调
dispatch_create xh_irp_create 0xB138 0xB175 61 0 sub_140007614; IofCompleteRequest IRP_MJ_CREATE
dispatch_close xh_irp_close 0xB0D0 0xB135 101 0 sub_140006850; sub_140006AC4; sub_14000733C; PsGetCurrentProcessId; IofCompleteRequest; ZwUnloadDriver IRP_MJ_CLOSE
dispatch_write xh_irp_write 0xB178 0xB31A 418 0 xh_dispatch_opcode; xh_unmap_caller_buffer; xh_map_caller_buffer_write; xh_validate_write_request; __security_check_cookie; IofCompleteRequest IRP_MJ_WRITE:校验请求、分发 opcode、复制响应
driver_unload xh_driver_unload 0xB4F4 0xB568 116 0 nullsub_1; sub_140003AA0; sub_140004754; sub_1400072C8; sub_140009C24; sub_14000B6FC; sub_14000B820; IoDeleteDevice; IoDeleteSymbolicLink 驱动卸载清理
dispatch_write_owner xh_validate_write_request 0xB568 0xB5C6 94 1 验证 0x270 请求与 magic 0x345821AB
dispatch_table_initializer xh_init_dispatch_table 0x2A3C 0x2E85 1097 1 sub_14000DC80 构建 44×0x10 运行时 handler 表
dispatch_table_aux_initializer xh_dispatch_opcode 0x3764 0x37AA 70 1 按 request+0x0C 线性查找并间接调用 handler
cmd_set_pid_flags xh_cmd_775_set_pid_flags 0x1DD8 0x1E14 60 0 xh_set_pid_flags_low16 opcode 775 wrapper
cmd_register_self xh_cmd_777_register_self 0x3498 0x3508 112 0 sub_140006418; xh_register_pid_slot; sub_140006C50; PsGetCurrentProcessId opcode 777 wrapper
cmd_open_process xh_cmd_785_open_process 0x30B8 0x313E 134 0 xh_auth_gate_flags_80000008; xh_open_process_object_handle opcode 785 wrapper
cmd_read_process_memory xh_cmd_787_read_process_memory 0x3278 0x3397 287 0 xh_auth_gate_flags_80000008; sub_140005F24; xh_reference_handle_fallback_access; xh_unmap_caller_buffer; xh_map_caller_buffer_write; xh_copy_from_process; IoGetCurrentProcess; ObfDereferenceObject opcode 787 wrapper
cmd_read_kernel_va xh_cmd_788_read_kernel_va 0x31C4 0x3275 177 0 xh_auth_gate_flags_80000008; xh_unmap_caller_buffer; xh_map_caller_buffer_write; xh_copy_from_kernel_va opcode 788 wrapper
cmd_close_remote_handle xh_cmd_800_close_remote_handle 0x1FF8 0x20D7 223 0 xh_set_handle_attributes_and_close; xh_reference_handle_fallback_access; __security_check_cookie; ObfDereferenceObject; KeStackAttachProcess; KeUnstackDetachProcess opcode 800 wrapper
cmd_init_thread_pointers xh_cmd_801_803_init_thread_pointers 0x3658 0x3691 57 0 xh_resolve_win32k_thread_routines_thunk opcode 801/803 wrapper
cmd_inject_thread_legacy xh_cmd_815_inject_thread_legacy 0x1E54 0x1E91 61 0 xh_inject_legacy_resolve_target opcode 815 wrapper
cmd_inject_rwx xh_cmd_820_inject_rwx 0x1E94 0x1ED1 61 0 xh_inject_rwx_resolve_target opcode 820 wrapper
auth_gate xh_auth_gate_flags_80000008 0x5E84 0x5EA6 34 3 xh_lookup_pid_flags; PsGetCurrentProcessId 要求当前 PID flags 满足 0x80000008
auth_flags_lookup xh_lookup_pid_flags 0x6204 0x625B 87 18 ExAcquireFastMutex; ExReleaseFastMutex 按 PID 查询 flags 链
set_pid_flags_impl xh_set_pid_flags_low16 0x5F98 0x5FC6 46 7 xh_lookup_pid_flags 保留高 16 位并替换低 16 位
set_pid_flags_store xh_store_pid_flags 0x5FC8 0x60F2 298 3 sub_14000CEE0; ExAcquireFastMutex; ExReleaseFastMutex 新建或更新 PID flags 节点
register_self_impl xh_register_pid_slot 0x6A10 0x6AC1 177 1 ExAcquireFastMutex; ExReleaseFastMutex 写入最多 100 项 PID slot
open_process_impl xh_open_process_object_handle 0x87F4 0x8922 302 1 sub_14000C2EC; ObOpenObjectByPointer; ObfDereferenceObject; ProbeForRead; ProbeForWrite; PsLookupProcessThreadByCid 通过 ObOpenObjectByPointer 获得进程对象句柄
map_caller_buffer xh_map_caller_buffer_write 0x81D0 0x81DE 14 17 映射调用者写响应缓冲区
unmap_caller_buffer xh_unmap_caller_buffer 0x7A74 0x7AC0 76 21 MmUnlockPages; MmUnmapLockedPages; IoFreeMdl 解除调用者缓冲区映射
read_process_memory_impl xh_copy_from_process 0x8924 0x8A0B 231 1 __security_check_cookie; KeStackAttachProcess; KeUnstackDetachProcess 附加目标进程并复制用户地址
read_kernel_va_impl xh_copy_from_kernel_va 0x84AC 0x8522 118 2 MmIsAddressValid 逐字节验证并读取内核虚拟地址
close_remote_handle_impl xh_reference_handle_fallback_access 0x7874 0x79B6 322 9 __security_check_cookie; ObReferenceObjectByHandle 引用远程句柄;不是最终关闭函数
set_handle_attributes_and_close xh_set_handle_attributes_and_close 0x3A1C 0x3A5E 66 1 ZwClose; ObSetHandleAttributes 设置句柄属性并 ZwClose
init_thread_pointers_impl xh_resolve_win32k_thread_routines 0x9C5C 0x9FCE 882 1 sub_14000593C; sub_140005A1C; sub_140005BE4; sub_140007B6C; sub_140007FB0; sub_140008F38; sub_1400093D0; sub_140009680; sub_140009720; RtlInitUnicodeString; MmGetSystemRoutineAddress 解析 win32k/线程相关例程
inject_thread_legacy_impl xh_inject_legacy_resolve_target 0xA028 0xA1AA 386 2 xh_reference_handle_fallback_access; xh_inject_legacy_execute; sub_14000C300; sub_14000C6B4; ObfDereferenceObject; PsLookupProcessByProcessId; PsLookupThreadByThreadId; IoThreadToProcess; ObfReferenceObject legacy 路径目标解析
inject_thread_target_impl xh_inject_legacy_execute 0xA7A4 0xAB34 912 5 sub_1400077EC; sub_1400079B8; sub_140008A0C; sub_140008BC0; sub_140009208; sub_140009A70; sub_14000B828; __security_check_cookie; ZwClose; ObOpenObjectByPointer; ZwAllocateVirtualMemory; ZwFreeVirtualMemory; ZwWaitForSingleObject; ExFreePoolWithTag legacy 路径执行端
inject_rwx_impl xh_inject_rwx_resolve_target 0xA1AC 0xA32E 386 1 xh_reference_handle_fallback_access; xh_inject_rwx_execute; sub_14000C300; sub_14000C6B4; ObfDereferenceObject; PsLookupProcessByProcessId; PsLookupThreadByThreadId; IoThreadToProcess; ObfReferenceObject RWX 路径目标解析
inject_rwx_target_impl xh_inject_rwx_execute 0xA330 0xA6C5 917 5 sub_1400077EC; sub_1400079B8; sub_140008A0C; sub_140008AF0; sub_14000904C; sub_140009A70; sub_14000B828; __security_check_cookie; ZwClose; ObOpenObjectByPointer; ZwAllocateVirtualMemory; ZwFreeVirtualMemory; ZwWaitForSingleObject; ExFreePoolWithTag RWX 路径执行端
init_thread_pointers_thunk xh_resolve_win32k_thread_routines_thunk 0xB0C8 0xB0CD 5 1 线程例程解析 thunk

10.2 xhunter 44 个 opcode handler

opcode table entry handler IDA name end size semantic x3 wrapper evidence
774 0x21710 0x1F54 xh_cmd_774_unknown 0x1F77 35 handshake_ack 0x2F07C derived-cross-callsite
775 0x21720 0x1DD8 xh_cmd_775_set_pid_flags 0x1E14 60 set_pid_flags local IDA + pinned-source cross-check
776 0x21730 0x3598 xh_cmd_776_unknown 0x35D1 57 Unknown handler structure only
777 0x21740 0x3498 xh_cmd_777_register_self 0x3508 112 register_self local IDA + pinned-source cross-check
778 0x21750 0x3708 xh_cmd_778_unknown 0x3761 89 Unknown handler structure only
779 0x21760 0x3398 xh_cmd_779_unknown 0x3456 190 Unknown handler structure only
790 0x21770 0x3508 xh_cmd_790_unknown 0x3597 143 Unknown handler structure only
782 0x21780 0x35D4 xh_cmd_782_unknown 0x3619 69 Unknown handler structure only
783 0x21790 0x26C8 xh_cmd_783_unknown 0x2701 57 Unknown handler structure only
785 0x217A0 0x30B8 xh_cmd_785_open_process 0x313E 134 open_process 0x2FA00 local IDA + pinned-source cross-check
786 0x217B0 0x22F8 xh_cmd_786_unknown 0x2331 57 Unknown handler structure only
787 0x217C0 0x3278 xh_cmd_787_read_process_memory 0x3397 287 read_process_memory 0x2FF5C local IDA + pinned-source cross-check
788 0x217D0 0x31C4 xh_cmd_788_read_kernel_va 0x3275 177 read_kernel_va 0x30044 local IDA + pinned-source cross-check
789 0x217E0 0x2180 xh_cmd_789_unknown 0x21BD 61 query_driver_module 0x30114 confirmed-driver-pseudocode
791 0x217F0 0x3018 xh_cmd_791_unknown 0x30B7 159 Unknown handler structure only
792 0x21800 0x27F0 xh_cmd_792_unknown 0x2870 128 get_process_peb 0x3035C confirmed-driver-pseudocode
793 0x21810 0x2990 xh_cmd_793_unknown 0x2A10 128 Unknown handler structure only
794 0x21820 0x2730 xh_cmd_794_unknown 0x27EF 191 Unknown handler structure only
796 0x21830 0x21FC xh_cmd_796_unknown 0x22F8 252 file_checksum32 0x30408 confirmed-driver-pseudocode
797 0x21840 0x2954 xh_cmd_797_unknown 0x2990 60 get_pid_flags 0x304D8 confirmed-driver-pseudocode
798 0x21850 0x20D8 xh_cmd_798_unknown 0x2180 168 Unknown handler structure only
799 0x21860 0x2A10 xh_cmd_799_unknown 0x2A3A 42 query_capability_level 0x2F1C8 confirmed-value-derived-domain
800 0x21870 0x1FF8 xh_cmd_800_close_remote_handle 0x20D7 223 close_remote_handle 0x30590 local IDA + pinned-source cross-check
801 0x21880 0x3658 xh_cmd_801_803_init_thread_pointers 0x3691 57 init_thread_pointers 0x3063C local IDA + pinned-source cross-check
803 0x21890 0x3658 xh_cmd_801_803_init_thread_pointers 0x3691 57 Unknown handler structure only
804 0x218A0 0x3694 xh_cmd_804_unknown 0x36D0 60 set_window_display_affinity 0x2F110 confirmed-driver-pseudocode
802 0x218B0 0x36D0 xh_cmd_802_unknown 0x3705 53 Unknown handler structure only
805 0x218C0 0x2870 xh_cmd_805_unknown 0x2954 228 Unknown handler structure only
806 0x218D0 0x2E88 xh_cmd_806_unknown 0x2EAF 39 query_zero_flag 0x30764 confirmed-value-domain-unknown
807 0x218E0 0x1E14 xh_cmd_807_unknown 0x1E51 61 Unknown handler structure only
808 0x218F0 0x1ED4 xh_cmd_808_unknown 0x1F11 61 Unknown handler structure only
811 0x21900 0x1F14 xh_cmd_811_unknown 0x1F51 61 Unknown handler structure only
820 0x21910 0x1E94 xh_cmd_820_inject_rwx 0x1ED1 61 inject_rwx local IDA + pinned-source cross-check
809 0x21920 0x2704 xh_cmd_809_unknown 0x272E 42 Unknown handler structure only
810 0x21930 0x2F1C xh_cmd_810_unknown 0x3018 252 create_file 0x30834 confirmed-driver-pseudocode
812 0x21940 0x21C0 xh_cmd_812_unknown 0x21FA 58 Unknown handler structure only
813 0x21950 0x3458 xh_cmd_813_unknown 0x3497 63 Unknown handler structure only
814 0x21960 0x1F78 xh_cmd_814_unknown 0x1FB2 58 Unknown handler structure only
817 0x21970 0x1FB4 xh_cmd_817_unknown 0x1FF1 61 Unknown handler structure only
815 0x21980 0x1E54 xh_cmd_815_inject_thread_legacy 0x1E91 61 inject_thread_legacy local IDA + pinned-source cross-check
816 0x21990 0x2334 xh_cmd_816_unknown 0x26C7 915 Unknown handler structure only
818 0x219A0 0x3140 xh_cmd_818_unknown 0x31C2 130 Unknown handler structure only
819 0x219B0 0x2EB0 xh_cmd_819_unknown 0x2F19 105 Unknown handler structure only
821 0x219C0 0x361C xh_cmd_821_unknown 0x3655 57 Unknown handler structure only

10.3 x3 语义锚点函数

RVA 名称 作用
0x13748C DllEntryPoint 模块入口;进入 CRT/保护初始化
0x591050 x3_vlizer_entry_bootstrap 读取 .vlizer 描述、调用解码器并进入重定位/redirect
0x591199 x3_lzma_range_decode LZMA86 range decoder
0x591B3D x3_vlizer_relocate_and_redirect_return 修复 qword RVA-to-VA 并建立 redirect
0x2F020 x3_xhunter_request_initializer 写 0x270/magic/nonce/opcode/response pointer
0x8512AC x3_vm_indirect_dispatch jmp qword ptr [rax];VM dispatch 基本块,不强称 ABI 函数
0x18A780 x3_dynamic_api_resolver 三模块五槽 resolver/fallback/cache/cookie/guard
0x18A8D8 x3_GetProcAddress_callsite IAT KERNEL32!GetProcAddress 调用点
0x137CD0 x3_fatal_app_exit PF_FASTFAIL_AVAILABLE 分支与 fatal-app-exit 终止语义
0x137CF7 x3_fastfail_int29 INT 29h,FAST_FAIL_FATAL_APP_EXIT code 7
0x1AD394 x3_lowio_block_initializer 64×0x40 low-I/O block 初始化,+0x28=-1
0x1AD47C x3_lowio_table_publisher 0x2000 上限并发布表/计数
0x19D220 x3_lowio_consumer 索引公式、osfhnd/osfile sentinel 与 stdio 路径
0x19D31C x3_lowio_consumer_chain low-I/O 后续消费者链
0x1920E8 x3_piob_producer 默认512/min3、calloc(count,8)、fallback3、前三 slots

10.4 x3 14 个 driver wrapper

opcode start end name semantic imports status
774 0x2F07C 0x2F110 x3_xh_cmd_774_handshake_ack handshake_ack WriteFile derived-cross-callsite
785 0x2FA00 0x2FAEC x3_xh_cmd_785_open_process open_process CloseHandle;WriteFile cross-checked-local-driver
787 0x2FF5C 0x30044 x3_xh_cmd_787_read_process_memory read_process_memory WriteFile cross-checked-local-driver
788 0x30044 0x30114 x3_xh_cmd_788_read_kernel_va read_kernel_va WriteFile cross-checked-local-driver
789 0x30114 0x30359 x3_xh_cmd_789_query_driver_module query_driver_module WriteFile confirmed-driver-pseudocode
792 0x3035C 0x30408 x3_xh_cmd_792_get_process_peb get_process_peb WriteFile confirmed-driver-pseudocode
796 0x30408 0x304D5 x3_xh_cmd_796_file_checksum32 file_checksum32 WriteFile confirmed-driver-pseudocode
797 0x304D8 0x3058F x3_xh_cmd_797_get_pid_flags get_pid_flags WriteFile confirmed-driver-pseudocode
799 0x2F1C8 0x2F25B x3_xh_cmd_799_query_capability_level query_capability_level WriteFile confirmed-value-derived-domain
800 0x30590 0x3063C x3_xh_cmd_800_close_remote_handle close_remote_handle WriteFile cross-checked-local-driver
801 0x3063C 0x30763 x3_xh_cmd_801_init_thread_pointers init_thread_pointers GetLastError;IsGUIThread;SetLastError;WriteFile cross-checked-local-driver
804 0x2F110 0x2F1C8 x3_xh_cmd_804_set_window_display_affinity set_window_display_affinity SetLastError;WriteFile confirmed-driver-pseudocode
806 0x30764 0x30833 x3_xh_cmd_806_query_zero_flag query_zero_flag SetLastError;WriteFile confirmed-value-domain-unknown
810 0x30834 0x30935 x3_xh_cmd_810_create_file create_file SetLastError;WriteFile confirmed-driver-pseudocode

10.5 NMSSWCore 主要函数与 exports

RVA size name segment 说明
0x11240 25 Init ____ 现有 IDB 已定义函数
0x11380 36 GGSetHwndToGameMon ____ 现有 IDB 已定义函数
0x75D058 391 DllEntryPoint .boot 现有 IDB 已定义函数
0x75D1DF 77 sub_18075D1DF .boot 现有 IDB 已定义函数
ordinal RVA name
1 0x11340 Close
2 0x113D0 GGSCheck
3 0x11380 GGSetHwndToGameMon
4 0x11240 Init
5 0x112A0 Run
6 0xFC20 ScreenCapture
7 0x112F0 SetInfo
8 0x11590 XCProbeEx

10.6 代表性 VM handler

正文仅保留六种 terminal family、一个 even/odd pair 和已观测 selector 链;完整 1,647 行见发布包。

role selector entry stub landing terminal family
major:jbe 0x34A 0x86DD82 0x5B8E25 0x6FD818 jbe 0x6fd939 FF-FB59B262BAA7F0C7
major:je 0x2B 0x86C48A 0x5C039A 0x5CBE75 je 0x5cbea7 FF-758B620FB3E04AE8
major:jne 0x5EB 0x86F28A 0x5BA9D8 0x7FDF68 jne 0x7fe00e FF-646450DFFEC5F6B2
major:ret 0x263 0x86D64A 0x5C0020 0x662074 ret 0 FF-A9BD911B6839BB39
major:jmp-reg 0x620 0x86F432 0x5B79BF 0x765307 jmp rdx FF-DA7306E50723B2B6
major:call-reg 0x38A 0x86DF82 0x5B98A7 0x61AC17 call rax FF-EDFC41E1F44CA33E
pair:even 0x224 0x86D452 0x5B9EED 0x6887E7 je 0x688819 FF-758B620FB3E04AE8
pair:odd 0x225 0x86D45A 0x5B9EF2 0x6992E7 je 0x699315 FF-758B620FB3E04AE8
observed-chain:first 0x1A2 0x86D042 0x5B8E9D 0x5F4BD5 je 0x5f4c1e FF-1BBCE23240C7B401
observed-chain:second 0x465 0x86E65A 0x5F35BA 0x76FF65 jmp r12 FF-C1C431F384D71FC0

10.7 全量函数发布包索引

主报告不再内嵌全函数目录。下列 CSV 随发布包交付,可用 Excel、Python 或数据库直接筛选。

目录 发布包相对路径 行数
xhunter all IDA functions catalogs/xhunter_all_functions.csv 361
x3 all Stage5 IDA functions catalogs/x3_all_functions.csv 12148
NMSSWCore all current IDA functions catalogs/nmsswcore_all_functions.csv 4
xhunter key functions catalogs/xhunter_key_functions_36.csv 36
xhunter opcode handlers catalogs/xhunter_opcode_handlers_44.csv 44
xhunter live callbacks catalogs/xhunter_live_callbacks_9.csv 9
x3 semantic anchors catalogs/x3_semantic_functions_15.csv 15
x3 driver wrappers catalogs/x3_driver_wrappers_14.csv 14
x3 relevant subset catalogs/x3_relevant_functions_192.csv 192
VM handlers catalogs/vm_handlers_1647.csv 1647
feature families catalogs/feature_families_1431.csv 1431
all PE exports catalogs/pe_exports_all.csv 347

11. 内存取证与新 dump 结论

  • kernel dump:PAGEDU64,采集端为 ARK NoOne;
  • 活目标:EPROCESS 0xFFFF99864EAE8080,PID 0x10B40,main base 0x7FF7D2B20000
  • live x3/core bases:0x7FFA6CC00000 / 0x7FFA6D5F0000;kernel bitmap 中用户页缺失;
  • 新 mapped bases:main 0x7FF6F6600000、x3 0x7FFE486B0000、core 0x7FFE3CB90000;属于另一会话;
  • 新三份 .bin 长度均等于 SizeOfImage,是 module image,不含完整 heap/stack/private allocations。

12. 当前已证实、推断与开放项

状态 事项 当前结论
Confirmed driver protocol 44 handlers、request/response、关键 helper、live callbacks
Confirmed x3 mapped identity disk/mapped/IDB 三面绑定,decode/fixup/table/dispatcher
Confirmed handler stability 1647 table RVA + 1647 first blocks 跨会话一致
Confirmed bounded state selector 0x1A2→0x465、context/stack/API boundary
Confirmed CRT state low-I/O/__piob/FILE producers and bounded alternatives
Confirmed NMSSWCore runtime population RWX .vdata 5,323,973 nonzero bytes
Unknown full VM state 缺通用 VPC/register/flags/memory/exception/next-selector
Unknown NMSSWCore .vdata semantics 未恢复 entry、record format、interpreter/decoded blocks
Unknown external heap/stack module dumps 未含 pointee、RSP/RBP 和 private pages
Unknown main full function graph 仅完成 module integrity 与 exports,未建立全量 IDB
Not achieved full devirtualization 结构全覆盖不等于 1647 通用 opcode 语义
Not achieved native/source equivalence 尚无多输入 differential equivalence

13. 下一阶段最小输入与验收

P0 输入是 SevenDeadlySins_Origin-Win64-Shipping.exe-ma full process dump,需包含 image/mapped/private/thread/handle/address-space 信息。
条件式补抓:xcorona_x64.xem 映像,以及 xmag/xnina 实际出现的 private/mapped region。普通图形、音频、DLSS DLL 不进入当前 VM 主线。

下一阶段验收:

  1. dispatcher 连续返回 next dispatch;
  2. 恢复 selector/VPC、VM register/stack/flags;
  3. handler family 提升为可执行 IR;
  4. 建立 selector CFG、loop 和 native-call summaries;
  5. 原 handler 与 IR 在多输入下比较 next selector、context、stack、flags、memory writes 与 exit reason。

14. 证据索引

来源(相对项目根) 内容
XC3_STATIC_ANALYSIS_REPORT.md 综合报告
XC3_STAGE2_IDA_REPORT.md 阶段报告
XC3_STAGE3_X3_REPORT.md 阶段报告
XC3_STAGE4_VLIZER_PROTOCOL_REPORT.md 阶段报告
XC3_STAGE5_VM_STRUCTURE_REPORT.md 阶段报告
XC3_STAGE7_API_SHIM_VM_STATE_REPORT.md 阶段报告
XC3_STAGE8_LOWIO_L3_REPORT.md 阶段报告
XC3_STAGE9_PIOB_HANDLER_FAMILY_REPORT.md 阶段报告
XC3_FINAL_OFFLINE_ANALYSIS_REPORT.md 综合报告
XC3_PROFESSIONAL_RETROSPECTIVE_REPORT.md 综合报告
stage11/kernel-dump-analysis/XC3_KERNEL_DUMP_ANALYSIS.md 内存/新 dump 分析
stage12/new-user-dumps/XC3_STAGE12_NEW_DUMPS_REPORT.md 阶段报告

XC3-Reverse-Engineering-Readable-v1.3.2-20260822.zip

657.4 KB, 下载次数: 7, 下载积分: 吾爱币 -1 CB

免费评分

参与人数 1吾爱币 +1 热心值 +1 收起 理由
ytfh1131 + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

推荐
Hmily 发表于 2026-8-21 17:07
这种AI文章没有任何阅读欲望啊。
推荐
netspirit 发表于 2026-8-21 20:47
现在可以直接用ai逆向分析整个反作弊系统的原理,然后给出完整的原理说明???这么强大了?

其他程序逆向是不是也可以直接把环境设置好,然后说自己要达到什么目的,然后ai直接帮忙逆向?

比如做游戏修改器或者mod,也可以让ai直接分析接口在哪里,怎么逆向?
沙发
 楼主| lengkong 发表于 2026-8-21 04:20 |楼主
有时间我搞个VMware 全给他还原了虚拟机,现在是实在没时间
4#
d939578718 发表于 2026-8-21 19:11
一下写的有点多,没耐心看完呐
6#
 楼主| lengkong 发表于 2026-8-21 21:42 |楼主
netspirit 发表于 2026-8-21 20:47
现在可以直接用ai逆向分析整个反作弊系统的原理,然后给出完整的原理说明???这么强大了?

其他程序逆 ...

环境 skill都要自己搭建和写,还是很麻烦的,搞了我20个小时
7#
 楼主| lengkong 发表于 2026-8-21 21:49 |楼主
Hmily 发表于 2026-8-21 17:07
这种AI文章没有任何阅读欲望啊。

,我有时候觉得。
8#
萌哒哒小乐天 发表于 2026-8-21 23:22
你不妨让AI把文章写的更正常一点。。。看到中间后就完全没有看完的欲望了
9#
 楼主| lengkong 发表于 2026-8-22 00:07 |楼主
萌哒哒小乐天 发表于 2026-8-21 23:22
你不妨让AI把文章写的更正常一点。。。看到中间后就完全没有看完的欲望了

换源中,可能要等等
10#
shumengzu6 发表于 2026-8-22 10:11
看着好厉害,进来学习一下
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - 52pojie.cn ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2026-8-23 08:04

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表