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 编辑 ] 谢谢楼主的解释 很好的帖子,适合我们初学者,多谢楼主/:001 今天不能下载FastTV网络电视[贵宾钻石版] 1.3.3.7,已经更新了。 换汤不换药!是的,我中午才下的1.3.3.7,现在好像变1.3.5.0了。 对照分析了下,楼主太强了,里面的数字太多了,晕乎,
呵呵!
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 编辑 ] 刚才我看了下新版本程序(1.3.5.0),基本上没变化,主程序版本根本没变,还是1.3.3.0的!
[ 本帖最后由 云飘飘 于 2007-9-4 10:38 编辑 ] 太厉害了 向楼主学习!! 支持下 继续努力 /:good 可能还需要几次SHIFT+F9的协助,程序会停到这儿,把寄存器窗口的EAX值改成10(也就是十进制的16),单步往下走
我晕 我忘记SHIFT+F9是干什么的啦 /:L
把寄存器窗口的EAX值改成10why..?