首页
社区
课程
招聘
[原创]Keygenme II
发表于: 2007-8-9 12:26 12905

[原创]Keygenme II

2007-8-9 12:26
12905

Keygenme II v1.1 by luxor
 
和I一样无壳,exe大了0.5k,纯算法cm,要求作出keygen。

http://rapidshare.com/files/48259229/KeygenmeII-luxor.rar


[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 7
支持
分享
最新回复 (21)
雪    币: 926
活跃值: (387)
能力值: (RANK:500 )
在线值:
发帖
回帖
粉丝
2
咋跟第一个比较一点新意都没有??
前面的f(user)  f(sn)跟第一个完全一样啊

感觉唯一不一样的就是CALL Keygenme.0040115B 除了   两个64位数的相乘又添了点其他东西.
2007-8-9 16:53
0
雪    币: 225
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
不要感觉,看懂算法先
2007-8-9 19:39
0
雪    币: 225
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
代码进一步优化,算法没变,但exe大小减少0.5k
2007-8-11 13:25
0
雪    币: 209
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
这个crackme有解么,lz能不能给个你名字的key
2007-8-21 23:59
0
雪    币: 225
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
luxor
2F23-QQ3M-PX66-P4PF

biocrk
VCHQ-QFCT-6PQ8-DDQ6

提示: 不但有解,而且是唯一解.
2007-8-22 08:46
0
雪    币: 151
活跃值: (10)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
7
只能看出原始的计算过程,不明白算法的原理,没有办法求解
2007-8-23 11:38
0
雪    币: 1844
活跃值: (35)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
8
我也粗略看了一下,也太唯一了,前一段检测,要通过难道一般,后面的运算太复杂了
实在是很难跟下去了,期待高手出现
2007-8-23 14:25
0
雪    币: 209
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
same with below
2007-8-23 21:52
0
雪    币: 209
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
难不成是用孙子定理?
利用这个0x95AC9329AC4BC9B5=0xE9*0x1BEF*0x5E31B3C82E3来搞?
感觉v1这样做比较方便,v2,v3也是如此?
2007-8-23 21:52
0
雪    币: 225
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
I要比II简单多了,所以CRT在II,III上肯定是无效的。其实II不是太难,III才是最有挑战性的。
不能再提示了,你还是慢慢研究数论的基础吧。
2007-8-24 09:27
0
雪    币: 209
活跃值: (18)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
发现了这个素数
FFFFFFFFFFFFFFC5
模它的平方根还是好搞得,有时间再写kg吧
先challenge vIII试试
2007-8-24 20:13
0
雪    币: 225
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
Keygenme II是在探讨一种类型的模为素数的同余二项式的解法。所谓模为素数的同余二项式就是下面形式的同余方程:

x^n=a (mod p)

也就是求a的模n次根。

有如下定理:

当n整除p-1时,只有 a^((p-1)/n)=1 (mod p)时有解,且解数为n。

当n不整除p-1时,设k=gcd(n,p-1),r满足r*n=1 (mod p-1),原同余方程的解就是下面方程的解:
x^k=a^r (mod p)

现在来看一下Keygenme II的实际情况:

Keygenme II使用了下面两个方程如下:

p=0xFFFFFFFFFFFFFFC5

(1) x^6= -c (mod p)

(2) x^6= -c*0x95AC9329AC4BC9B5 (mod p)

因为k=gcd(6,0xFFFFFFFFFFFFFFC4)=2,r=0x2AAAAAAAAAAAAAA1,因此Keygenme II实际上是求下面二次同余方程的解:

(1) x^2=(-c)^r (mod p)

(2) x^2=(-c*0x95AC9329AC4BC9B5)^r (mod p)

因为(-c)不一定是p的二次剩余,要想保证有解,就借助一个事实,两个非二次剩余的乘积是二次剩余,一个二次剩余和一个非二次剩余的乘积是非二次剩余。0x95AC9329AC4BC9B5恰好是p的非二次剩余,因此(1),(2)两式必有一个有解。

二次同余方程的解法这里就不讨论了。接下来Keygenme II为了保证有唯一解,取了两个解中高位为1的那个解。这样一来,在当解在0x7FFFFFFFFFFFFFC6和0x7FFFFFFFFFFFFFFF之间时,会导致Keygenme II无解。但这种情况的概率极其微小,可以忽略不计了。当然Keygenme II也可以设计为取高位为0的解,在极小的概率下会有两个解。
2007-8-29 22:11
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
14
按错.
打扰了.
2009-5-10 02:05
0
雪    币: 8209
活跃值: (4518)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
15
不得要领啊,总算把自己的蒙出来了
ccfer
8QV3-C428-KTQF-VF28
2009-5-10 17:55
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
16
又按错了.唉~
2009-5-10 21:42
0
雪    币: 8209
活跃值: (4518)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
17
被作者误导了,实际情况应该是下面两种:
(1) x^6= -c*0x95AC9329AC4BC9B6 (mod p)
(2) x^6= -c*0x95AC9329AC4BC9B5 (mod p)
2009-5-11 15:37
0
雪    币: 8209
活跃值: (4518)
能力值: ( LV15,RANK:2473 )
在线值:
发帖
回帖
粉丝
18
用luxor,biocrk,ccfer这3个名字都是作者说的第二种情况
当用sessiondiy做名字的时候我怎么算也不对,只好自己调试了一下流程
发现并没有作者说的第一种情况,而是*0x95AC9329AC4BC9B6的情况

附件里的计算器我不了解是怎么实现的,我调用了ntl的一个函数x = SqrRootMod(a, p)就算出来了,以名字sessiondiy为例演算一下过程:

断在401379处
00401379   51               PUSH    ECX
0040137A   50               PUSH    EAX
0040137B   51               PUSH    ECX
0040137C   50               PUSH    EAX
0040137D   51               PUSH    ECX
0040137E   50               PUSH    EAX
0040137F   E8 9CFDFFFF      CALL    00401120
可以看到c在[ebp+60]处:
0012FCA8  72 9F F9 B5 10 C2 CA AE
c = 0xAECAC210B5F99F72
r = 0x2AAAAAAAAAAAAAA1
p = 0xFFFFFFFFFFFFFFC5 = 18446744073709551557
-c = p - c = 0xFFFFFFFFFFFFFFC5 - 0xAECAC210B5F99F72 = 0x51353DEF4A066053
a = (-c * 0x95AC9329AC4BC9B6)^r % p = 0xA54AEC3899AB03C2 = 11910591892375143362

用附件里的计算器QrprCalc输入p和a的十进制数值,计算得到
x = 18028090684986279051 = 0xFA30A4F60922C48B

用x的结果FA30A4F60922C48B在“CDFHKMPQTVX23468”按次序查表得到结果:
8XHC-XK8P-CVFF-3KT2

结果:
sessiondiy
8XHC-XK8P-CVFF-3KT2
上传的附件:
2009-5-11 15:54
0
雪    币: 2096
活跃值: (100)
能力值: (RANK:420 )
在线值:
发帖
回帖
粉丝
19
哇~~~哈~~~哈~~~哈~~~!!
那個 *0x95AC9329AC4BC9B6 ==>是内定值( defaultvalue).

所以說有兩個嘛!
不是只有一種!
2009-5-11 16:26
0
雪    币: 2067
活跃值: (82)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
20
利害了.
总之不可能直接算出来.
2009-5-11 17:41
0
雪    币: 2096
活跃值: (100)
能力值: (RANK:420 )
在线值:
发帖
回帖
粉丝
21
ccfer 大在 【分享】關於 Crackme 基礎教學 (軟硬體保護技術手冊--拷貝心得集, 台灣版)-- 後記! 的 92,有公開它的求解平方根的算法源碼,我在 93 樓有寫了一個中文版的數學說明,原理跟92樓的應該是一樣的。

這帖 crackme2.exeluxor 大發的,由 sessiondiy 大cffer 大做一個 Happy Ending。
2009-5-11 18:23
0
雪    币: 474
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
22

小弟不才没算出来
崇拜ccfer...
2009-5-11 20:17
0
游客
登录 | 注册 方可回帖
返回
//