首页
社区
课程
招聘
星空电影院6.01简单算法分析
发表于: 2005-4-22 02:39 9135

星空电影院6.01简单算法分析

2005-4-22 02:39
9135

软件下载地址:http://vvvvv.cn/zhencui/xkdy.htm
软件大小:  2457 KB
软件语言:  中文
软件类别:  共享版
应用平台:  windows
【软件简介】:
    是娱乐所属在线软件,包罗了全国和海外引进的3000多部动画片、电影、港台、大陆、日韩 、欧美电影,并设为独特的秘密观看区,足以使您一饱眼福。1000M光纤接入,IBM专业服务器组,提供在线观看使您即刻体验极速的全方位视觉感受。关于软件的更多特色介绍,速度快质量高的精彩视频,专人实时跟踪更新升级,本软件具有自动升级功能。 通过独特的合作资源,提供超过400套超高清晰的卫星电视节目,高速HBO大片,BBC新闻,日本MM、港台凤凰、华娱、星空、TVB系列,国内中央及各省卫星电视节目。

【软件限制】:功能限制
【作者声明】:初学Crack,只是感兴趣,没有其它目的。失误之处敬请诸位大侠赐教!

【破解工具】:Ollydbg,W32DASM
------------------------------------------
【过    程】
用PEID查壳,发现是用DELPHI写的,没有加壳的,呵呵~~作者真是好人,关照像我这样的菜鸟。
运行软件输入试练码看看出错提示,然后用W32dasm反汇编找到出错提示的地方,汇编代码如下:

:004E0E72 741E                    je 004E0E92
:004E0E74 8D55EC                  lea edx, dword ptr [ebp-14]
:004E0E77 8B45FC                  mov eax, dword ptr [ebp-04]
:004E0E7A 8B8038030000            mov eax, dword ptr [eax+00000338]
:004E0E80 E84765F6FF              call 004473CC
:004E0E85 8B45EC                  mov eax, dword ptr [ebp-14]
:004E0E88 E80736F2FF              call 00404494
:004E0E8D 83F808                  cmp eax, 00000008   //判断输入注册码的注册码位数是否小于等于8位,大于就无效
:004E0E90 7E0F                    jle 004E0EA1

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004E0E72(C)
|

* Possible StringData Ref from Code Obj ->" 您输入的注册码无效,请重新输入。"
                                  |
:004E0E92 B8B8104E00              mov eax, 004E10B8
:004E0E97 E8D0FCF4FF              call 00430B6C
:004E0E9C E9A4010000              jmp 004E1045

* Referenced by a (U)nconditional or (C)onditional Jump at Address:
|:004E0E90(C)
|
:004E0EA1 8D45E4                  lea eax, dword ptr [ebp-1C]   //如果不大于8位就跳到这来,以下为注册码验证的地方
                                                                //可以用OD载入后在这个地方下断点,跟踪下面一段看看
:004E0EA4 50                      push eax                      //按热键CTRL+G,然后输入4E0EA1就可以到达这个地方了
:004E0EA5 8D55E0                  lea edx, dword ptr [ebp-20]
:004E0EA8 8B45FC                  mov eax, dword ptr [ebp-04]
:004E0EAB 8B803C030000            mov eax, dword ptr [eax+0000033C]
:004E0EB1 E81665F6FF              call 004473CC
:004E0EB6 8B45E0                  mov eax, dword ptr [ebp-20]   //跟踪时发现机器码在这里出现了,传入EAX,EAX=
:004E0EB9 B906000000              mov ecx, 00000006            //嘿嘿,这个6有用,传用ECX准备下一步动作,看下面就明白了
:004E0EBE BA01000000              mov edx, 00000001
:004E0EC3 E82C38F2FF              call 004046F4                //此CALL的作用是取得机器码的前6位,知道上面那个6的用处了吧
:004E0EC8 8B4DE4                  mov ecx, dword ptr [ebp-1C]  //将取得的机器码前6位传入ECX
:004E0ECB 8D45E8                  lea eax, dword ptr [ebp-18]
:004E0ECE BAE4104E00              mov edx, 004E10E4
:004E0ED3 E80836F2FF              call 004044E0
:004E0ED8 8B45E8                  mov eax, dword ptr [ebp-18]
:004E0EDB E8507EF2FF              call 00408D30
:004E0EE0 8BF0                    mov esi, eax                 //将机器码前6位的字符串转换成16进制后存放在ESI中
:004E0EE2 33C0                    xor eax, eax                 //清空
:004E0EE4 55                      push ebp
:004E0EE5 68FC0F4E00              push 004E0FFC
:004E0EEA 64FF30                  push dword ptr fs:[eax]
:004E0EED 648920                  mov dword ptr fs:[eax], esp
:004E0EF0 8D55DC                  lea edx, dword ptr [ebp-24]
:004E0EF3 8B45FC                  mov eax, dword ptr [ebp-04]
:004E0EF6 8B8038030000            mov eax, dword ptr [eax+00000338]
:004E0EFC E8CB64F6FF              call 004473CC
:004E0F01 8B45DC                  mov eax, dword ptr [ebp-24]    //试练码(你输入的假注册码)出现,将其传入EAX
:004E0F04 E8277EF2FF              call 00408D30                  //此CALL的作用是将试练码转换成16进制
:004E0F09 8BD8                    mov ebx, eax                   //转换后传入EBX
:004E0F0B 8BC3                    mov eax, ebx                   //????又放回EAX,不知道搞什么
:004E0F0D 2BC6                    sub eax, esi                   //EAX=EAX-ESI
:004E0F0F 3B05D4CA5700            cmp eax, dword ptr [0057CAD4]  //比较EAX与dword ptr [0057CAD4]中的值是否一样。
                                                                 //dword ptr [0057CAD4]里存放着一个常量,调试时
                                                                 //可以看见常量值是1B669
