|
发表于 2021-4-26 16:45:16
|
查看: 5660 |
回复: 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
把hack.dat读入的内容放到encode函数进行编码,编码后的内容特定位赋值到ProcName字符串数组,作为后续快照中寻找所需进程的进程名。
2021腾讯游戏安全技术竞赛决赛PC客户端 WP
2021腾讯游戏安全技术竞赛决赛PC客户端 WP
在获取目标进程句柄后,先前编码的内容与程序内硬编码进行比较。如果全部相同则进入打印flag分支。
2021腾讯游戏安全技术竞赛决赛PC客户端 WP
2021腾讯游戏安全技术竞赛决赛PC客户端 WP
为了后续调试的方便,可以通过硬编码内容和encode函数反推hack.dat文件内容。encode函数大致就是 以0x96和0x56的对称值进行编码,例如:0x32编码后的值就是0x7A
2021腾讯游戏安全技术竞赛决赛PC客户端 WP
2021腾讯游戏安全技术竞赛决赛PC客户端 WP
0x01 shellcode和Dll 对特定区域编码获得一个大小为0xFA00的PE文件,用Scylla插件 Dump下来,发现是一个Dll程序。
2021腾讯游戏安全技术竞赛决赛PC客户端 WP
获取API地址作为后续shellcode的参数。
2021腾讯游戏安全技术竞赛决赛PC客户端 WP
在游戏进程申请空间并把Dll和shellcode写入,然后创建远程线程执行shellcode。
2021腾讯游戏安全技术竞赛决赛PC客户端 WP
可以在CreateRemoteThreadEx位置下断点观察R9和堆栈即为创建远程线程的起始位置和参数。在游戏进程创建新线程调试shellcode。
2021腾讯游戏安全技术竞赛决赛PC客户端 WP
对dll文件一些操作后通过call rax跳到DllEntryPoint。
2021腾讯游戏安全技术竞赛决赛PC客户端 WP
找到DllMain函数,发现创建了一个无参的线程,接着跟进线程。线程起始地方有一些偏移地址,猜测和后续自瞄的实现有关系。
2021腾讯游戏安全技术竞赛决赛PC客户端 WP
前面都是做一些判断和准备操作最后两个函数才是重点,这两个函数HOOK了游戏原始函数流程,跟进去可以发现在0x7FF766990EA6 和0x7FF7679DEA00进行了HOOK。
2021腾讯游戏安全技术竞赛决赛PC客户端 WP
2021腾讯游戏安全技术竞赛决赛PC客户端 WP
2021腾讯游戏安全技术竞赛决赛PC客户端 WP
2021腾讯游戏安全技术竞赛决赛PC客户端 WP
通过计算偏移可以知道 “当前函数 = DllEntry - 0x5FC”,在IDA中查看该函数。
2021腾讯游戏安全技术竞赛决赛PC客户端 WP
0x02 自瞄函数分析 通过x64dbg不断测试,可以发现最后两个call是关键call。
2021腾讯游戏安全技术竞赛决赛PC客户端 WP
接下来直接分析自瞄实现函数,先是判断是否按下鼠标右键。
2021腾讯游戏安全技术竞赛决赛PC客户端 WP
如果按下了鼠标右键则获取敌人基址,进入坐标赋值区域,先通过dll入口中写好的偏移得到自身坐标位置并赋值。
2021腾讯游戏安全技术竞赛决赛PC客户端 WP
然后通过刚才获取的敌人基址得到敌人坐标并赋值。
2021腾讯游戏安全技术竞赛决赛PC客户端 WP
最后计算坐标偏移差,然后转换为偏移角度写入源本准星偏移角的内存区域达到自瞄锁定的效果。
2021腾讯游戏安全技术竞赛决赛PC客户端 WP
0x03 总结 第一次接触UE4的游戏逆向学到很多,感谢腾讯游戏安全举办本次比赛。
TQL虽然没看懂,但是见识了
zsbd ~~~
好文,学习一下,多发一些这样的文章。感谢分享
学习了表哥,谢谢
厉害的!外挂都这么做的
谢谢大神分享!大神厉害啦!
|
温馨提示:
1.如果您喜欢这篇帖子,请给作者点赞评分,点赞会增加帖子的热度,评分会给作者加学币。(评分不会扣掉您的积分,系统每天都会重置您的评分额度)。
2.回复帖子不仅是对作者的认可,还可以获得学币奖励,请尊重他人的劳动成果,拒绝做伸手党!
3.发广告、灌水回复等违规行为一经发现直接禁言,如果本帖内容涉嫌违规,请点击论坛底部的举报反馈按钮,也可以在【 投诉建议】板块发帖举报。
|