首页
社区
课程
招聘
QTV网络电视2.01算法分析[原创]
发表于: 2006-5-18 02:30 4839

QTV网络电视2.01算法分析[原创]

2006-5-18 02:30
4839
【破文标题】QTV网络电视2.01算法分析
【破文作者】?幻刹那
【作者性别】男
【作者邮箱】lovecy616927@yahoo.com.cn
【所属组织】??游民
【软件名称】QTV网络电视2.01
【下载地址】http://www.alexqsoft.com/
【破解工具】od,w32asm
【保护方式】注册码保护方式
【破解难度】简单
----------------------------------------------------
软件介绍:
    ★免费提供超过300套高清晰的卫星电视节目,有HBO大片、CNN新闻,港台凤凰、华娱、星空、TVB系列,CCTV全套及各省市地方卫视等。
★2万部电影在线点播(国语片,外语片,韩日电影连续剧精彩不断)。
★一百多个广播电台在线收听。
★自动分析用户IP所在地区,系统选出最快的服务器组开通专业服务通道。
★体育台专设一栏目,24小时不间断流畅播放体育赛事,可点播历史经典赛事。
★人性化的界面设计,十分易于操作。有标准模式、简单模式、上网模式三种观看模式,电视屏幕自由缩放,不影响其它操作。
★配备有完善的节目监测系统,专业人员实时监测节目的有效性,保证节目畅通稳定。
★注册码遗失,可以来信重新发送。
----------------------------------------------------
破解声名:我是一只小菜鸟,偶得一点心得,愿与大家分享:
----------------------------------------------------
【破解分析】
    软件没加壳,delphi编写,用w32asm找到关键字注册错误提示;
00513157  这里提示注册码错误,
用od载入在  00513157向上翻找到   00512FAE 下断,启动软件,随便输入
注册信息,就断在下面了              

