2025虚幻游戏逆向工程解包
前言
在2025游戏模型提取攻略写了,但是想要找的时候又忘了在哪篇文章中写的,所以干脆专门写一下。中间有许多坑。
一坑接一坑。
先说结论:用Umodel(UV Viewer)查看和导出模型。FModel虽然也许,但是部署麻烦,目前还在报错中。
内容
参考这篇文章:
Unreal Engine 5 逆向工程与游戏开发 - 黑神话悟空
1获取黑神话悟空的解包密码 AES:在游戏启动exe目录的key.txt文本中
2从游戏目录中获取Mappings.usmap文件:
使用 DLL_injector 工具: 通过 DLL 注入工具获取游戏内存中的 Mappings.usmap 文件。在github下载或者第三方网站下载:DLL 注入器信息 - WeAreDevs
导入 UE Mapping Dumper:这是一个将为 UE 生成映射文件的项目,几乎所有未来的 UE5 游戏都是必需的,以便从游戏文件中读取数据。去 Githubopen in new window 上下载。或者第三方网站:项目首页 - UnrealMappingsDumper:A dumper that generates mappings (.usmap) files for datamining Unreal Engine games. - GitCode
运行游戏:运行游戏后,打开 DLL injector,加载 UE Mapping Dumper并等待 Mappings.usmap 文件生成。
3导出文件到 FModel FModel是一个强大的工具,可以帮助我们对 UE4/5 的资源文件进行逆向分析。
解包工具:
FModel: https://github.com/4sval/FModel/releasesopen in new window
UE Viewer: https://www.gildor.org/en/projects/umodel
4使用三维软件制作资产
5使用 UE5 引擎替换和打包资产
看起来很简单,但是每一步都有坑。
AES Key
方法一:在游戏目录运行AES_finder.exe。注意不要下载源文件。
方法二:直接搜索想要逆向工程的AES Key
推荐用方法二,不用下载工具,因为下载的AES_finder.exe也不能保障一定能解出AES Key
说可以用AES_finder工具获取。但是没有具体说怎么获取的。然后我就发现直接找文件夹没找到这个key.txt。
AES_finder:我通过这篇文章aes-finder实用工具资源下载说明:实时监控内存,高效查找AES密钥-CSDN博客找到了这个下载地方GitCode - 全球开发者的开源社区,开源代码托管平台,但是这个是要用Visual Studio 2013打开aes-finder.sln解决方案进行编译。而不是像EXE文件一样
[UE] FModel 资源解包流程:这个就是可以用EXE文件打开,然后我在这篇文章去找下载地址:https://cs.rin.ru/forum/viewtopic.php?f=10&t=100672
然后发现是个论坛,里面用游戏的AES Key。好家伙。也就是AES_finder可以不用下载。
我安装VS后,点sln文件结果报错。
我通过[黑神话悟空解包教程模组制作序章]_游戏热门视频下载到了AES_finder.exe。把它放在游戏目录中双击,然后提示要安装Java。38M。
安装Java后,双击AES_finder.exe,马上出现了key.exe。但是可能加壳了,没有出AES Key
Exe is protected. Remove protection before using the tool. More info in the readme. Execution time in seconds: 0 Exe 受保护。在使用工具之前请移除保护。更多信息请参阅自述文件。
我拿匹诺曹测试失败了,不过黑暗之魂还是有效的。
不过我在别的地方发现了匹诺曹的key:0x9140E4AFF909A85DC0F4E6E45CD5012058F39D60C7EE2BAB1DB05D85668EE53B
获取 Mappings.usmap 文件
1下载DLL_injector.exe文件,不要下载源代码,哪个我不会用,你如果会用就随意。[DLL Injector Information - WeAreDevs](https://wearedevs.net/d/DLL Injector)
2下载UE Mapping Dumper文件,GitCode - 全球开发者的开源社区,开源代码托管平台
3下载Memcury,解压到\UnrealMappingsDumper-master\Dependencies\Memcury文件夹。缺少这一步,用VS运行UnrealMappingsDumper.sln会报错,说缺失Memcury.h文件
4下载VS,用VS打开UnrealMappingsDumper.sln文件。然后会报错,但是在\UnrealMappingsDumper-master\x64出现了UnrealMappingsDumper.dll。运行后原本800kb变成了261M,如果多运行几次会更大,一部分是VS环境配置,另一部分是缓存。
5把DLL_injector文件夹放到游戏目录,然后把UnrealMappingsDumper.dll放到\DLL Injector\resources文件夹。然后打开x64_DLL_Injector.exe。文件夹选择UnrealMappingsDumper.dll;运行软件选择DLL Injector.exe;
6打开游戏,然后点x64_DLL_Injector.exe的inject,过十几秒会出现成功的标志。
还是失败,没找出原因。离谱。可能是软件的问题,也可能是游戏的问题。
这也是一个坑,我下载了DLL_injector:[DLL Injector Information - WeAreDevs](https://wearedevs.net/d/DLL Injector)
UE Mapping Dumper:GitCode - 全球开发者的开源社区,开源代码托管平台
但是我下载了这两个不知道怎么用。用两个疑问:1DLL_injector加载的dll是在哪,是哪个dll;2UE Mapping Dumper怎么使用。
搜攻略说是用VS打开SLN文件。
我搜了一下如何使用:UnrealMappingsDumper 教程
说用VS打开运行就行,结果
我分析是因为放在桌面的原因,于是我就把这个文件夹放到游戏目录中,结果还是不行,于是我看日志:
然后就一个一个找问题:解决 VS 无法打开包括文件: “XXX.h”: No such file or directory问题
然后我在文件夹没找到这个文件。然后我回头看Gitee上的这个文件夹,然后发现是个链接,的确没这个文件,怪不得没效果。
通过一些方法把https://github.com/kem0x/Memcury下载下来,18KB
然后运行,报错
不过好的一点是出现了UnrealMappingsDumper.dll。
我分析这个报错的缘由,在这篇文章找到了答案:在visual studio用动态链接库创建的在运行的时候显示说不是win32的程序这是什么原因我的平台属性设置的是64的操作系统也是64的_微软技术-CSDN问答
动态库是无法运行的,应用程序将在需要时加载动态库。你需要创建exe程序来调用DLL。
我猜测这也是用到DLL_injector的原因。但是为啥要绕这么一大圈搞个UnrealMappingsDumper.dll。直接把UnrealMappingsDumper.dll放出来不就行,难道是和部署环境相关。
然后就使用DLL_injector。但是点击没啥用。
然后我又发现我下载的文件有问题。从GitHub下载后。
运行又出问题。
然后我想是不是要运行游戏后再点DLL_injector。回头测试一下。
原文说:运行游戏后,打开 DLL injector, 加载 UE Mapping Dumper并等待 Mappings.usmap 文件生成。
导出文件到 FModel
1必须下载到FModel.exe,不要下载到源文件的,源文件是给大佬更新软件用的。
2必须下载给FModel.exe添加依赖,不然会报错。把这个https://github.com/X1A0CA1/Files/tree/main/BlackMythWukongBlogFiles,解压到Fmodel文件夹/Output/.data/ 。然后重启就可以看到包了
3在Directory - AES输入AES Key。包就可以打开了。
不知道为啥提示映射失败,不能在软件中打开。然后我干脆把资源导出来,用3dsmax查看。
另外就是感觉没用Mappings.usmap 也没啥影响。
这个官网要翻墙才能下载:https://fmodel.app/
然后我在第三方网站下载:https://sourceforge.net/projects/fmodel.mirror/files/latest/download
还有这个也可以下载:GitCode - 全球开发者的开源社区,开源代码托管平台
看了一下使用,要用VS。
然后看了这个:使用FModel提取游戏资产-CSDN博客
发现官网下载的 FModel是exe文件。
右上角下载的是EXE文件,左下方下载的是源文件。
用EXE文件的时候要把EXE放到游戏目录运行,不然会报错。下面是打开的情况。要在最下面那个目录那选择游戏目录,然后才能检测到游戏。
微信截图翻译
然后我就去看这个教程:[黑神话悟空解包教程模组制作序章]_游戏热门视频 我通过这个下载到了 搜了一下如何用vScode打开.sln后缀文件:Visual Studio Code - Code Editing. Redefined 这个下了老半天才3M,然后到官网下载:下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux
又找到一篇文章:黑神话:悟空 解包教程 | XiaoCai’s Blog
还是失败了。浪费半小时。
还是报错:
回头不查看,直接导出模型到blender或者3dsmax中看。
关于游戏打包
官方文档:打包你的项目 | 虚幻引擎 5.6 文档 | Epic Developer Community (epicgames.com)
打包是将虚幻引擎项目转换为独立可执行文件(.exe)或应用程序的过程。 Pak(.pak)文件是虚幻引擎用于存储烘焙内容的归档文件格式。
打包细节:UE5 Pak学习与应用(四) 基于虚幻引擎的Pak制作工具 - 知乎 (zhihu.com)
其实主要变换点在于: 工程 Content: 把 Content 之前的路径去掉,Content 变为 Game.
工程 Plugins: 工程的插件里面的资产也是可以烘焙打包到 Pak 文件中的,但它的路径处理就稍微复杂一点。(1)需要把实际的插件名称前的路径移除掉,即多个插件可能包含在一个 Plugins/folder 中,而这个包裹的文件夹在 Reference 路径中是不需要的。 (2)然后把 Content 路径移除掉… 是的,这里是移除掉,虽然在磁盘上这个目录是实际存在的,但是虚幻引擎的读取使用规则里面不需要。可以看第四条 Engine Plugins 中有个 AnimationSharing 插件,里面存的 AnimsharingRed 资产的处理例子。 Engine Content: 处理手法和工程 Content 差不多,可以理解为是把 Content 之前的路径去掉了,然后 Content 变为 Engine;也可以理解为这里是把 Content 变没了。
Engine Plugins: 处理手法与工程 Plugins 类似,去掉实际插件前的包含目录,去掉 Content. 以上是虚幻引擎在处理资产磁盘路径 到 Reference 路径的变换规则,多对比几次磁盘路径和 Reference 路径就能归纳出来。
.pak文件用解压软件打不开,可以用Fmodel解压出来。
.uasset文件通过虚幻引擎打开:https://blog.csdn.net/qq_39934403/article/details/114832013
UE4游戏提取的通用步骤(21_9_8)_unrealpaktool-CSDN博客
可以参考思路
虚幻4游戏解包导出及Mod制作指南
这个有点复杂。
虚幻引擎自带工具解Pak包_哔哩哔哩_bilibili
这个没试过,是个思路。试着用zip解压一下。
导出来了,但是打不开。
结尾
目前暂未成功。
目前还是UE Viewer最简单好用,不要另外配置依赖文件。
1UE Viewer下载:Gildor’s Homepage,才2M。
2使用工具 umodel_win32 解包、预览、导出匹诺曹的模型文件
导出的时候选tool-export options。注意模型选gltf,方便用blender打开。其他的也许,但是要再安装插件。
这是我导出来的盾兵的模型,不清楚为啥没贴图,在UE viewer中明明有贴图。