游戏安全实验室 首页 活动 查看内容

【答案推荐】预赛PC标准版

发布于:2017-8-3 09:58   |    147524次阅读 作者: 管理员    |   原作者: 黄国彬   |   来自: 原创

​感谢PC组黄国彬分享解答过程。


首先通过 GetDlgItem函数定位到按钮事件sub_4026F0

函数中将namekey都转换成string,之后进入到sub_403B70verify)进行校验。



Verify函数主要流程为:

1.首先检验name的格式是否为xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx-xxxx,不是则返回错误。



1.接着对name进行计算,计算结果为464位的整数(int64


2.接着判断是标准还是进阶验证。



1.在标准验证中,calckey1函数将每4字节的key转换成3字节,得到一个16字节的vector,并将其转换为264位的整数(int64


2.最后在check函数中,将name计算的4个整数和key计算的2个整数进行验证。



注册机编写:

1.在最后的check中,其实就是解二元二次方程,最后转化为一元二次方程。方程如下:

 code2 = tmp3 + (tmp2 + tmp1*tmp4)*tmp4 - code1*tmp4;

  (tmp2 - code1)*(tmp2 - code1) == 4 * (tmp3 - code2)*tmp1

  其中tmp1234都是已知的,求code1code2。转化后为解code1的一元二次方程,其中的deta0,则code1只有一个解,化简后

_int64 code1 = 2 * nTmp1*nTmp4 + nTmp2;

_int64 code2 = nTmp3 + (nTmp2 + nTmp1*nTmp4)*nTmp4 - code1*nTmp4;

2.得到code1code2后,需要将其每3个字节转化为4个字节,这里生成一个映射表:



3.注意最后一个字节需要特殊处理,得到的注册码还需要加上字符串==



4.注册成功



分享到:
踩0 赞0

收藏

上一篇:2017游戏安全技术竞赛赛果出炉!

下一篇:【答案推荐】预赛android标准版

相关阅读
最新评论
B Color Image Link Quote Code Smilies

发表评论

top 问题反馈

返回顶部