云飘飘 发表于 2007-9-3 16:45:05

FastTV网络电视钻石版注册码追踪

【破文标题】FastTV网络电视/:018 钻石版/:018 注册码追踪
【破文作者】云飘飘
【作者邮箱】
【作者主页】
【破解工具】PEiD OD DeDe
【破解平台】Win2000
【软件名称】FastTV网络电视[贵宾钻石版] 1.3.3.7
【软件大小】595 KB
【原版下载】http://86516.onlinedown.net/soft/44309.htm
【保护方式】一机一码重启验证
【软件简介】 “FastTV网络电视”是目前最优良的一款播放全球卫星电视,热播电视剧,精典电影的共享软件。  CCTV-5,卫视体育,Goal-TV,NBA直播,足球直播,泰星UBC,各地市体育台等,电影台,电视剧频道,卫星电视节目,包括国内(中央,地方各省市卫星电视节目等),港澳台(凤凰卫视,华娱卫视,星空卫视,阳光卫视,音乐台等),国外(CNN, NHK ABC,BBC,ESPN,TVB,韩国等)系列节目,一套“FastTV网络电视”尽可打尽!
------------------------------------------------------------------------
【破解过程】最近出了趟远门,好久没来冒泡,今天来凑凑热闹!哈哈......

在出这趟远门之前,我就下了个FastTV网络电视想破掉,可惜总是有心无力!今天干脆下了个最新版本(07年8月30日更新),
居然瞎猫撞上死老鼠了,于是有了下文!

安装软件后,用PEiD查壳,是这个弱壳ASPack 2.12 -> Alexey Solodovnikov!用ESP定律即可轻松搞定!

脱壳后再查,Borland Delphi 6.0 - 7.0。试一下注册,随便填,竟然没反应!有点麻烦......

用OD载入,在注册错误或成功处下断点,郁闷得很,断不下来!

想起了DeDe,专门对付Delphi及BC++的。用这个工具打开程序,在窗体栏中发现Tfm_reg,点点它,右侧窗口有:

    object Bt_ok: TSpeedButton
      Left = 344
      Top = 112
      Width = 81
      Height = 22
      Cursor = crHandPoint
      Hint = 验证注册码是否有效
      Caption = 注册认证
      Glyph.Data = {
      DE010000424DDE01000000000000760000002800000024000000120000000100
      0400000000006801000000000000000000001000000000000000000000000000
      80000080000000808000800000008000800080800000C0C0C000808080000000
      FF0000FF000000FFFF00FF000000FF00FF00FFFF0000FFFFFF00333333333333
      3333333333333333333333330000333333333333333333333333F33333333333
      00003333344333333333333333388F3333333333000033334224333333333333
      338338F3333333330000333422224333333333333833338F3333333300003342
      222224333333333383333338F3333333000034222A22224333333338F338F333
      8F33333300003222A3A2224333333338F3838F338F33333300003A2A333A2224
      33333338F83338F338F33333000033A33333A222433333338333338F338F3333
      0000333333333A222433333333333338F338F33300003333333333A222433333
      333333338F338F33000033333333333A222433333333333338F338F300003333
      33333333A222433333333333338F338F00003333333333333A22433333333333
      3338F38F000033333333333333A223333333333333338F830000333333333333
      333A333333333333333338330000333333333333333333333333333333333333
      0000}
      NumGlyphs = 2
      ParentShowHint = False
      ShowHint = True
      OnClick = Bt_okClick
    end


这无疑是【注册认证】按钮的相关信息。再查看【过程】 【事件】,在Bt_okClick的右边找到其RVA值为00510D40。

好了,到OD中在00510D40行下断点,运行程序(注意别忘了隐藏OD,这个程序好像反OD调试)后,来到注册窗口,输入用户名及注册码(最好做个记录),点击【注册认证】,程序断下来了。

只要断下来就行!程序怎么运算我们用不着太关心,先放一放吧......

采用超级字符串搜索,会有【标准版】、【vip版】、【钻石版】,找到相应的汇编代码行,然后顺藤摸瓜,往上找找,都可以来到这个地方:

