本帖最后由 罚款小猴子 于 2022-10-10 19:59 编辑
UE4的逆向以及功能调用一直以来是一个让人头疼的问题 比如: 国内外很多视频上讲得不清不楚 SDK的dump搞不定 SDK 拿着看不懂 Github上给的调用方法还都是C++的代码 易语言没办法直接使用 可以说 从0到完完全全对UE4引擎的游戏功能实现或者数据定位还必须靠着老方法 CE+X64DBG一步步找
所以,俺花了大量时间,研究了UE4的结构,并将代码一步步给增添、修改到E上面,使得E也可以对UE4 SDK中的 Function进行调用 CLASS进行定位
接下来我以一个例子来说明一下 以棒子国最近上线的一款UE4游戏为例 ,我在CE中搜索到的血量的临时地址上打下写入断
断点断在了图片所示的位置,那么RCX+C8这个地址也就是我们要向上追的地址。OK 那么我们 CTRL+F9,然后F8向上返回一层
这里我们追到了rcx是来自于[rcx+38]的。按照惯性思维和以往的办法我们是应该写好到这个位置的偏移表达式 并且向上一层前进 去追到一个基地址来源 然后写出表达式得到结果。 但是!!!敲重点了!!! 我把此处的rcx的值拿出来,0x226EAC8C700 然后丢到工具里去对应
PS:这个工具就是调用了UE4的FindObject,示例的源码我会贴在后面
到此,我的血量数据定位工作就已经完成了。
什么?可能你会说 啥?这就完了? 那要获取这个血量数据的该咋办呢? 莫慌莫慌。
我把我的调用代码贴在了这里 UE4引擎的核心 也就是这个FindObject 使用它便可以很高效的获取到对象地址
伪表达式来源我们根据DBG里追了一层可以得出 [[XMyCharacterInfoManager ....]+38]+C8 这样...我们就实现了对一个数据的定位,或者说是这个类下面成员的定位
以上,只是我对传统方法的一个延伸,但是我们还有木有不打开DBG就能搞出这个数据的办法嘞?答案肯定是有的
方法二:我们打开我们的SDK 正常来讲 playerinfo characterinfo 这些关键词是可以快速定位到我们需要的类的 但是,很不幸...这个游戏的dump 因为种种原因(DUMP工具版本 UE版本等等原因)
这个管理器下面空空如也....不过 没关系 我还是手动还原给大家还原一下理想情况 后面的0xC8 0xD8也就是该层的偏移 (实际中间省了+38偏移的一层)
那么遇到了这种dump不完全的情况又该怎么办嘞,这个状况后续再讲。主要是为了向大家介绍 通用E 其实也完完全全能实现对UE4的数据定位 和功能调用
感谢屏幕前帅气的你,花了这么多时间看我写的帖子!
|