-
-
[原创]2016腾讯游戏安全技术竞赛 初赛
-
发表于: 2小时前 287
-
作为一名刚高考完的准大学生来说,我也开始对自己今后的人生进行规划,有一些迷茫,但是我总想给自己找些事情做。对于从初中开始接触逆向的我来说,逆向工程师或许是我今后最好的就业职位,因此腾讯的网络安全工程师是我的最大理想,一位双非本科院校学生想进大厂最好的办法莫过于竞赛证明自己的能力,这也就有了我想要从2016的题目开始学习实践,不断丰富自己的能力,在LLM盛行的时代里,我将逆向而行,做题时不再依赖于LLM,并非死板,而是想给自己立下一个挑战。
本wirteup也将成为自己不断进步过程的记录以及自己坚持下去的动力。
这道题既没有极其的复杂算法也没有强壳的保护,对于论坛的各位师傅们来说,她实在算不上一篇值得学习的文章,对于我来说他却也是一种成长。
先看题目要求:
Tencent2016A.exe
先从正向的思路出发:输入用户名+序列号->验证算法->返回结果
对于定位到注册的关键函数中,我有以下思路:
1. 对GetDlgItem下断点
2.
对整个程序的字符串下断点(虽然很麻烦,但确实有效果)
3. 由于程序为MFC也可以对MFC的关键函数下断点
成功的来到了关键的函数页面
来到关键函数的IDA伪代码地方
可以看到L77-L83是一个哈希计算,将我们输入用户名进行哈希计算存放在v42里面接下来我们需要知道v42该如何被使用
这说明用户名必须在[6,20]的范围(无关紧要)
这里就看到了v19[i]=v42[i]/10
对哈希值进行了一个提取并缩放,提取了5个DOWRD,每个除以10
通过动态调试发现用于存放解码操作后的数据v16改变,且v16为v15[1]
则可以确定解码的重要函数位置 L97为字符串复制 L99为解码关键地方
对于解码前的操作进行一个简易分析,对于注册机帮助不大,但是便于我们理解
关键核心解密代码:
冰与火的战歌:Windows内核攻防实战高级班!从零到实战,融合AI与Windows内核攻防全技术栈,打造具备自动化能力的内核开发高手。