0050A935|.E8 A69DEFFF   call    004046E0
0050A93A|.83E8 0A       sub   eax, 0A                        ;Switch (cases A..10)注册码类型分支
0050A93D|.74 62         je      short 0050A9A1                   ;[标准版]10
0050A93F|.83E8 02       sub   eax, 2
0050A942|.74 17         je      short 0050A95B                   ;试用12
0050A944|.83E8 02       sub   eax, 2
0050A947|.0F84 18010000 je      0050AA65                         ;14
0050A94D|.83E8 02       sub   eax, 2
0050A950|.0F84 D3010000 je      0050AB29                         ;[钻石版]16
0050A956|.E9 A5030000   jmp   0050AD00                         ;试用其它数值

先仔细看看程序,各个跳转各有其用途。在程序中,我已经加上了注释。这几种版本,当然数【钻石版】最讨人喜欢了!

好的,我们的目标就是【钻石版】,所以在0050A935这一行下断点,清除前面下的断点(过河拆桥了,^_^)。按一下F9,可能还需要几次SHIFT+F9的协助,程序会停到这儿,把寄存器窗口的EAX值改成10(也就是十进制的16),单步往下走,好的,程序跳到这里来了:

0050AB29|> \68 C0B15100   push    0051B1C0                         ;Case 10 of switch 0050A93A
0050AB2E|.8D45 8C       lea   eax, dword ptr
0050AB31|.50            push    eax
0050AB32|.B9 06000000   mov   ecx, 6                           ;准备了=====^_^精彩好戏要上演了^_^=====
0050AB37|.BA 08000000   mov   edx, 8
0050AB3C|.8B45 FC       mov   eax, dword ptr          ;密钥6e8174946990cb7174366caa8b452649
0050AB3F|.E8 FC9DEFFF   call    00404940                         ;从第8位起连续取6个字符
0050AB44|.FF75 8C       push    dword ptr                ;46990c
0050AB47|.8D45 88       lea   eax, dword ptr
0050AB4A|.50            push    eax
0050AB4B|.B9 07000000   mov   ecx, 7
0050AB50|.BA 12000000   mov   edx, 12
0050AB55|.8B45 FC       mov   eax, dword ptr
0050AB58|.E8 E39DEFFF   call    00404940                        ;从第18位起连续取7个字符
0050AB5D|.FF75 88       push    dword ptr                 ;4366caa
0050AB60|.8D45 84       lea   eax, dword ptr
0050AB63|.50            push    eax
0050AB64|.B9 03000000   mov   ecx, 3
0050AB69|.BA 03000000   mov   edx, 3
0050AB6E|.8B45 FC       mov   eax, dword ptr
0050AB71|.E8 CA9DEFFF   call    00404940                        ;从第13位起连续取3个字符
0050AB76|.FF75 84       push    dword ptr                 ;817
0050AB79|.8D45 80       lea   eax, dword ptr
0050AB7C|.50            push    eax
0050AB7D|.B9 03000000   mov   ecx, 3
0050AB82|.BA 0D000000   mov   edx, 0D
0050AB87|.8B45 FC       mov   eax, dword ptr
0050AB8A|.E8 B19DEFFF   call    00404940                        ;从第13位起连续取3个字符
0050AB8F|.FF75 80       push    dword ptr                 ;cb7
0050AB92|.8D85 7CFFFFFF lea   eax, dword ptr
0050AB98|.50            push    eax
0050AB99|.B9 05000000   mov   ecx, 5
0050AB9E|.BA 16000000   mov   edx, 16
0050ABA3|.8B45 FC       mov   eax, dword ptr
0050ABA6|.E8 959DEFFF   call    00404940                        ;从第22位起连续取5个字符
0050ABAB|.FFB5 7CFFFFFF push    dword ptr                 ;caa8b
0050ABB1|.8D45 90       lea   eax, dword ptr
0050ABB4|.BA 05000000   mov   edx, 5
0050ABB9|.E8 E29BEFFF   call    004047A0                        ;将以上5部分串接起来
0050ABBE|.8B45 90       mov   eax, dword ptr          ;46990c4366caa817cb7caa8b
0050ABC1|.8D55 94       lea   edx, dword ptr
0050ABC4|.E8 732FF7FF   call    0047DB3C


