fuqiuluo’s blog

记录美好生活

技术分享

UE4 - IDA定位查找GWorld

#Unreal#作弊
type
Post
status
Published
date
May 3, 2026
slug
summary
tags
Unreal
作弊
category
技术分享
icon
password

源码及结构

在ue4的源代码中GWorld是一个全局指针
notion image
这个UWorldProxy类里面保存了一个UWrold的指针,
notion image
其中GWorld全局指针在World.cpp文件被赋值
notion image

定位思路

  1. 根据注释和代码可以发现GWorld在这里初始化,联系上下文,得到字符串“SeamlessTravel FlushLevelStreaming”,使用ida搜索这个字符串即可定位
notion image

字符串搜索法

以下内容转载自https://bbs.kanxue.com/thread-280042.htm
当然这个字符串不是唯一的,你可以根据你的搜索选择你认为更加合适定位的字符串。
原文的图片可能不太好理解,因为没有对应的源代码可以看,这里我贴上了对应的源代码
notion image
notion image
随便把一个UE4游戏拖进IDA中,用我们刚刚找到的字符串进行定位。源码和伪代码对比分析,我们可以得出结论
notion image
此处就是GWorld,只需减去ImageBase就能得到偏移。(ImageBase是什么都不知道,建议重学!)
GWorld是虚幻中一个非常重要的结构,加上SDK拿到的偏移,我们就能定位到其他结构。

ida搜不到字符串的原因

引用文章:https://bbs.kanxue.com/thread-281339-1.htm
在某些情况下,如果使用CE内存搜索或者hex编辑器去查看二进制文件发现存在这些字符串但是无法搜索出来,可能就是因为
  • 字符串在编译的时候被抹去了
  • ida无法识别这个字符串
第二个情况很少见,几乎没有吧,ue4引擎所使用的字符串编码是UTF-16,而这种编码格式ida string表是默认不搜索的,所以自然就搜不到了。
解决方法就是:只需在string表窗口右键点击设置,勾选上Unicode c-style(16 bits)这个选项即可。

非常规点位寻找GWorld

本次测试用例使用的是DFM S3 UE版本为4.24.2
只提供学习与交流用途,禁止用于违法用途!
因为DFM将几个常规点位进行了删除,并把常规点位变成了一个迷惑选项(可以搜索出来但是没什么鸟用)...
notion image
根据源代码,我们搜索该字符串可以得到,并做对照
notion image
这个v337疑似源代码里面的NewWrold,接下来他会被赋值给GWorld!这里贴一下EWorldType的源代码
恰好与源代码里面的对应,这里就是EWorldType::Game (对应i32的值为1) 后面发现v339被赋值给了v162v162给了一个静态的东西,初步怀疑off_17CB3018是所谓的GWorld (v337就是v339,我重新反编译了一下,无伤大雅)
notion image
接下来我们进行验证众所周知GWorld在某处会被多次引用,这个就是一个校验点,
notion image
IDA找到有sub_13751468 / sub_13761140 / sub_137706B0
notion image
研究一下sub_13751468看看,额,有点陌生,让我想想,(似曾相识???
notion image
notion image
没错,sub_13751468就是UWorld::FinishDestroy
sub_13761140 其实就是FSeamlessTravelHandler::Tick() 的东西。
哗哗,完结撒花!☆*: .。. o(≧▽≦)o .。.:*☆
 
Loading...