00512FAE    55              PUSH EBP
00512FAF    68 1C325100     PUSH QTV.0051321C
00512FB4    64:FF30         PUSH DWORD PTR FS:[EAX]
00512FB7    64:8920         MOV DWORD PTR FS:[EAX],ESP
00512FBA    8D55 FC         LEA EDX,DWORD PTR SS:[EBP-4]
00512FBD    8B83 8C030000   MOV EAX,DWORD PTR DS:[EBX+38C]
00512FC3    E8 80A9F3FF     CALL QTV.0044D948
00512FC8    8D55 F8         LEA EDX,DWORD PTR SS:[EBP-8]
00512FCB    8B83 90030000   MOV EAX,DWORD PTR DS:[EBX+390]
00512FD1    E8 72A9F3FF     CALL QTV.0044D948
00512FD6    8D55 F4         LEA EDX,DWORD PTR SS:[EBP-C]
00512FD9    8B83 88030000   MOV EAX,DWORD PTR DS:[EBX+388]
00512FDF    E8 64A9F3FF     CALL QTV.0044D948
00512FE4    8D55 E4         LEA EDX,DWORD PTR SS:[EBP-1C]
00512FE7    8B83 88030000   MOV EAX,DWORD PTR DS:[EBX+388]           ; 取用户名长度
00512FED    E8 56A9F3FF     CALL QTV.0044D948                        ; 取用户名
00512FF2    8B45 E4         MOV EAX,DWORD PTR SS:[EBP-1C]
00512FF5    8945 E0         MOV DWORD PTR SS:[EBP-20],EAX
00512FF8    8B45 E0         MOV EAX,DWORD PTR SS:[EBP-20]
00512FFB    85C0            TEST EAX,EAX
00512FFD    74 05           JE SHORT QTV.00513004                    ; 用户名名长度是否为0
00512FFF    83E8 04         SUB EAX,4
00513002    8B00            MOV EAX,DWORD PTR DS:[EAX]
00513004    8BF0            MOV ESI,EAX                              ; esi存放用户长度
00513006    8D55 DC         LEA EDX,DWORD PTR SS:[EBP-24]
00513009    8B83 8C030000   MOV EAX,DWORD PTR DS:[EBX+38C]
0051300F    E8 34A9F3FF     CALL QTV.0044D948
00513014    8B45 DC         MOV EAX,DWORD PTR SS:[EBP-24]            ; 取前半注册码
00513017    8945 E0         MOV DWORD PTR SS:[EBP-20],EAX
0051301A    8B45 E0         MOV EAX,DWORD PTR SS:[EBP-20]
0051301D    85C0            TEST EAX,EAX
0051301F    74 05           JE SHORT QTV.00513026                    ; 前半注册码是否为0
00513021    83E8 04         SUB EAX,4
00513024    8B00            MOV EAX,DWORD PTR DS:[EAX]
00513026    8BF8            MOV EDI,EAX                              ; edi存前半截注册码的长度
00513028    8D55 D8         LEA EDX,DWORD PTR SS:[EBP-28]
0051302B    8B83 90030000   MOV EAX,DWORD PTR DS:[EBX+390]
00513031    E8 12A9F3FF     CALL QTV.0044D948                        ; 取后面半截注册那个
00513036    8B45 D8         MOV EAX,DWORD PTR SS:[EBP-28]
00513039    8945 E0         MOV DWORD PTR SS:[EBP-20],EAX
0051303C    8B45 E0         MOV EAX,DWORD PTR SS:[EBP-20]
0051303F    85C0            TEST EAX,EAX
00513041    74 05           JE SHORT QTV.00513048
00513043    83E8 04         SUB EAX,4
00513046    8B00            MOV EAX,DWORD PTR DS:[EAX]
00513048    8BD8            MOV EBX,EAX                              ; ebx存后半注册码长度
0051304A    837D FC 00      CMP DWORD PTR SS:[EBP-4],0               ; 前半注册码为数是否为0
0051304E    74 1B           JE SHORT QTV.0051306B
00513050    837D F8 00      CMP DWORD PTR SS:[EBP-8],0               ; 后半注册码长度是否为0
00513054    74 15           JE SHORT QTV.0051306B
00513056    837D F4 00      CMP DWORD PTR SS:[EBP-C],0               ; 用户名长度跟0比较
0051305A    74 0F           JE SHORT QTV.0051306B
0051305C    83FE 06         CMP ESI,6                                ; 跟6比较
0051305F    7C 0A           JL SHORT QTV.0051306B                    ; 用户明的位数跟6比较,少于6就跳向失败
00513061    83FF 06         CMP EDI,6                                ; 同理
00513064    7C 05           JL SHORT QTV.0051306B
00513066    83FB 06         CMP EBX,6                                ; 长度大于或者等于6就跳走,也即符合要求
00513069    7D 0F           JGE SHORT QTV.0051307A
0051306B    B8 34325100     MOV EAX,QTV.00513234                     ; 注册失败的标志
00513070    E8 53C7F2FF     CALL QTV.0043F7C8
00513075    E9 65010000     JMP QTV.005131DF
0051307A    8D55 F0         LEA EDX,DWORD PTR SS:[EBP-10]
0051307D    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]             ; 取 前半截注册码
00513080    E8 1B6FEFFF     CALL QTV.00409FA0
00513085    84C0            TEST AL,AL
00513087    0F84 48010000   JE QTV.005131D5
0051308D    8D55 F0         LEA EDX,DWORD PTR SS:[EBP-10]
00513090    8B45 F8         MOV EAX,DWORD PTR SS:[EBP-8]             ; 取第后半截注册码
00513093    E8 086FEFFF     CALL QTV.00409FA0                        ; 跟前面调用同一个子程序
00513098    84C0            TEST AL,AL
0051309A    0F84 35010000   JE QTV.005131D5
005130A0    8D45 D4         LEA EAX,DWORD PTR SS:[EBP-2C]
005130A3    8B55 FC         MOV EDX,DWORD PTR SS:[EBP-4]             ; 把前半部分的注册码放到edx中
005130A6    0FB652 01       MOVZX EDX,BYTE PTR DS:[EDX+1]            ; 去前半部分的第2个字符
005130AA    E8 0D1CEFFF     CALL QTV.00404CBC
005130AF    8B45 D4         MOV EAX,DWORD PTR SS:[EBP-2C]
005130B2    E8 956EEFFF     CALL QTV.00409F4C
005130B7    50              PUSH EAX
005130B8    8D45 D0         LEA EAX,DWORD PTR SS:[EBP-30]
005130BB    8B55 F8         MOV EDX,DWORD PTR SS:[EBP-8]             ; 取后半部分的注册码
005130BE    0FB612          MOVZX EDX,BYTE PTR DS:[EDX]              ; 取后半部分的第一个字符
005130C1    E8 F61BEFFF     CALL QTV.00404CBC
005130C6    8B45 D0         MOV EAX,DWORD PTR SS:[EBP-30]
005130C9    E8 7E6EEFFF     CALL QTV.00409F4C
005130CE    5A              POP EDX
005130CF    03D0            ADD EDX,EAX                              ; 两个相加
005130D1    8955 EC         MOV DWORD PTR SS:[EBP-14],EDX            ; 结果放在ebp-14
005130D4    8D45 CC         LEA EAX,DWORD PTR SS:[EBP-34]
005130D7    8B55 FC         MOV EDX,DWORD PTR SS:[EBP-4]             ; 前半部分
005130DA    0FB652 04       MOVZX EDX,BYTE PTR DS:[EDX+4]            ; 取前半部分第5个
005130DE    E8 D91BEFFF     CALL QTV.00404CBC
005130E3    8B45 CC         MOV EAX,DWORD PTR SS:[EBP-34]
005130E6    E8 616EEFFF     CALL QTV.00409F4C
005130EB    50              PUSH EAX
005130EC    8D45 C8         LEA EAX,DWORD PTR SS:[EBP-38]
005130EF    8B55 F8         MOV EDX,DWORD PTR SS:[EBP-8]             ; 后半部分
005130F2    0FB652 01       MOVZX EDX,BYTE PTR DS:[EDX+1]            ; 后半部分第2个
005130F6    E8 C11BEFFF     CALL QTV.00404CBC
005130FB    8B45 C8         MOV EAX,DWORD PTR SS:[EBP-38]
005130FE    E8 496EEFFF     CALL QTV.00409F4C
00513103    5A              POP EDX
00513104    03D0            ADD EDX,EAX                              ; 2个相加
00513106    8955 E8         MOV DWORD PTR SS:[EBP-18],EDX            ; 存放在ebp-18
00513109    8D45 C4         LEA EAX,DWORD PTR SS:[EBP-3C]
0051310C    8B55 FC         MOV EDX,DWORD PTR SS:[EBP-4]
0051310F    0FB652 03       MOVZX EDX,BYTE PTR DS:[EDX+3]            ; 前半第4个字符
00513113    E8 A41BEFFF     CALL QTV.00404CBC
00513118    8B45 C4         MOV EAX,DWORD PTR SS:[EBP-3C]
0051311B    E8 2C6EEFFF     CALL QTV.00409F4C
00513120    50              PUSH EAX
00513121    8D45 C0         LEA EAX,DWORD PTR SS:[EBP-40]
00513124    8B55 F8         MOV EDX,DWORD PTR SS:[EBP-8]
00513127    0FB652 03       MOVZX EDX,BYTE PTR DS:[EDX+3]            ; 后半第4个
0051312B    E8 8C1BEFFF     CALL QTV.00404CBC
00513130    8B45 C0         MOV EAX,DWORD PTR SS:[EBP-40]
00513133    E8 146EEFFF     CALL QTV.00409F4C
00513138    8BD0            MOV EDX,EAX                              ; 2个相加
0051313A    58              POP EAX
0051313B    03C2            ADD EAX,EDX                              ; 相加放在eax
0051313D    3BDE            CMP EBX,ESI                              ; 比较后办部分跟 用户名的位数相等否
0051313F    75 16           JNZ SHORT QTV.00513157
00513141    83FF 08         CMP EDI,8                                ; 比较前半部分是否为8位,不是就跳走
00513144    75 11           JNZ SHORT QTV.00513157
00513146    837D EC 07      CMP DWORD PTR SS:[EBP-14],7              ; 比较第前半第2个跟后半第1个是否为7,不是就跳走
0051314A    75 0B           JNZ SHORT QTV.00513157
0051314C    837D E8 06      CMP DWORD PTR SS:[EBP-18],6              ; 前半第5个跟后半第2个相加是否为6
00513150    75 05           JNZ SHORT QTV.00513157
00513152    83F8 09         CMP EAX,9                                ; 比较注册码的前半部分的第4个数加上后半部分的第4个数是否是9,是就注册成功
00513155    74 0C           JE SHORT QTV.00513163
00513157    B8 58325100     MOV EAX,QTV.00513258                     ; 用户名错误
0051315C    E8 67C6F2FF     CALL QTV.0043F7C8
00513161    EB 7C           JMP SHORT QTV.005131DF
00513163    B8 84325100     MOV EAX,QTV.00513284                     ; 谢谢你的注册,
00513168    E8 5BC6F2FF     CALL QTV.0043F7C8
0051316D    B2 01           MOV DL,1
0051316F    A1 A0BD4200     MOV EAX,DWORD PTR DS:[42BDA0]
00513174    E8 278DF1FF     CALL QTV.0042BEA0

