小菜鸟分析的一个KeygenMe
KeygenMe截图。这个KM作者@_BaZzi 提供了一组正确key:
“_BaZzi!-#^<\;”
“3162afe70bea3542296292e56bd778510d40f8f37bba7b26997524b9e9b1c1977c91d855fd38de634e4e3f30eab9feee91930f6dffb1afadec5716f26d463”
之后会显示正确窗口,回溯到这里。
然后利用特征码提取,在搜索的方式来到这里。
然后咱们F7进去开始跟,发现这个call是关键。
然后开始F8,开始一些是验证一些地方是否为固定的数。到这里发现了MD5,然后又和注册码进行对比。
还用特征码提取,再搜索,找到所有这样的地方,然后一一修改。这样就跑出了一组key:
用户名:1234567890123
注册码:31164ed61ff7354519666afbeee7722520c9fdfd5082878d99756391d611bbd55eb531d52c771984d25138a199ac905591930b5e40bdc662d4ce91896091f
这样也就成功了。可这时@ _BaZzi 又说有一个浮点数运算其实不相等,但是因为取整数所以被我绕过去了。
没过多久V2也出了,决定开始弄V2。
先找到浮点数运算的地方开始分析,首先它是将用户名的hex数据相加。
然后在这里获取注册码的一个字符。
然后用这个数的平方和刚才用户名的和的百位数字的平方加在一起,9*9+6*6=117。
然后除以2。等于58.5。
最后对58.5开方,得到一个浮点数。
之后看见又拿用户名和的十位数字7+9=16,然后除以2=8。
那个9也是从用户名里来的,是取自于这里。
然后再算用户名的和的十位数字的平方=25。
然后再算从注册码中取出的字符3的平方=9。
然后相加=34。
然后除以2,等于17。
最后在对17开方,又得到一个无理数。
之后将刚才运算出来的2个无理数和8加在一起,得到这么个数。
然后继续向下跟,他又开始进行新一轮计算。
然后将之前算出来的数和刚才算出来的数相减。
然后经过下面的计算,只要之前那个数大于刚才那个数,就把之前算的数+1。刚才算的数作为int3断点设置的偏移地址,之前算的数为call的偏移地址,要像刚才那样就永远和int3差了一步,成功的提示在int3引发的SEH中,这样也就是永远无法成功了。
所以我们要让之前算的数和刚才算的数完全相等才行。所以我列了一个方程。
注册码里取得数为变量,用户名为常量。分别设为x、y、z。方程为:
解得:
然后用这三个数来改key,得到正确key:
用户名:1234567890123
注册码:31251fba72a0554820ca6d7e7f57785ec19f00d12db35e06697bcf903f3e5aaa329d4fc58ca71984d25138a199ac90557193015cd1b7d710f42ec1f471768
输入进去,正确!
这样就成功了!
Hmily 发表于 2015-7-31 23:12
这么多人加分居然没人回帖,恭喜获得第一篇精华,继续努力。
这个KM@_BaZzi 说我还剩最后一部分没分析,分析好了一定发出 前排留名 这个还没入门{:1_908:} 这么多代码你们是怎么看的{:1_908:} 额,看起来好复杂不想了~ 这么多人加分居然没人回帖,恭喜获得第一篇精华,继续努力。 数学好,破解真的这么大丈夫?{:17_1068:} 不懂,想学习破解技术 流弊啊这是 来学习一下哈 膜拜ing{:301_1003:}