看到我标的值了吧?!6e8174946990cb7174366caa8b452649,这个是正确注册码的种子,每个机器会不一样的,
取其中的5段,凑起来,就生成了46990c4366caa817cb7caa8b!

估计是正确的注册码,复制一下,启动程序(脱过壳的,或者未脱壳的都行),输入用户名(没忘吧)和现在的这串数字,程序没个提示就关了,太不友好了。程序采用的是重启验证。

重新启动程序,ok,顶端标题上出现了【钻石版】字样,大功告成了,偷着乐去吧......
------------------------------------------------------------------------
【破解总结】程序停在这里的时候,0050A93D行,一定要让eax变成十六进制的10,否则,就成不了[钻石版]!
第一次用DeDe,居然显其功效了,运气真好!!
其实做注册机也很简单,只要看懂了,就知道从何下手,小CASE而已,呵呵!!!

再次强调简要算法:
首先根据机器码和用户名生成注册码密钥;      6e8174946990cb7174366caa8b452649
然后从第8位起连续取6个字符,                                 46990c
   再从第18位起连续取7个字符,                                                4366caa
      从第3位起连续取3个字符,                        817
      从第13位起连续取3个字符,                                        cb7
      从第22位起连续取5个字符,                                                       caa8b
最后将以上5部分串接起来。                        46990c4366caa817cb7caa8b
------------------------------------------------------------------------
【版权声明】本文纯属技术交流, 转载请注明作者信息并保持文章的完整, 谢谢!

[ 本帖最后由 云飘飘 于 2007-9-4 07:39 编辑 ]

金平湖秋月 发表于 2007-9-3 17:14:53

谢谢楼主的解释

dreamz 发表于 2007-9-3 19:39:51

很好的帖子,适合我们初学者,多谢楼主/:001

pw2000 发表于 2007-9-3 20:17:09

今天不能下载FastTV网络电视[贵宾钻石版] 1.3.3.7,已经更新了。

云飘飘 发表于 2007-9-3 20:20:47

换汤不换药!是的,我中午才下的1.3.3.7,现在好像变1.3.5.0了。

yingfeng 发表于 2007-9-3 20:37:19

对照分析了下,楼主太强了,里面的数字太多了,晕乎,

呵呵!

l软件启动太慢,也没有什么节目,里面还有些不文明的语言,
怕人破解也不要这样呵!
爆破前提是你先输入的是24(其它的话就不是钻钻的了)位的假注册码,呵呵,先要他保存下注册信息,呵呵
爆破的话:
/*50AC9A*/call    0040482C
/*50AC9F*/jnz   short 0050AD00                        把这里改成JZ或NOP掉就爆破成功了,呵呵
/*50ACA1*/mov   byte ptr , 1
/*50ACA8*/cmp   dword ptr , 1
/*50ACAF*/je      short 0050ACB8
/*50ACB1*/mov   byte ptr , 1

[ 本帖最后由 yingfeng 于 2007-9-3 20:43 编辑 ]

云飘飘 发表于 2007-9-3 20:51:26

刚才我看了下新版本程序(1.3.5.0),基本上没变化,主程序版本根本没变,还是1.3.3.0的!

[ 本帖最后由 云飘飘 于 2007-9-4 10:38 编辑 ]

LM苍蝇 发表于 2007-9-3 21:04:01

太厉害了 向楼主学习!!

Nisy 发表于 2007-9-3 21:55:41

支持下 继续努力 /:good

郑宇鸣 发表于 2007-9-3 21:56:59

可能还需要几次SHIFT+F9的协助,程序会停到这儿,把寄存器窗口的EAX值改成10(也就是十进制的16),单步往下走

我晕 我忘记SHIFT+F9是干什么的啦 /:L

把寄存器窗口的EAX值改成10why..?
页: [1] 2 3 4 5 6
查看完整版本: FastTV网络电视钻石版注册码追踪