news 2026/3/18 23:27:51

使用调试器调试某UE4手游

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用调试器调试某UE4手游

在刚接触安卓的时候,多么希望有一款像windows上od和x64dbg那样的调试器,但是奈何能接触到的调试器太少了,好在安卓可以编译驱动,能够让我们的程序拥有内核的权限,在runtime的情况下修改内核。于是我便像学习windows调试器那样自建调试体系,制作一款不需要ptrace就能调试程序的调试器。写完基本的调试功能之后,我便寻找了一款海外的ue4手游练练手,简单地找下存储了FNamePool的基址。

首先在ida中找到FNamePool初始化的地方,如下图:

不难猜出s就是申请的FNamePool,而s最后存储到v7中去,而v7最后来源于v2,v2来源于sub_81DB440函数的返回值。

进入到sub_81DB440里边去,如下图:

在sub_81DB440函数里边有一大堆让人眼花缭乱的计算,光看伪代码,难以找出返回值的来源。于是我选择调试这段函数,在调试前观察下返回值的来源,如下图:

最后返回值来源于[x8],而x8来源于[SP,#0xE0+var_A0](SP+0x40处)。我只需要在调试的过程中一步一步观察SP+0x40地址处内存的变化,然后记录下导致SP+0x40处内存发生变化的指令就行了。

首先在函数头下好断点:

在单步调试的过程中,发现在如下图:

在执行完0x64ecf34d638处的str x11,[x10]的指令后,SP+40就发生了变化,看下ida中的伪代码如下:

在调试的过程中这里的循环经历了三次,最后一次是对应了sp+0x40地址处的变化(好在函数体不是很大,调试起来比较轻松,sp+0x40地址处就写了这一次内存),而SP+0x40的值是来源于x10处,在进入循环之后发现x10的值来源于qwrod_E77F6A8,而经历了三次循环,在调试器中发现相当于:

[SP+0x40]=[[[qwrod_E77F6A8]]];而返回值最终为[[SP+0x40]]也就是[[[[qwrod_E77F6A8]]]],最终发现与GNamePool相关联的基地址为libUE4.so+0xE77F6A8。

本人其实是不太会逆向UE4,也不研究外挂,此次调试游戏也只是测试下编写的调试器,如果有错误恳请诸位大佬指正。目前调试器正在开发中。

目前调试支持的功能:

1.设置软件断点。

2.设置硬件断点(不使用linux的perf体系)

3.接管程序异常(信号)。

4.追踪线程创建、死亡、fork事件。

5.单步调试。

6.暂停线程(进程)。

调试器目前不依赖信号,但是只是玩具罢了,很难用,就驱动比较稳定,估计也会遇到难以应付的场景,并且我不一定能够开发完,就当是学习一下linux内核和ARM64一些底层相关的东西了。后续会增加如何设置内存断点和追踪系统调用,考虑开放源代码。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/12 23:16:20

Java全栈工程师的面试实战:从基础到高阶的完整技术演进

Java全栈工程师的面试实战:从基础到高阶的完整技术演进 1. 面试者基本信息 姓名:林浩然 年龄:28岁 学历:硕士 工作年限:5年 工作内容: 负责公司核心业务系统的后端开发,使用Spring Boot和Vue3构…

作者头像 李华
网站建设 2026/3/18 2:39:51

YOLOFuse多GPU训练支持情况说明:分布式训练可行性分析

YOLOFuse多GPU训练支持情况说明:分布式训练可行性分析 在智能安防、自动驾驶和夜间监控等现实场景中,光照条件常常极为恶劣——黑夜、雾霾、烟尘遮挡让传统的可见光摄像头力不从心。这时候,红外(IR)成像的优势就凸显出…

作者头像 李华
网站建设 2026/3/15 23:20:49

YOLOFuse火车站旅客遗失物品识别:智能广播寻物

YOLOFuse火车站旅客遗失物品识别:智能广播寻物 在现代化火车站里,每天都有成千上万的旅客匆匆赶路。嘈杂的人声、闪烁的灯光、频繁进出的人流,构成了一个高度动态且复杂的环境。在这种场景下,一件被遗忘在座椅上的背包&#xff0c…

作者头像 李华
网站建设 2026/3/10 13:34:58

YOLOFuse稻田灌溉管理:土壤湿度与作物长势联合判断

YOLOFuse稻田灌溉管理:土壤湿度与作物长势联合判断 在南方某大型水稻种植基地,清晨的薄雾尚未散去,无人机已开始例行巡田。可见光相机拍下的画面模糊不清,但红外热像仪却清晰捕捉到田块中几处异常高温区域——这些“热斑”正暗示…

作者头像 李华
网站建设 2026/3/12 18:09:58

YOLOFuse罐头食品封口检查:胀罐隐患提前发现

YOLOFuse罐头食品封口检查:胀罐隐患提前发现 在食品生产线上,一个看似不起眼的“鼓起来”的罐头,背后可能隐藏着微生物污染、密封失效甚至食品安全事故的风险。传统质检依赖人工目视或单一视觉系统,在烟雾弥漫、光照不均的车间环…

作者头像 李华
网站建设 2026/3/12 8:04:54

Java Web 协同过滤电影推荐系统系统源码-SpringBoot2+Vue3+MyBatis-Plus+MySQL8.0【含文档】

摘要 随着互联网技术的快速发展和用户需求的多样化,个性化推荐系统已成为提升用户体验的关键技术之一。电影推荐系统通过分析用户的历史行为和偏好,能够为用户提供个性化的电影推荐,从而增强用户粘性和满意度。协同过滤算法作为推荐系统的核心…

作者头像 李华