首页
论坛
课程
招聘
[开学前的战场] “覆水难收”CrackMe 尽请蹂躏和拍砖 ^_^ 已被 sessiondiy 大侠破解
2008-8-31 01:22 12724

[开学前的战场] “覆水难收”CrackMe 尽请蹂躏和拍砖 ^_^ 已被 sessiondiy 大侠破解

2008-8-31 01:22
12724
【开学前的战场】 “覆水难收”CrackMe 尽请蹂躏和拍砖 ^_^

开学前,夜间,赶制“覆水难收”CrackMe

前几天,我们班班长游泳时不幸溺水去世,痛心疾首感叹世事无常。。。

禁止爆破,要求分析出算法,最好能写出注册机 , 只承认注册码或者注册算法 , 凡爆破截图一律忽略

希望各位菜油不要吝啬抛砖,各位大侠们尽管蹂躏

谁先分析出算法谁就是能够看破红尘,明白宇宙殇具有大智慧的人。。。

    敬礼

爱琴海 2008/08/31 开学前的战场

安卓应用层抓包通杀脚本发布!《高研班》2021年3月班开始招生!

上传的附件:
收藏
点赞0
打赏
分享
最新回复 (29)
雪    币: 12
能力值: (RANK:210 )
在线值:
发帖
回帖
粉丝
Nooby 活跃值 5 2008-8-31 03:08
2
0
天涯何处无芳草,何必单恋一枝花。
雪    币: 409
活跃值: 活跃值 (10)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
fairynull 活跃值 2008-8-31 11:59
3
0
一下小心就错过了
雪    币: 437
活跃值: 活跃值 (231)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
xss 活跃值 4 2008-8-31 13:41
4
0
囧,VB的东西,对俺这种菜鸟来说太难了,搞不定
雪    币: 706
活跃值: 活跃值 (728)
能力值: ( LV9,RANK:160 )
在线值:
发帖
回帖
粉丝
NONAME剑人 活跃值 3 2008-8-31 14:13
5
0
VB我汗
打个广告
建议楼主改用powerbasic。那东西不是一般地好用啊。。
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
lunglungyu 活跃值 1 2008-8-31 15:13
6
0
  hope.Timer()
我就死在这里了 重启
timer是关键
雪    币: 2025
活跃值: 活跃值 (15)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
sessiondiy 活跃值 4 2008-8-31 15:14
7
0
数学系的应该会
主要是这个

(X 的 15935 次方) mod 99221 = Y
已知 Y , 怎么逆出 X ?
雪    币: 202
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
ppt 活跃值 2008-8-31 16:10
8
0
VB的东西头晕,等高手发文学习下,N多循环
雪    币: 519
活跃值: 活跃值 (58)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
笨笨雄 活跃值 14 2008-8-31 21:12
9
0
Y + 99221 * a = x的15935次方

从0开始枚举a的值
雪    币: 2025
活跃值: 活跃值 (15)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
sessiondiy 活跃值 4 2008-8-31 21:55
10
0
有算法的. 以前看过.

就像他写的 (X 的 15935 次方) mod 99221
不会是真的去算 X 的 15935 次方

例如: (X 的 15935 次方) mod 99221
 可用下列实现:
  init r=1
   p := X * (r mod 99221)
   r := p mod 99221
  repeat 15935 次

就是 (X 的 15935 次方) mod 99221 的值
雪    币: 519
活跃值: 活跃值 (58)
能力值: (RANK:570 )
在线值:
发帖
回帖
粉丝
笨笨雄 活跃值 14 2008-9-1 00:59
11
0
等待科普。。。。。。。。
雪    币: 2025
活跃值: 活跃值 (15)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
sessiondiy 活跃值 4 2008-9-1 03:23
12
0
抱歉 蹂躏了
演算法:
 1. 拆组 3-5 xor
 2. (X 的 15935 次方) mod 99221
 3. 88638358领军右步进继承八位数之连滚带爬 xor
 4. 不告诉你

PS. 上面的const不知道会不会随PC而变, 没试过.




