2025虚幻游戏逆向工程解包尝试

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 资源解包流程](https://zhuanlan.zhihu.com/p/1887810661431636685):这个就是可以用EXE文件打开,然后我在这篇文章去找下载地址:https://cs.rin.ru/forum/viewtopic.php?f=10\&t=100672 然后发现是个论坛,里面用游戏的AES Key。好家伙。也就是AES_finder可以不用下载。 我安装VS后,点sln文件结果报错。 ![img](https://i-blog.csdnimg.cn/img_convert/8dc44f9bacf7fddbe2ab9849e3686293.png) 我通过\[黑神话悟空解包教程[模组制作序章\]_游戏热门视频](https://www.bilibili.com/video/BV1aQWnewEGR/?vd_source=9d570bb45159a28b81e40775fbcf5840)下载到了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 - 全球开发者的开源社区,开源代码托管平台](https://gitcode.com/gh_mirrors/un/UnrealMappingsDumper) > > 3下载[Memcury](https://github.com/kem0x/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 - 全球开发者的开源社区,开源代码托管平台](https://gitcode.com/gh_mirrors/un/UnrealMappingsDumper) 但是我下载了这两个不知道怎么用。用两个疑问:1DLL_injector加载的dll是在哪,是哪个dll;2UE Mapping Dumper怎么使用。 搜攻略说是用VS打开SLN文件。 我搜了一下如何使用:[UnrealMappingsDumper 教程](https://blog.csdn.net/gitblog_00845/article/details/142242653) 说用VS打开运行就行,结果 ![img](https://i-blog.csdnimg.cn/img_convert/4af9790a39ef402aad0ee4d5233d8fbc.png) 我分析是因为放在桌面的原因,于是我就把这个文件夹放到游戏目录中,结果还是不行,于是我看日志: ![img](https://i-blog.csdnimg.cn/img_convert/3072b9b98e68eda8417518572963e229.png) 然后就一个一个找问题:[解决 VS 无法打开包括文件: "XXX.h": No such file or directory问题](https://blog.csdn.net/weixin_45738823/article/details/108091959) 然后我在文件夹没找到这个文件。然后我回头看Gitee上的这个文件夹,然后发现是个链接,的确没这个文件,怪不得没效果。 通过一些方法把https://github.com/kem0x/Memcury下载下来,18KB 然后运行,报错 ![img](https://i-blog.csdnimg.cn/img_convert/42f2873a486957ddf94e67659c6bd1d4.png) 不过好的一点是出现了UnrealMappingsDumper.dll。 我分析这个报错的缘由,在这篇文章找到了答案:[在visual studio用动态链接库创建的在运行的时候显示说不是win32的程序这是什么原因我的平台属性设置的是64的操作系统也是64的_微软技术-CSDN问答](https://ask.csdn.net/questions/8128863) > 动态库是无法运行的,应用程序将在需要时加载动态库。你需要创建exe程序来调用DLL。 我猜测这也是用到DLL_injector的原因。但是为啥要绕这么一大圈搞个UnrealMappingsDumper.dll。直接把UnrealMappingsDumper.dll放出来不就行,难道是和部署环境相关。 然后就使用DLL_injector。但是点击没啥用。 ![img](https://i-blog.csdnimg.cn/img_convert/411a48d7da595b01daff417d48606006.png) 然后我又发现我下载的文件有问题。从GitHub下载后。 ![img](https://i-blog.csdnimg.cn/img_convert/a6de05600827516e3bb7df52e00de646.png) 运行又出问题。 然后我想是不是要运行游戏后再点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 - 全球开发者的开源社区,开源代码托管平台](https://gitcode.com/gh_mirrors/fm/FModel) 看了一下使用,要用VS。 然后看了这个:[使用FModel提取游戏资产-CSDN博客](https://blog.csdn.net/weixin_44727495/article/details/140320886#:) 发现官网下载的 FModel是exe文件。 ![img](https://i-blog.csdnimg.cn/img_convert/d3cf0377eed95fceb3c3503f167e0fe6.png) 右上角下载的是EXE文件,左下方下载的是源文件。 用EXE文件的时候要把EXE放到游戏目录运行,不然会报错。下面是打开的情况。要在最下面那个目录那选择游戏目录,然后才能检测到游戏。 ![img](https://i-blog.csdnimg.cn/img_convert/e916e0843894821f9d580f03724fe2fb.jpeg) 微信截图翻译 > 然后我就去看这个教程:\[黑神话悟空解包教程[模组制作序章\]_游戏热门视频](https://www.bilibili.com/video/BV1aQWnewEGR/?vd_source=9d570bb45159a28b81e40775fbcf5840) 我通过这个下载到了 搜了一下[如何用vScode打开.sln后缀文件](https://worktile.com/kb/ask/555698.html):[Visual Studio Code - Code Editing. Redefined](https://code.visualstudio.com/) 这个下了老半天才3M,然后到官网下载:[下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux](https://visualstudio.microsoft.com/zh-hans/downloads/) 又找到一篇文章:[黑神话:悟空 解包教程 \| XiaoCai's Blog](https://blog.ixiaocai.net/posts/How-To-Disassemble-Black-WoKong-UE-Assets/) 还是失败了。浪费半小时。 ![img](https://i-blog.csdnimg.cn/img_convert/adff9c2b8d6d5343069e972f7b639c6d.png) 还是报错: ![img](https://i-blog.csdnimg.cn/img_convert/74a213941d7996b2bcbf8bb64eda854c.png) 回头不查看,直接导出模型到blender或者3dsmax中看。 #### 关于游戏打包 官方文档:[打包你的项目 \| 虚幻引擎 5.6 文档 \| Epic Developer Community (epicgames.com)](https://dev.epicgames.com/documentation/zh-cn/unreal-engine/packaging-your-project) > **打包** 是将**虚幻引擎** 项目转换为独立可执行文件(.exe)或应用程序的过程。 **Pak**(.pak)文件是虚幻引擎用于存储烘焙内容的归档文件格式。 打包细节:[UE5 Pak学习与应用(四) 基于虚幻引擎的Pak制作工具 - 知乎 (zhihu.com)](https://zhuanlan.zhihu.com/p/683093343) > 其实主要变换点在于: 工程 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博客](https://blog.csdn.net/weixin_44546865/article/details/120175519) 可以参考思路 [虚幻4游戏解包导出及Mod制作指南](https://zhuanlan.zhihu.com/p/7144045084) 这个有点复杂。 [虚幻引擎自带工具解Pak包_哔哩哔哩_bilibili](https://www.bilibili.com/video/BV1f8411e7Vd/?vd_source=9d570bb45159a28b81e40775fbcf5840) 这个没试过,是个思路。试着用zip解压一下。 ![请添加图片描述](https://i-blog.csdnimg.cn/direct/33501fd9d7864913b527725c450c15a0.png) 导出来了,但是打不开。 ### 结尾 目前暂未成功。 目前还是UE Viewer最简单好用,不要另外配置依赖文件。 > 1UE Viewer下载:[Gildor's Homepage](https://link.zhihu.com/?target=https%3A//www.gildor.org/en/projects/umodel),才2M。 > > 2使用工具 umodel_win32 解包、预览、导出匹诺曹的模型文件 ![img](https://i-blog.csdnimg.cn/img_convert/b63b5d370703877b1af87412ed889c56.png) ![img](https://i-blog.csdnimg.cn/img_convert/2965a4e9714dca627b4af409933e4c89.png) 导出的时候选tool-export options。注意模型选gltf,方便用blender打开。其他的也许,但是要再安装插件。 ![请添加图片描述](https://i-blog.csdnimg.cn/direct/c09afe114f3f401bb7a17699e5901581.png) 这是我导出来的盾兵的模型,不清楚为啥没贴图,在UE viewer中明明有贴图。 ![请添加图片描述](https://i-blog.csdnimg.cn/direct/7684b8d2af4d4804b52fdf1318dccca6.png)