RenoDX着色器逆向入门:decomp.exe与3Dmigoto如何反编译SM6.0+游戏着色器
RenoDX着色器逆向入门decomp.exe与3Dmigoto如何反编译SM6.0游戏着色器【免费下载链接】renodxRenovation Engine for DirectX Games项目地址: https://gitcode.com/GitHub_Trending/re/renodxRenoDXRenovation Engine for DirectX GamesDirectX 游戏翻新引擎是一套游戏模组工具集替换着色器、注入缓冲、升级交换链、添加叠加层。它的逆向工作流核心就是两个反编译器——decomp.exe负责 Shader Model 6.0 的 HLSL 还原3Dmigoto的cmd_Decompiler.exe负责 SM5.0 及以下。本文带你用最小成本跑通从游戏里拿到着色器 → 反编译成可读 HLSL → 替换回游戏的完整流程。一、为什么着色器逆向需要双反编译器现代游戏运行时使用的着色器是二进制字节码.cso/ DXIL不是源码。不同 Shader Model 需要不同的工具链Shader Model工具说明SM 6.0ps_6_0~ps_6_6decomp.exeRenoDX 自带基于 DirectXShaderCompilerD3DCompiler实现SM 5.0 及以下3Dmigotocmd_Decompiler.exe第三方经典工具仓库最低要求版本1.3.16见 cmake/tool-versions.cmake 分界线就是 DXILSM6 开始微软改用新的 DXIL 字节码格式旧工具看不懂所以 RenoDX 专门写了一个基于 D3DCompiler 的反编译器。RenoDX 之所以能做到通吃是因为它建立在 Reshade 的 add-on 体系上见 README.md无需针对特定游戏 exe 打补丁兼容性极宽。二、decomp.exeSM6.0 着色器反编译decomp.exe是命令行单文件工具入口在 src/decompiler/cli.cpp核心反编译逻辑指令映射、签名解析、lerp/pow 模式识别等在 src/utils/shader_decompiler_dxc.hpp。它的工作分两步反汇编调用 D3DCompiler 把二进制着色器还原成中间指令文本反编译解析指令流、输入/输出签名、cbuffer 与资源绑定表重建接近可读的 HLSL。快速上手3 条命令搞定# 1. 把 .cso 反编译成同目录 .hlsl不指定输出时自动用输入名 decomp.exe shader.cso # 2. 指定输出路径--flatten 把复杂控制流展开为平坦代码更易读 decomp.exe shader.cso output.hlsl --flatten # 3. 批量处理时用 --skip-existing 跳过已反编译的文件 decomp.exe *.cso --skip-existing完整的参数帮助可以直接运行decomp.exe查看用法提示见 cli.cpp 第 23~24 行。--flatten值得单独说DXIL 里常有编译器生成的复杂分支结构展开后代码更原始但更好改逆向圈常用它来确认循环和条件的真实逻辑。三、3Dmigoto老一代着色器的兜底方案SM5.0 及以下的着色器如大量 DX11 老游戏的ps_5_0、cs_5_0用 3Dmigoto 的cmd_Decompiler.exe处理即可。仓库的官方贡献指南 docs/CONTRIBUTING.md 明确列出了它作为环境依赖之一从 3Dmigoto 的 release 页下载工具包把cmd_Decompiler.exe放入.\bin或直接跑 scripts/setup-dev-env.ps1 的-Tools 3dmigoto -Install脚本会自动拉取配置好的版本。工具链版本基准全部集中在 cmake/tool-versions.cmakeDXC、Slang、glslang、3Dmigoto 各一条改版本只动这一个文件。四、着色器文件命名规范一眼看懂逆向产物RenoDX 对反编译产物的命名有严格约定构建系统会自动扫描src/games/下的所有.hlsl见 docs/CONTRIBUTING.md 的Automated configuration一节{名称}_0x{CRC32}.{ps|cs|vs}_{大版本}_{小版本}.hlsl例如 tonemap_0x756E88B2.ps_4_0.hlsltonemap是人为起的名字0x756E88B2是该着色器在游戏中的 CRC32 哈希用于运行时精确匹配ps_4_0是像素着色器 SM4.0。你从 decomp.exe 拿到的文件按此规则改名放进游戏模组目录就能被构建系统识别并编译替换。仓库里几百个游戏模组都是这么组织出来的随便挑一个看结构即可比如 src/games/valheim/ 或 src/games/fallout76/。新建模组可以从模板目录 src/games/generic 复制起步。五、进阶devkit 实时转储不进游戏编辑器想确认游戏当前到底在跑哪个着色器RenoDX 提供devkit游戏内检查插件 mcp_bridge桥接进程构建目标见 docs/DEVKIT_MCP.mddevkit_list_shaders/devkit_get_shader列出并查看帧内着色器devkit_dump_shader把指定着色器转储为二进制交给上面的 decomp.exe 反编译转储目录约定为renodx-dev/dump热替换用renodx-dev/live。官方建议的排查思路是从一帧的末尾往回找最终 blit、UI 合成、场景合成先定位HDR 数据在哪一步丢失再反编译对应的 pass——这套流程在 DEVKIT_MCP.md 第 91~108 行 有完整描述。六、常见问题与技巧Q1反编译出来的代码为什么全是exp2(log2(x)*y)这种怪写法这是编译器优化痕迹。decomp.exe 已内置了常见模式还原如((b-a)*t)a→lerp(a,b,t)映射表可参考 notes.md实现见 shader_decompiler_dxc.hpp 的 OptimizeString。Q2反编译失败或输出为空先确认 DXC 工具链版本达标CMake 配置时会自动检查并警告用 scripts/setup-dev-env.ps1-Update更新即可再确认 Reshade 已正确安装RenoDX 基于其 add-on 系统是硬性依赖。Q3SM6 和 SM5 的转储文件有什么区别转储扩展名按 API 走DirectX 系统一是.csoVulkan 是.spv逻辑见 src/utils/shader_dump.hpp。拿到文件后按版本号选工具即可_6_x找 decomp.exe_5_x及更低找 3Dmigoto。Q4改完之后如何验证把 HLSL 按命名规范放进游戏目录重新构建模组devkit 的devkit_load_live_shaders支持热加载改一行 shader 不用重启游戏——这是 RenoDX 相比传统 mod 开发最大的效率优势。七、小结SM6.0→decomp.exe一行命令出 HLSL--flatten辅助阅读SM5.0-→ 3Dmigotocmd_Decompiler.exesetup-dev-env.ps1可一键装好产物按{名称}_0x{CRC}.{type}_{x}_{y}.hlsl命名即可被构建系统自动接管拿不准目标 pass 时用 devkit mcp_bridge 从帧尾倒查再转储反编译。照着这条链路走从游戏里的一坨二进制到可修改的着色器源码通常只需要半小时。【免费下载链接】renodxRenovation Engine for DirectX Games项目地址: https://gitcode.com/GitHub_Trending/re/renodx创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