0078600186001270075300835007470055100876001140073400456008340057600258003650038100212008789568852607
上传的附件:
雪    币: 2171
活跃值: 活跃值 (45)
能力值: (RANK:410 )
在线值:
发帖
回帖
粉丝
shellwolf 活跃值 10 2008-9-1 08:54
13
0
学习....
雪    币: 1308
活跃值: 活跃值 (34)
能力值: ( LV13,RANK:920 )
在线值:
发帖
回帖
粉丝
爱琴海 活跃值 13 2008-9-1 11:47
14
0
看来是我的第三步出现了思考上的漏洞,呵呵,谢谢 sessiondiy 大侠的破解,哈哈,可以继续完善算法,这里的每一步都留下了破解的余地,所以只要明白了算法,经过一些数学技巧就可以逆算法了,干得好!!!YOU DID A GOOD JOB!!!

第四步的"不告诉你",呵呵,容易让人误会是你藏着不告诉别人你是怎么破的,我明白你的意思
欢迎你下次有空再破我的新CM,现在开始金工实习了,有些忙......
雪    币: 441
活跃值: 活跃值 (10)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
红尘岁月 活跃值 2 2008-9-1 16:04
15
0
0040E664  PUSH EAX                                 ; /取值长度=0x12F5DC   (vb整型:8)
0040E665  PUSH ESI                                 ; |开始位置=0x1   (unicode字符串:"7656189785066217350305798264370089427976209008628461690950330526456393024215746134495899530278859361")
0040E666  LEA ECX, DWORD PTR SS:[EBP-CC]           ; |ECX=0x12F59C
0040E66C  PUSH ECX                                 ; |字符串=0x12F59C
0040E66D  LEA EDX, DWORD PTR SS:[EBP-9C]           ; |EDX=0x12F5CC
0040E673  PUSH EDX                                 ; |保存结果=0x12F5CC
0040E674  CALL DWORD PTR DS:[40106C]               ; \rtcMidCharVar  在字符串中取字符
0040E67A  LEA EAX, DWORD PTR SS:[EBP-9C]           ;  EAX=0x12F5CC   (vb字符串:"76561897")
0040E680  PUSH EAX                                 ; /字符=0x12F5CC   (vb字符串:"76561897")
0040E681  LEA ECX, DWORD PTR SS:[EBP-70]           ; |ECX=0x12F5F8
0040E684  PUSH ECX                                 ; |参数1=0x12F5F8
0040E685  CALL DWORD PTR DS:[4010B0]               ; \__vbaStrVarVal  把字符转ascii码
0040E68B  PUSH EAX                                 ;  字符串=0x135C8C   (unicode字符串:"76561897")
0040E68C  CALL DWORD PTR DS:[401110]               ;  rtcR8ValFromBstr  字符串转为数值
0040E692  CALL EDI                                 ;  __vbaFpI4  浮点数值转为I4
0040E694  MOV EBX, EAX                             ;  EBX=0x4903DE9
0040E696  FLD QWORD PTR SS:[EBP-6C]                ;  
0040E699  CALL EDI                                 ;  __vbaFpI4  浮点数值转为I4
0040E69B  XOR EBX, EAX                             ;  EBX=0x1D8BE7F   //EBX=0x4903DE9^0x5488396

这应该就是那八位数之连滚带爬 xor

浮点运算太多了,看了晕啊
雪    币: 1308
活跃值: 活跃值 (34)
能力值: ( LV13,RANK:920 )
在线值:
发帖
回帖
粉丝
爱琴海 活跃值 13 2008-9-1 18:53
16
0
其实我有个很重要的怀疑: sessiondiy 是穷举的某个数字

大概花了好几分钟吧?

不知道 sessiondiy 兄弟是否同意我的说法?
雪    币: 2025
活跃值: 活跃值 (15)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
sessiondiy 活跃值 4 2008-9-1 19:36
17
0
二组 0~99220 , 倒着来很快, 就算不倒着来也不会很久
所以我之前的帖子说要数学系的来搞比较好

你这大次方的mod算法我在win95时期处理某软件的SN算法有见过
就是没数学底子, 不会反算.