----------------------------------------------------
【总结】
    注册算法:
软件的用户名不参与运算,只要大于6位小于10位就可以;
后半截输入的注册码得为数跟输入的用户的位数相同;
前半截的注册码得第一个跟后半截的注册码的第1个相加之和为7;
前半截第5个跟后半截第2个相加之和等于6;
前半截第4个跟后半截第4个之和等于9;
前半截的注册码个数为8;

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 3519
活跃值: (4047)
能力值: (RANK:215 )
在线值:
发帖
回帖
粉丝
2
这样出来的注册码提示注册成功,但是点非试用电视台则出现 本节目只供注册用户观看类的提示.

看来还应该有其他的检测

假注册
2006-5-18 08:13
0
雪    币: 44229
活跃值: (19965)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
3
最初由 china 发布
这样出来的注册码提示注册成功,但是点非试用电视台则出现 本节目只供注册用户观看类的提示.

看来还应该有其他的检测

假注册


等解决后再设精华
2006-5-18 08:48
0
雪    币: 236
活跃值: (35)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
4
引用: 最初由 china 发布
这样出来的注册码提示注册成功,但是点非试用电视台则出现 本节目只供注册用户观看类的提示.

看来还应该有其他的检测

假注册

这个应该是网络验证造成的吧
2006-5-18 08:53
0
雪    币: 3519
活跃值: (4047)
能力值: (RANK:215 )
在线值:
发帖
回帖
粉丝
5
最初由 误入楼台 发布
引用: 最初由 china 发布
这样出来的注册码提示注册成功,但是点非试用电视台则出现 本节目只供注册用户观看类的提示.

看来还应该有其他的检测

........


这个,有可能吧.

还是支持楼主的文章.
2006-5-18 09:08
0
雪    币: 269
活跃值: (51)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
6
如果能搞定网络验证这一块.厉害的说.
2006-5-18 13:12
0
游客
登录 | 注册 方可回帖
返回
//