使用FModel提取游戏资产
前言
这篇文章仅记录我作为初学者使用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 serialize
at 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文件
使用FModel提取游戏资产的更多相关文章
- (转)unity3D 如何提取游戏资源 (反编译)+代码反编译
原帖:http://bbs.9ria.com/thread-401140-1-1.html 首先感谢 雨松MOMO 的一篇帖子 教我们怎么提取 .ipa 中的游戏资源.教我们初步的破解unity3d资 ...
- Unity 提取游戏资源之ktx转换
http://blog.csdn.net/akof1314/article/details/38022263 从雨松的博文<Unity3D研究院之mac上从.ipa中提取unity3D游戏资源( ...
- 游戏引擎架构 (Jason Gregory 著)
第一部分 基础 第1章 导论 (已看) 第2章 专业工具 (已看) 第3章 游戏软件工程基础 (已看) 第4章 游戏所需的三维数学 (已看) 第二部分 低阶引擎系统 第5章 游戏支持系统 (已看) 第 ...
- Unity 3d游戏逆向及.NET Reflector工具使用介绍
移动平台游戏框架主要有unity 3d和cocos 2d.我们首先得识别游戏使用的框架.识别Unity游戏Android平台的apk包可以直接解压,看是否有./assets/bin/Data/Mana ...
- JavaScript游戏中的面向对象的设计
简介: 从程序角度考虑,许多 JavaScript 都基于循环和大量的 if/else 语句.在本文中,我们可了解一种更聪明的做法 — 在 JavaScript 游戏中使用面向对象来设计.本文将概述原 ...
- 【分享】School Rumble校园迷糊大王PSP姐姐事件+PS2游戏第一,二学期【带VNR翻译教程】
7/22/2014 TUE 为「スクールランブル 姉さん事件です」加入了BANDAI PSP的引擎. 校园迷糊大王PSP姐姐事件 下载地址1:http://www.bego.cc/file/689 ...
- [转] java开源游戏
收藏一下 triplea Triplea是一个开放源码的boardgame.它允许玩家选择各种各样的战略版图游戏(如:轴心国或同盟军).TripleA引擎支持联网对战,支持声音,支持使用XML文 ...
- NGK公链生态所如何保障用户的数字资产隐私安全?
距离NGK生态所正式上线已经没剩下几天时间了,NGK全网算力总量正在持续猛增,NGK日活账户也在大幅度增多.可以看出,币圈的生态建设者们是十分看好NGK生态所的.那么,有这么多的生态建设者涌入NGK生 ...
- 剖析虚幻渲染体系(14)- 延展篇:现代渲染引擎演变史Part 1(萌芽期)
目录 14.1 本篇概述 14.1.1 游戏引擎简介 14.1.2 游戏引擎模块 14.1.3 游戏引擎列表 14.1.3.1 Unreal Engine 14.1.3.2 Unity 14.1.3. ...
- Phaser-游戏之旅
虽然这个小游戏逻辑不是很复杂,但为了熟悉Phaser这个游戏框架的使用方法所以就选择了它. 另外第一次在项目中尝试使用ES6,之后利用babel进行转换. 自动化构建:gulp(其他文件复制和解析) ...
随机推荐
- AIRIOT物联网低代码平台如何配置db-driver驱动?
设备接入能力包括接入驱动类型及接入数据量,性能方面需要考量数据采集的稳定性和驱动的丰富性等多个因素.用户在选择物联网平台时,往往存在一些误区,比如很关注平台支持的驱动数量,越多越好.市场上确有支持上千 ...
- kubernetes 之dashboard
部署 kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.5.0/aio/deploy/recomme ...
- Pytorch:利用torch.nn.Modules.parameters修改模型参数
1. 关于parameters()方法 Pytorch中继承了torch.nn.Module的模型类具有named_parameters()/parameters()方法,这两个方法都会返回一个用于迭 ...
- 从需求角度介绍PasteSpider(K8S平替部署工具适合于任何开发语言)
你是否被K8S的强大而吸引,我相信一部分人是被那复杂的配置和各种专业知识而劝退,应该还有一部分人是因为K8S太吃资源而放手! 这里介绍一款平替工具PasteSpider,PasteSpider是一款使 ...
- linux 自定义程序开机自启
实现开机自启常见的有两种方法: /etc/init.d/下编写脚本命令(有些机子会有问题,比较麻烦) 利用定时任务crontab 本文介绍crontab现实程序开机自启 编写执行脚本run.sh #! ...
- pwn杂项之linux命令执行
通常pwn题目,时常会考到对Linux命令的一些使用,比如当cat被禁用的时候,可以使用tac,或者别的命令代替 下面是buu上的应该题目,考察的就是对liunx命令的理解,以及对程序的分析. 题目地 ...
- c#获取开机时间
public static DateTime OpenCom() { TimeSpan t = TimeSpan.FromMilliseconds(System.Environment.TickCou ...
- (三)Redis 线程与IO模型
1.Redis 单线程 通常说 Redis 是单线程,主要是指 Redis 的网络 IO 和键值对读写是由一个线程来完成的,其他功能,比如持久化.异步删除.集群数据同步等,是由额外的线程执行的,所以严 ...
- react祖先与子孙多层传值
先做数据源store.js文件 // 状态 store 统一数据源 import React, { createContext } from 'react' // Provider 发布消息 // C ...
- elementUI slider组件,带范围选择实现双向绑定
网上查过很多相关文章都没有一章是写element ui滑块带范围实现双向绑定 二个滑块二头的数据怎么得到 我的需求是做个时间轴要滑动选择不同的时间 开始很难做最后一点一点摸索得出的结论 好在写出来了先 ...