ollydebug 发表于 2015-7-31 21:32

小菜鸟分析的一个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
输入进去,正确!

这样就成功了!

ollydebug 发表于 2015-8-1 10:11

Hmily 发表于 2015-7-31 23:12
这么多人加分居然没人回帖,恭喜获得第一篇精华,继续努力。

这个KM@_BaZzi 说我还剩最后一部分没分析,分析好了一定发出

1364847132 发表于 2015-7-31 21:40

前排留名

你是逗比么 发表于 2015-7-31 22:17

这个还没入门{:1_908:} 这么多代码你们是怎么看的{:1_908:}

蚯蚓翔龙 发表于 2015-7-31 22:19

额,看起来好复杂不想了~

Hmily 发表于 2015-7-31 23:12

这么多人加分居然没人回帖,恭喜获得第一篇精华,继续努力。

LoongKing 发表于 2015-7-31 23:18

数学好,破解真的这么大丈夫?{:17_1068:}

xdpj 发表于 2015-7-31 23:21

不懂,想学习破解技术

赖哥 发表于 2015-7-31 23:26

流弊啊这是

xzf680 发表于 2015-8-1 00:25

来学习一下哈

梦游枪手 发表于 2015-8-1 08:16

膜拜ing{:301_1003:}
页: [1] 2 3 4 5 6 7 8 9
查看完整版本: 小菜鸟分析的一个KeygenMe