DanaBot银行木马深度剖析:架构、攻击链与防御实战

DanaBot银行木马深度剖析:架构、攻击链与防御实战

前阵子在处理一批恶意邮件样本时,又看到DanaBot活跃的身影。这玩意儿第一次出现在大众视野是2018年,当时主要盯上大洋洲的银行客户,后来一路扩散到欧洲多国和拉美地区,到现在还在不断变种。作为一类典型的银行木马病毒&#xff0c…

2026/10/25 9:02:53 阅读更多 →
Nixpkgs 的 teTeX / TeX Live 环境钩子:texmf-nix 树与 TEXINPUTS 注入机制解析

Nixpkgs 的 teTeX / TeX Live 环境钩子:texmf-nix 树与 TEXINPUTS 注入机制解析

Nixpkgs 的 teTeX / TeX Live 环境钩子:texmf-nix 树与 TEXINPUTS 注入机制解析 【免费下载链接】nixpkgs Nix Packages collection & NixOS 项目地址: https://gitcode.com/GitHub_Trending/ni/nixpkgs 导读:本文围绕 Nixpkgs 中 tetex-tex-l…

2026/10/24 2:09:36 阅读更多 →
使用 lm-evaluation-harness 评估西班牙语社会偏见:EsBBQ 任务组完整指南

使用 lm-evaluation-harness 评估西班牙语社会偏见:EsBBQ 任务组完整指南

使用 lm-evaluation-harness 评估西班牙语社会偏见:EsBBQ 任务组完整指南 【免费下载链接】lm-evaluation-harness A framework for few-shot evaluation of language models. 项目地址: https://gitcode.com/GitHub_Trending/lm/lm-evaluation-harness 导读…

2026/10/25 22:06:40 阅读更多 →

最新新闻

Electron桌面应用开发实战:从环境搭建到打包发布全流程

Electron桌面应用开发实战:从环境搭建到打包发布全流程

做前端这些年,我大部分时间都在跟浏览器标签页打交道,直到第一次把桌面应用跑起来,才发现原来自己一直被限制在地址栏和刷新按钮围起来的框框里。Electron这个词,最开始是在某段时间频繁出现在同事的讨论里,一个用HTML…

2026/11/9 14:01:10 阅读更多 →
滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

滑盖智能锁T109深度解析:结构原理、安装调试与故障排查

简介:亚太天能T109滑盖智能锁产品说明书是一份PDF格式的官方技术文档,主要面向智能锁安装人员、终端用户及售后维护者,帮助快速掌握产品安装、配置与常见故障处理。全包仅1个PDF文件,大小4.37MB,内容结构清晰&#xff…

2026/11/9 14:56:39 阅读更多 →
PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

PMSM弱磁控制原理与Simulink建模:高速AGV驱动系统设计指南

上个月我在调试一台高速AGV的驱动系统,整车要求空载跑到8m/s,电机转速已经拉到额定点,驱动器的输出电压也顶到了母线电压极限附近。再往上踩速度指令,转速纹丝不动,三相电流反而开始震荡。那会儿我的第一反应就是&…

2026/11/9 1:59:56 阅读更多 →
C++核心知识点:从内存管理到STL的实战指南

C++核心知识点:从内存管理到STL的实战指南

C 这门语言我前前后后折腾了十几年,用它写过嵌入式驱动、做过游戏服务端,也搭过基础组件库。每次看到新人一头扎进"C 核心知识点"这个搜索词,我其实挺感慨的——这门语言的难点从来不是语法多,而是知识点之间的耦合太深…

2026/11/9 14:01:10 阅读更多 →
T109滑盖智能锁怎么装?安装调试与故障排查全攻略

T109滑盖智能锁怎么装?安装调试与故障排查全攻略

简介:亚太天能T109滑盖智能锁产品说明书以PDF格式发布,适合智能锁用户、安装人员与售后维修人员阅读。内容围绕T109系列指纹密码刷卡锁展开,先介绍前面板、后面板、锁体、机械钥匙、电池盒盖等部件名称与功能,再给出完整安装步骤&…

2026/11/9 7:45:06 阅读更多 →
LLM知识降熵:从信息垄断到理解权下放

LLM知识降熵:从信息垄断到理解权下放

你有没有过这种经历:翻开源码注释、论文摘要或者一份专业报告,每个字都认识,连在一起却像天书。想找人聊聊,身边要么没人懂,要么懂的懒得跟你解释。后来我试着把同一段内容丢给一个大语言模型,几秒钟之后&a…

2026/11/9 14:01:11 阅读更多 →

日新闻

周新闻

月新闻