2018腾讯游戏安全竞赛题目分析
今年的腾讯游戏安全竞赛就要开始了,但是我对游戏安全这个方向还不太熟悉,因此找了去年的题目来做赛前练习
资格赛题目
标准版
题目一打开长这样:
赛题说明:
1 |
|
可以看出这是一个CrackMe
程序,开始分析。
上图为一神器,可直接通过可视化界面获取到MFC组件的响应函数,神器链接。
如果不使用上面的神器的话,此程序是一个MFC程序,获取输入框的方式有两种GetDlgItem
和GetWindowText
,查看这两个函数的调用,发现在sub_4026F0
中有多处对GetDlgItem
的调用,因此分析这个函数,IDA对此函数生成的主要伪C代码如下:
1 |
|
可以看出这是程序的主流程。下面就一步一步分析此函数:
1 |
|
以上步骤完成了基本的数据获取、校验操作,其中有一个主要的校验函数sub_405510
,下面来重点分析这个函数:
当返回值v13
为True
时才能注册成功,因此我们需要关注使v13
为True
的函数。
1 |
|
首先我们查看 sub_404F00
函数,同样按照逆向思维,寻找使返回值为True的条件。此函数中有如下几个关键片段:
1 |
|
将UserName
中的小写字母转换为大写:
1 |
|
1 |
|
分析到这里我们可以得出关于UserName
的几个信息:
UserName
的长度必须为39
- 存放UserName的数组的元素个数为8
UserName
会被#
分割UserName
由数字和ABCDEF
组成
因此可以得知UserName
的形式为:
xxxx#xxxx#xxxx#xxxx#xxxx#xxxx#xxxx#xxxx
base64:YtTJUVEn0$HI34y#8rsFewxlm+/u5a^2welcomegslab2018zQfghDRSG@di*kABZO6Kq79L&CPWvNop
未完待续… … 📐
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!