sorry. 让你见笑了
难怪我无法看破红尘没什么智慧
雪    币: 1308
活跃值: 活跃值 (34)
能力值: ( LV13,RANK:920 )
在线值:
发帖
回帖
粉丝
爱琴海 活跃值 13 2008-9-1 20:30
18
0
大侠谦虚了,我不是说大次方问题,大次方只是用来变换人机部分数据用的,没什么难度
我的意思是"连滚带爬 XOR 逆推"问题,不知道你是用什么算法逆推的? 还是直接编程穷举?
我刚才也证明了该"连滚带爬 XOR"穷举的话,用我的方法,只要10秒钟左右......
所以我怀疑你也是用高性能计算机穷举的"连滚带爬 XOR"最简密码
希望能交流下这个经验
雪    币: 2025
活跃值: 活跃值 (15)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
sessiondiy 活跃值 4 2008-9-1 22:51
19
0
哦, 忘了这个.
我是写程式列举的
虽然电脑低级 AMD Athlon XP 1500 ' RAM=384M, 跑一下就出来了.
用跑的比较快, 就算真能反,花的时间成本太高. 想出来头发都白了.
雪    币: 1308
活跃值: 活跃值 (34)
能力值: ( LV13,RANK:920 )
在线值:
发帖
回帖
粉丝
爱琴海 活跃值 13 2008-9-1 23:31
20
0
我已经用VB实现了超大数异或运算,只要取50位连滚带爬50位后再反爬50位就够了

VB 实现大数异或测试:

原理: 将大数看成字符串,转成二进制,二进制看成字符,自定义异或,结果重新转为十进制
      多数时间花在了转换进制上......如果不转换为十进制的话,也许速度更快

平台: CPU:2.0G 内存:512MB 测试时间 2008/09/01 23:27

十进制1000位数数据之间进行异或大概需要10秒钟时间
十进制800位数数据之间进行异或大概需要7秒钟时间
十进制600位数数据之间进行异或大概需要2秒钟时间
十进制400位数数据之间进行异或大概需要1.5秒钟时间
十进制200位数数据之间进行异或大概需要0.3秒钟时间
十进制100位数数据之间进行异或大概需要0.1秒钟时间
十进制50位数数据之间进行异或大概需要0.02秒钟时间

由上测试可看见50位到400位之间都还是可以接受的

不知道把这个技术用到连滚带爬中,选择初始滚值为100位数字,从左到右递增遗传异或,顺算1秒钟,逆算无法估量,你还可以穷举吗?
不知道把大冥运算底数扩大,用上大数运算技术,也就真正成了RSA算法了,到时要逆算法恐怕不容易,更不用说穷举了

除非爆破了......
雪    币: 2025
活跃值: 活跃值 (15)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
sessiondiy 活跃值 4 2008-9-1 23:42
21
0
以这题而言: 我前面全是 0 , 所以我只需要 8 位

88638358
000000000000000000...0000000xxxxxxxx
再怎么滚, 也是 88638358 vs 后8数

你的题目决定了Cracker的做法
加大位数有加大位数的作法, 除非不可逆.

我不是說大次方問題,大次方只是用來變換人機部分數據用的,沒什麼難度

另外, 可否说一下 (X 的 15935 次方) mod 99221 逆算公式
因为你主题有提到注册机, 这个必需要逆算回来.
雪    币: 2025
活跃值: 活跃值 (15)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
sessiondiy 活跃值 4 2008-9-1 23:49
22
0
超大数运算我很久以前也写过.
另外. 你说的滚过去再滚回来  vs 直接指定一个Result, 要你算出底, 是不同的.

以这题最精简时的8位数而例:

88638358  <- Leader
--------
0000000a
000000ab
00000abc
0000abcd
000abcde
00abcdef
0abcdefg
abcdefgh
--------
95488814  <- Result

已知 Leader 及 Result , 必需是算出 abcdefgh
跟滚过去再滚回来是不同的.
雪    币: 1308
活跃值: 活跃值 (34)
能力值: ( LV13,RANK:920 )
在线值:
发帖
回帖
粉丝
爱琴海 活跃值 13 2008-9-2 11:35
23
0
以这题而言,使用的其实就是8位连滚,如果实现超大数异或,那么连滚的位数每次都可以超过50位,达到50--100位左右,再大点,自己运算都有点慢了,所以只能取这个范围了.

过几天再设计同样的CM,升级算法,看看兄台是否还能成功解密(排除爆破)
雪    币: 2025
活跃值: 活跃值 (15)
能力值: ( LV9,RANK:180 )
在线值:
发帖
回帖
粉丝
sessiondiy 活跃值 4 2008-9-2 13:08
24
0
OK
请问若最后那个"不告诉你"是固定的,
你要怎么根据机器字符串, 提供注册码给客户 ?
雪    币: 5535
活跃值: 活跃值 (26)
能力值: (RANK:1060 )
在线值:
发帖
回帖
粉丝
forgot 活跃值 26 2008-9-3 11:26
25
0
也许跟费马有关
游客
登录 | 注册 方可回帖
返回