:004E0F15 7438                    je 004E0F4F                    //EAX是否等于1B669,不相等就OVER了

* Possible StringData Ref from Code Obj ->" 您输入的注册码 "
                                  |
:004E0F17 68F0104E00              push 004E10F0
:004E0F1C 8D55D4                  lea edx, dword ptr [ebp-2C]
:004E0F1F 8B45FC                  mov eax, dword ptr [ebp-04]
:004E0F22 8B8038030000            mov eax, dword ptr [eax+00000338]
:004E0F28 E89F64F6FF              call 004473CC
:004E0F2D FF75D4                  push [ebp-2C]

* Possible StringData Ref from Code Obj ->" 不正确,请与作者联系。"
                                  |
:004E0F30 680C114E00              push 004E110C
:004E0F35 8D45D8                  lea eax, dword ptr [ebp-28]
:004E0F38 BA03000000              mov edx, 00000003
:004E0F3D E81236F2FF              call 00404554
:004E0F42 8B45D8                  mov eax, dword ptr [ebp-28]
:004E0F45 E822FCF4FF              call 00430B6C
:004E0F4A E9A3000000              jmp 004E0FF2
-------------------------------------------------------------------------
总结:
从上面的分析可以知道这个算法很简单就是:注册码的十六进制=机器码前6位的十六进制+1B669

                     注册码就是机器码前6位的十六进制+1B669然后化成10进制

很久没有玩破解,都不会使用这些调试工具了,呵呵~~不过还好,竟然遇上这个算法简单的软件,以是写成一篇文章以供初学者学习


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

收藏
免费 7
支持
分享
最新回复 (11)
雪    币: 228
活跃值: (16)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
2
好像不能用,我编译成注册机也不行?是常量错吗?
我用VB编的,你看看是否有错?
Private Sub Command1_Click()
   Dim AnyString
   Dim a As String
   Dim b As String

          If Text1.Text = "" Then
              MsgBox ("请输机器码!!!")

   Else
               AnyString = Text1.Text
               b = Left(AnyString, 6)
               a = CLng("&H" & b)
               Text2.Text = a + &H1B669

          End If

End Sub

Private Sub Command2_Click()
         End

End Sub
2005-4-23 05:02
0
雪    币: 220
活跃值: (109)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
Text2.Text的值还没有转换成10进制当然是不行了
2005-4-23 13:25
0
雪    币: 228
活跃值: (16)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
4
在VB中十六进制转换十进制不需要转换,它会默认把十六进制转换十进制的,可这就是不行,注册星空电影院6.01后它提示变成“试用版”
2005-4-23 16:48
0
雪    币: 671
活跃值: (723)
能力值: ( LV9,RANK:1060 )
在线值:
发帖
回帖
粉丝
5
算法不太难,遇到熟人了!
注册机我用VC写了一个,下次发来!
2005-4-23 19:18
0
雪    币: 204
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
最初由 水中花 发布
在VB中十六进制转换十进制不需要转换,它会默认把十六进制转换十进制的,可这就是不行,注册星空电影院6.01后它提示变成“试用版”


我也是
算出注册码注册,提示“此软件属试用版本,正式版请与作者联系
为了防止破解,给您带来的不便请谅解”
再输入任何注册码都不提示出错,都是上面的提示。
也就是作者发个功能不全的版本逗大家玩,所以搂主说简单。
大家认为是不是这样?
2005-4-23 22:09
0
雪    币: 298
活跃值: (566)
能力值: ( LV9,RANK:530 )
在线值:
发帖
回帖
粉丝
7
“我也是
算出注册码注册,提示“此软件属试用版本,正式版请与作者联系
为了防止破解,给您带来的不便请谅解”
再输入任何注册码都不提示出错,都是上面的提示。
也就是作者发个功能不全的版本逗大家玩,所以搂主说简单。
大家认为是不是这样?”

确实是这样,而且软件的注册算法一直都没有变过,只不过换了一些
变量。而且注册成功了之后所有的功能都能用,多一个提示框在又有什么呢?
2005-4-23 22:28
0
雪    币: 220
活跃值: (109)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
8
它是这么提示,但是已经注册了,同一个目录下已经多了一个INI文件,那些菜单上的电影也可以下载下来看,已经不提示注册了,用影音嗅探专家就可以探测到地址了,可能测用版就是不能直接在线看吧,可是地址是有的
2005-4-23 22:54
0
雪    币: 200
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9
可惜的是试用版本,就算有注册码也没用,
2005-4-24 20:57
0
雪    币: 203
活跃值: (17)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
感谢楼主的破文,也感谢水中花vb注册机的原码,
我也是写不好,看了水中花vb注册机的原码,得到了提示,写好了
2005-4-24 22:24
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
这个算法是共享的,很多软件用的都是这种,也不知道是什么原因!
2005-4-24 22:43
0
雪    币: 228
活跃值: (16)
能力值: ( LV9,RANK:170 )
在线值:
发帖
回帖
粉丝
12
最初由 落魄浪子 发布
“我也是
算出注册码注册,提示“此软件属试用版本,正式版请与作者联系
为了防止破解,给您带来的不便请谅解”
再输入任何注册码都不提示出错,都是上面的提示。
也就是作者发个功能不全的版本逗大家玩,所以搂主说简单。
........


这种注册,它里面的电视打不开,就看不了,电影还可以,毕竟是“试用版”!
2005-4-25 14:16
0
游客
登录 | 注册 方可回帖
返回
//