- 前言
- FModel简介
- FModel安装
- FModel使用
- 初次使用
- 资产预览
- 资产导出
- 附录
- dumper
- Dumper-7生成usmap文件
- 向游戏中注入dll
前言
这篇文章仅记录我作为初学者使用FModel工具提取某款游戏模型的过程。
FModel简介
FModel是一个开源软件,可以用于查看和提取UE4-5项目中的资产。它支持从.pak
和.uasset
文件中提取内容,如3D模型,纹理,音频等。
FModel安装
首先进入FModel官网,下载最新的发布版本。
下载后是一个压缩包,直接解压然后打开exe文件即可。
FModel还需要依赖.NET
,如果你的系统中没有,则会提示你安装:
安装好.NET
之后,重新打开FModel.exe
,此时软件可以正常打开。
FModel使用
初次使用
①软件初次打开会弹出这个界面:
这里可以随便设置,之后进入软件还可以更改。
②点击ok进入软件
③设置填写AES key
这里填写你要解包的游戏对应的AES key
④设置选择UE版本和填写游戏路径
⑤解包
全选(我在使用时是这样,可能会因游戏的不同而不一样)然后load
然后就会自动跳到Folder下,此时我们就可以随便选择一个资产双击进行查看
注意:
如果你要解包的游戏是使用UE5开发的,那么在解包的时候可能会报错:
[ERR] CUE4Parse.UE4.Exceptions.ParserException: Package has unversioned properties but mapping file is missing, can't serializeat CUE4Parse.UE4.Assets.IoPackage..ctor(FArchive uasset, IoGlobalData globalData, FIoContainerHeader containerHeader, Lazy`1 ubulk, Lazy`1 uptnl, IFileProvider provider, TypeMappings mappings)
解决方案我放在附录中。
资产预览
FModel还提供了3D Viewer
,Audio Player
,Image Merger
预览器,方便预览资产中的模型文件,音频文件和图片文件(直接在相应资产上双击即可)
资产导出
在Settings
的Models
中设置资产的导出格式(比如对于mesh
可以设置导出为.glb
,texture
可以设置导出为.png
)
然后在你要导出的资产上右键,选择要导出的类型即可:
附录
dumper
对于UE5+的游戏来说,具有unversioned
属性的包是意料之中的。然而现在有一些解决方案可以让FModel支持对它们的解析。
下面将提供三种dumper,使用它们中的任意一个,可以生成一个映射文件(*.usmap
),文件中是一些结构(schema),其包含游戏类、结构体和枚举。
注意,这种结构(schema)在每次游戏更新之后都会可能会发生变化,因此为了避免错误,应该在每次更新之后重新生成此文件。
三个dumper的链接(阅读它们的README文件来学习使用方法):
https://github.com/Encryqed/Dumper-7
https://github.com/UE4SS-RE/RE-UE4SS
https://github.com/OutTheShade/UnrealMappingsDumper
当成功生成了*.usmap
文件后,你可以在FModel
软件的设置界面将其添加到Mapping File Path
中:
下面我将演示通过使用Dumper-7
生成*.usmap
的过程
Dumper-7生成usmap文件
①将Dumper-7项目git到本地
②使用Visual Studio打开.sln
文件,将Settings.h
中的SDKGenerationPath
修改为你期望的usmap文件保存路径(默认路径为C:/Dumper-7
)
③在x64-Release下编译,生成dll文件
④向目标游戏中注入dll(这一步我将在下面展开介绍)
⑤查看生成的usmap文件
向游戏中注入dll
为了向游戏中注入dll,我们要使用一个工具:DLL Injector
官网链接:DLL Injector官网
使用方法:
①打开DLL Injector
②选择要加载的DLL文件(有两种方法):
- 点击browse按钮然后选择你要加载的dll文件
- 拖拽你的dll文件到DLL injector软件的界面中
③从左侧窗口中选择要注入DLL文件的目标进程
- 可以在输入框中输入进程名称或进程号来筛选条目
- 如果使用筛选功能最后只筛选出一个进程,则此进程会被自动选中
④点击右上方的注入按钮将DLL注入目标进程,结束后会在指定文件夹生成usmap文件