【2020腾讯游戏安全技术竞赛】PC方向初赛WriteUp

更新时间:2023-06-18 06:24:34 阅读: 评论:0

【2020腾讯游戏安全技术竞赛】PC⽅向初赛WriteUp
很遗憾没有进⼊复赛,不过还是记录⼀下⾃⼰做题的过程叭
PC⽅向的初赛题⽬有2道,⼀道Ring0⼀道Ring3,由于技术不到位 我只做了简单的Ring3,⽆缘复赛QAQ
RIng0的题⽬为:给了⼀个加了vmp壳的驱动,该驱动⽆法正常加载,要求在不修改驱动⽂件的情况下尝试让驱动成功加载,并设法让驱动成功执⾏print
夹心面包
Ring3的题⽬为:给了⼀个扫雷exe和⼀份dmp⽂件,要求通过分析得出外挂修改了程序的哪些地⽅、实现了什么功能
面瘫是什么原因引起的
⾸先拿到于winmine.dmp
尝试windbg加载dmp⽂件,指定image file为exe,输⼊指令 !analyze -v ,分析得到结果,崩溃是由int3指令产⽣(不过这并不重要,重要的是内存转储⽂件中的程序数据)
使⽤exepeinfo查看该exe的pe结构,找到text段偏移和⼤⼩
使⽤winhex打开exe⽂件,将其text段裁剪下来,在这⾥我采⽤了text段偏移的基础上再加0x1d4的偏移,故裁剪后得到的⽂件⼤⼩为
0x3a2c字节
再使⽤winhex打开dmp⽂件,根据特征码搜索定位到text段被映射到的地址偏移,采⽤同样的⽅法将0x3a2c⼤⼩的块裁剪下来
分析⽐对2个裁剪后的⽂件的不同
可以发现,有6个字节的代码被填充为了nop,在IDA上找到该处代码
可以发现,该外挂将inc dword_100579c这条命令跳过了
在Windows消息循环中有⼀个sub_1002fe0函数,这条被nop的命令就在该函数中,该函数会将dword_100579c与999进⾏⽐较,如果⼩于999,则⾃增dword_100579c
根据进⼀步调试,我确定了这是与计时有关的函数,恰好扫雷的时间显⽰框只能容纳3位数(最⾼表⽰数999),⾃增命令被nop后扫雷的计时功能将停⽌,数字不会随着时间递增,时间会永远显⽰为001
控辍保学工作方案>反省自己
第⼆个被修改的指令为push 0,被修改后的代码为jmp short loc_10035b0,也就是直接跳转⾄函数尾
正常的执⾏流程为
⽽修改后代码的第18⾏的call sub_100347c(0)没有被执⾏,该函数的作⽤是点到雷后的逻辑操作,不执⾏该函数相当于点到雷以后游戏并不会结束,依然可以继续扫雷
史秋捡综上所述,该外挂通过patch了2处代码实现了如下功能:
(1)时间锁定为001生物学评价>足球赛
FF 05 9C 57 00 01 → 90 90 90 90 90 90励学篇
(2)点到雷以后游戏并不会结束
6A 00 → EB 1D
不敢说这是正确答案,只能说是我的解题报告,不⾜之处还望各位师傅斧正

本文发布于:2023-06-18 06:24:34,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/1043622.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:时间   函数   修改   驱动   偏移   代码   不会   分析
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图