【破文标题】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直播授课