一身白 发表于 2022-2-6 14:50

UE4 游戏Dump 教程

对UE4 引擎进行分析

看到网上很少UE4资料(其实外网已经很多了),查阅了一些资料都是卖课程,看见好几套教程都在教逆向 BattleRoyaleTrainer 这个单机游戏,手法也都是一样的用CE
一直扫一直筛选,这虽然这是最简单暴力的方法, 个人认为也是最笨的~如果想彻底研究透 UE4 的SDK Dump 需要付出很多时间去研究。这种无脑用CE扫只会让你原地踏步
而且复杂点的游戏你也不一定能扫出来

既然这么多教程用BattleRoyaleTrainer来示范,我也用BattleRoyaleTrainer来测试,这次教大家如何dump Gname和Object

一、UE4是开源的 GitHub有项目,必须要学会结合项目来进行分析而且很多代码都需要使用到
https://github.com/EpicGames

二、知道两个重要的结构
    UE4中有两个重要结构:Gname 和 Object 简单来说
    Gname :是保存着UE4整个世界对象的名字
    Object:是保存着世界的对象地址

#!!! 怎么查阅UE4代码 自己去官网看教程
GnameDump 需要参考的代码
https://github.com/EpicGames/UnrealEngine/blob/4.18/Engine/Source/Runtime/Core/Public/UObject/NameTypes.h

ObjectDump需要参考的代码
https://github.com/EpicGames/UnrealEngine/blob/4.18/Engine/Source/Runtime/CoreUObject/Public/UObject/UObjectArray.h

三、开始 Dump Gname

1、首先查看看看Gname   返回的是TNameEntryArray 这个类型 去看看UE4是怎么定义的

一个 TStaticIndirectArrayThreadSafeRead 类模板它中间使用到了 一个FNameEntry的结构

2、接下来去看FNameEntry    源代码 NameTypes.h 中有一个结构    FNameEntry   这个结构存储这全局名称想Dump 就得先了解这个结构

2、看源代码中TStaticIndirectArrayThreadSafeRead 这个类看看UE4 是怎么处理Gname的我们代码中就怎么处理
    其中关键的是 GetItemPtr 这个函数,可以看到它返回类型是ElementType 在源代码在查看一下这个是什么



可以看到它是个类模板   还有看到这个类 TStaticIndirectArrayThreadSafeRead 它有定义了三个变量 Chunks NumElements NumChunks 也需要写到源代码中


写帖子太累了...Object 下次在说吧。文章中还有很多细节没讲到 算是一个入门吧。
注入测试



弟中帝 发表于 2022-2-15 18:44

UE4 dump一直是一个很深奥的话题。楼主用简短的语言和代码却能讲的如此绘声绘色。确实用心良苦,好文章。爱了

一身白 发表于 2022-2-7 23:07

zeroko14 发表于 2022-2-6 18:16
大佬,请问为什么提供的那几个网址打不开了

红色字体已经说了去UE4官网有说关注一下GitHub

菠萝蜜 发表于 2022-2-6 15:13

不玩游戏的我还是感谢你的分享

9tai 发表于 2022-2-6 16:11

学到了学到了

zeroko14 发表于 2022-2-6 18:16

大佬,请问为什么提供的那几个网址打不开了

lsz7575 发表于 2022-2-6 18:22

催更催更```!

老潘老亮MEMZ 发表于 2022-2-6 18:28

学到了,去试试

52jcool 发表于 2022-2-6 19:28

技术好文,收藏

douluodalu 发表于 2022-2-6 22:00

点赞!!谢谢分享!!

歪喇叭 发表于 2022-2-6 23:54

感谢分享

xianyuamiao123 发表于 2022-2-7 09:11

谢谢楼主分享{:1_893:}
页: [1] 2 3 4 5
查看完整版本: UE4 游戏Dump 教程