学逆向论坛

找回密码
立即注册

只需一步,快速开始

发新帖

13

积分

0

好友

1

主题
发表于 2021-4-26 16:45:16 | 查看: 3378| 回复: 2

相关题目:

  本次大赛官网:https://gslab.qq.com/html/competition/2021/race-final.htm
本人水平有限,这份WP可能存在错误的地方,还望各位前辈指正。
0x00 生成Flag  先用工具关掉ASLR,拖入IDA和x64dbg动静结合进行调试。第一步发现需要构建一个hack.dat文件作为启动配置。

2021腾讯游戏安全技术竞赛决赛PC客户端 WP

2021腾讯游戏安全技术竞赛决赛PC客户端 WP

2021腾讯游戏安全技术竞赛决赛PC客户端 WP

2021腾讯游戏安全技术竞赛决赛PC客户端 WP
  把hack.dat读入的内容放到encode函数进行编码,编码后的内容特定位赋值到ProcName字符串数组,作为后续快照中寻找所需进程的进程名。

2021腾讯游戏安全技术竞赛决赛PC客户端 WP

2021腾讯游戏安全技术竞赛决赛PC客户端 WP

2021腾讯游戏安全技术竞赛决赛PC客户端 WP

2021腾讯游戏安全技术竞赛决赛PC客户端 WP
  在获取目标进程句柄后,先前编码的内容与程序内硬编码进行比较。如果全部相同则进入打印flag分支。

2021腾讯游戏安全技术竞赛决赛PC客户端 WP

2021腾讯游戏安全技术竞赛决赛PC客户端 WP

2021腾讯游戏安全技术竞赛决赛PC客户端 WP

2021腾讯游戏安全技术竞赛决赛PC客户端 WP
  为了后续调试的方便,可以通过硬编码内容和encode函数反推hack.dat文件内容。encode函数大致就是 以0x96和0x56的对称值进行编码,例如:0x32编码后的值就是0x7A

2021腾讯游戏安全技术竞赛决赛PC客户端 WP

2021腾讯游戏安全技术竞赛决赛PC客户端 WP

2021腾讯游戏安全技术竞赛决赛PC客户端 WP

2021腾讯游戏安全技术竞赛决赛PC客户端 WP
0x01 shellcode和Dll  对特定区域编码获得一个大小为0xFA00的PE文件,用Scylla插件 Dump下来,发现是一个Dll程序。

2021腾讯游戏安全技术竞赛决赛PC客户端 WP

2021腾讯游戏安全技术竞赛决赛PC客户端 WP
  获取API地址作为后续shellcode的参数。

2021腾讯游戏安全技术竞赛决赛PC客户端 WP

2021腾讯游戏安全技术竞赛决赛PC客户端 WP
  在游戏进程申请空间并把Dll和shellcode写入,然后创建远程线程执行shellcode。

2021腾讯游戏安全技术竞赛决赛PC客户端 WP

2021腾讯游戏安全技术竞赛决赛PC客户端 WP
  可以在CreateRemoteThreadEx位置下断点观察R9和堆栈即为创建远程线程的起始位置和参数。在游戏进程创建新线程调试shellcode。

2021腾讯游戏安全技术竞赛决赛PC客户端 WP

2021腾讯游戏安全技术竞赛决赛PC客户端 WP
  对dll文件一些操作后通过call rax跳到DllEntryPoint。

2021腾讯游戏安全技术竞赛决赛PC客户端 WP

2021腾讯游戏安全技术竞赛决赛PC客户端 WP
  找到DllMain函数,发现创建了一个无参的线程,接着跟进线程。线程起始地方有一些偏移地址,猜测和后续自瞄的实现有关系。

2021腾讯游戏安全技术竞赛决赛PC客户端 WP

2021腾讯游戏安全技术竞赛决赛PC客户端 WP
  前面都是做一些判断和准备操作最后两个函数才是重点,这两个函数HOOK了游戏原始函数流程,跟进去可以发现在0x7FF766990EA6 和0x7FF7679DEA00进行了HOOK。

2021腾讯游戏安全技术竞赛决赛PC客户端 WP

2021腾讯游戏安全技术竞赛决赛PC客户端 WP

2021腾讯游戏安全技术竞赛决赛PC客户端 WP

2021腾讯游戏安全技术竞赛决赛PC客户端 WP

2021腾讯游戏安全技术竞赛决赛PC客户端 WP

2021腾讯游戏安全技术竞赛决赛PC客户端 WP

2021腾讯游戏安全技术竞赛决赛PC客户端 WP

2021腾讯游戏安全技术竞赛决赛PC客户端 WP
  通过计算偏移可以知道 “当前函数 = DllEntry - 0x5FC”,在IDA中查看该函数。

2021腾讯游戏安全技术竞赛决赛PC客户端 WP

2021腾讯游戏安全技术竞赛决赛PC客户端 WP
0x02 自瞄函数分析  通过x64dbg不断测试,可以发现最后两个call是关键call。

2021腾讯游戏安全技术竞赛决赛PC客户端 WP

2021腾讯游戏安全技术竞赛决赛PC客户端 WP
  接下来直接分析自瞄实现函数,先是判断是否按下鼠标右键。

2021腾讯游戏安全技术竞赛决赛PC客户端 WP

2021腾讯游戏安全技术竞赛决赛PC客户端 WP
  如果按下了鼠标右键则获取敌人基址,进入坐标赋值区域,先通过dll入口中写好的偏移得到自身坐标位置并赋值。

2021腾讯游戏安全技术竞赛决赛PC客户端 WP

2021腾讯游戏安全技术竞赛决赛PC客户端 WP
  然后通过刚才获取的敌人基址得到敌人坐标并赋值。

2021腾讯游戏安全技术竞赛决赛PC客户端 WP

2021腾讯游戏安全技术竞赛决赛PC客户端 WP
  最后计算坐标偏移差,然后转换为偏移角度写入源本准星偏移角的内存区域达到自瞄锁定的效果。

2021腾讯游戏安全技术竞赛决赛PC客户端 WP

2021腾讯游戏安全技术竞赛决赛PC客户端 WP
0x03 总结  第一次接触UE4的游戏逆向学到很多,感谢腾讯游戏安全举办本次比赛。





TQL虽然没看懂,但是见识了


zsbd ~~~


好文,学习一下,多发一些这样的文章。感谢分享


学习了表哥,谢谢


厉害的!外挂都这么做的


谢谢大神分享!大神厉害啦!


温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的认可,还可以获得学币奖励,请尊重他人的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【投诉建议】板块发帖举报。
发表于 2021-4-27 13:59:28
笑死了,是你写得嘛?连人家评论都复制过来了
发表于 2021-4-27 15:10:55
yeyeye123 发表于 2021-4-27 13:59
笑死了,是你写得嘛?连人家评论都复制过来了

楼主应该是一键爬取

小黑屋|手机版|站务邮箱|学逆向论坛 ( 粤ICP备2021023307号 )|网站地图

GMT+8, 2024-4-25 23:44 , Processed in 0.109034 second(s), 52 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表