【破解作者】 gxjxdqk[DFCG][D.4s][CZG][OCN]POJE
【作者邮箱】 gxjxdqk
【作者主页】 gxjxdqk
【使用工具】 OD、PEID
【破解平台】 Win9x/NT/2000/XP
【软件名称】 电视剧下载 V2.10
【下载地址】 http://vvvvv.cn/zhencui/dsj.htm#
【软件简介】 《电视剧下载》:独一无二的电视剧高速下载和在线收看软件,汇集了400多个国内外电视台,1000多部|港台现代剧 | 港台古装剧 | 大陆电视剧 | 青春偶像剧 | 粤语原版剧 | 日韩电视剧 | 卡通漫画剧 | 欧美原版剧| ,速度快质量高的精彩视频,专人实时跟踪更新升级,本软件具有自动升级功能。 通过独特的合作资源,提供超过400套超高清晰的卫星电视节目,高速HBO大片,BBC新闻,日本MM、港台凤凰、华娱、星空、TVB系列,国内中央及各省卫星电视节目;
【加壳方式】 无
【破解声明】 我是一只小菜鸟,偶得一点心得,愿与大家分享:)
--------------------------------------------------------------------------------
【破解内容】
PEID查看,无壳DELPHI编写运行试试,发现有提示信息好OD载入
查找字串“您输入的注册码无效,请重新输入”双击
向上一点下断运行程序被断下分析开始:)
首先我的机器码为B8E02418 试用的注册码为76543210
0049E29E . E8 4D7EFAFF CALL 电视剧下.004460F0
0049E2A3 . 837D F0 00 CMP DWORD PTR SS:[EBP-10],0 ; 假码跟0比
0049E2A7 . 74 1E JE SHORT 电视剧下.0049E2C7 ; 等于0就跳
0049E2A9 . 8D55 EC LEA EDX,DWORD PTR SS:[EBP-14]
0049E2AC . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0049E2AF . 8B80 3C030000 MOV EAX,DWORD PTR DS:[EAX+33C]
0049E2B5 . E8 367EFAFF CALL 电视剧下.004460F0
0049E2BA . 8B45 EC MOV EAX,DWORD PTR SS:[EBP-14] ; 假码入EAX
0049E2BD . E8 8E61F6FF CALL 电视剧下.00404450 ; 计算假码位数的CALL
0049E2C2 . 83F8 08 CMP EAX,8 ; 假码位数比8
0049E2C5 . 7E 0F JLE SHORT 电视剧下.0049E2D6 ; 注册码必需小于等于8位
0049E2C7 > B8 30E54900 MOV EAX,电视剧下.0049E530
0049E2CC . E8 7716F9FF CALL 电视剧下.0042F948 ; 出错框调用的CALL
0049E2D1 . E9 BA010000 JMP 电视剧下.0049E490
0049E2D6 > 8D45 E4 LEA EAX,DWORD PTR SS:[EBP-1C]
0049E2D9 . 50 PUSH EAX
0049E2DA . 8D55 E0 LEA EDX,DWORD PTR SS:[EBP-20]
0049E2DD . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0049E2E0 . 8B80 40030000 MOV EAX,DWORD PTR DS:[EAX+340]
0049E2E6 . E8 057EFAFF CALL 电视剧下.004460F0
0049E2EB . 8B45 E0 MOV EAX,DWORD PTR SS:[EBP-20] ; 机器码入EAX
0049E2EE . B9 06000000 MOV ECX,6
0049E2F3 . BA 01000000 MOV EDX,1
0049E2F8 . E8 B363F6FF CALL 电视剧下.004046B0
0049E2FD . 8B4D E4 MOV ECX,DWORD PTR SS:[EBP-1C] ; 机器码前6位给ECX
0049E300 . 8D45 E8 LEA EAX,DWORD PTR SS:[EBP-18]
0049E303 . BA 5CE54900 MOV EDX,电视剧下.0049E55C ; ASCII "0x"
0049E308 . E8 8F61F6FF CALL 电视剧下.0040449C ; 在前六位机器码前加0x的CALL
0049E30D . 8B45 E8 MOV EAX,DWORD PTR SS:[EBP-18] ; 0xB8E024入EAX
0049E310 . E8 8FA5F6FF CALL 电视剧下.004088A4 ; 把机器码前六位的前面加00的CALL
0049E315 . 8BF0 MOV ESI,EAX ; 00B8E024给ESI
0049E317 . 33C0 XOR EAX,EAX ; EAX清0
0049E319 . 55 PUSH EBP
0049E31A . 68 47E44900 PUSH 电视剧下.0049E447
0049E31F . 64:FF30 PUSH DWORD PTR FS:[EAX]
0049E322 . 64:8920 MOV DWORD PTR FS:[EAX],ESP
0049E325 . 8D55 DC LEA EDX,DWORD PTR SS:[EBP-24]
0049E328 . 8B45 FC MOV EAX,DWORD PTR SS:[EBP-4]
0049E32B . 8B80 3C030000 MOV EAX,DWORD PTR DS:[EAX+33C]
0049E331 . E8 BA7DFAFF CALL 电视剧下.004460F0
0049E336 . 8B45 DC MOV EAX,DWORD PTR SS:[EBP-24] ; 假码给EAX
0049E339 . E8 66A5F6FF CALL 电视剧下.004088A4 ; 算法CALL跟进
0049E33E . 8BD8 MOV EBX,EAX ; 假码算出的值EAX给EBX
0049E340 . 8BC3 MOV EAX,EBX ; 假码算出的值EBX给EAX
0049E342 . 2BC6 SUB EAX,ESI ; EAX-ESI
0049E344 . 3B05 70A14C00 CMP EAX,DWORD PTR DS:[4CA170] ; 把EAX-ESI得到的值称如果=00023F3A(147258)
0049E34A . 74 38 JE SHORT 电视剧下.0049E384 ; 等于就跳向正确
跟进0049E339的CALL
004088A4 /$ 53 PUSH EBX
004088A5 |. 56 PUSH ESI
004088A6 |. 83C4 F4 ADD ESP,-0C ; ESP指向假码地址
004088A9 |. 8BD8 MOV EBX,EAX
004088AB |. 8BD4 MOV EDX,ESP
004088AD |. 8BC3 MOV EAX,EBX
004088AF |. E8 20A5FFFF CALL 电视剧下.00402DD4
004088B4 |. 8BF0 MOV ESI,EAX ; 假码算出的值给ESI
004088B6 |. 833C24 00 CMP DWORD PTR SS:[ESP],0
004088BA |. 74 19 JE SHORT 电视剧下.004088D5
004088BC |. 895C24 04 MOV DWORD PTR SS:[ESP+4],EBX
004088C0 |. C64424 08 0B MOV BYTE PTR SS:[ESP+8],0B
004088C5 |. 8D5424 04 LEA EDX,DWORD PTR SS:[ESP+4]
004088C9 |. A1 30A44C00 MOV EAX,DWORD PTR DS:[4CA430]
004088CE |. 33C9 XOR ECX,ECX
004088D0 |. E8 33F9FFFF CALL 电视剧下.00408208
004088D5 |> 8BC6 MOV EAX,ESI ; 假码算出的值给EAX
004088D7 |. 83C4 0C ADD ESP,0C ; ESP+0C指向假码算出的值
004088DA |. 5E POP ESI ; 00B8E024出堆栈
004088DB |. 5B POP EBX
004088DC \. C3 RETN
算法CALL跟进004088AF
00402DD4 /$ 53 PUSH EBX
00402DD5 |. 56 PUSH ESI
00402DD6 |. 57 PUSH EDI
00402DD7 |. 89C6 MOV ESI,EAX
00402DD9 |. 50 PUSH EAX
00402DDA |. 85C0 TEST EAX,EAX
00402DDC |. 74 6C JE SHORT 电视剧下.00402E4A
00402DDE |. 31C0 XOR EAX,EAX
00402DE0 |. 31DB XOR EBX,EBX
00402DE2 |. BF CCCCCC0C MOV EDI,0CCCCCCC ; 0CCCCCCC给EDI
00402DE7 |> 8A1E /MOV BL,BYTE PTR DS:[ESI] ; 取一位假码入BL
00402DE9 |. 46 |INC ESI ; ESI加1
00402DEA |. 80FB 20 |CMP BL,20 ; 跟20比
00402DED |.^ 74 F8 \JE SHORT 电视剧下.00402DE7 ; 等于20(空)就跳
00402DEF |. B5 00 MOV CH,0
00402DF1 |. 80FB 2D CMP BL,2D ; 跟2D(-)比
00402DF4 |. 74 62 JE SHORT 电视剧下.00402E58
00402DF6 |. 80FB 2B CMP BL,2B ; 跟2B(+)比
00402DF9 |. 74 5F JE SHORT 电视剧下.00402E5A
00402DFB |> 80FB 24 CMP BL,24 ; 跟24($)比
00402DFE |. 74 5F JE SHORT 电视剧下.00402E5F
00402E00 |. 80FB 78 CMP BL,78 ; 跟78(x)比
00402E03 |. 74 5A JE SHORT 电视剧下.00402E5F
00402E05 |. 80FB 58 CMP BL,58 ; 跟58(X)比
00402E08 |. 74 55 JE SHORT 电视剧下.00402E5F
00402E0A |. 80FB 30 CMP BL,30 ; 跟30(0)比
00402E0D |. 75 13 JNZ SHORT 电视剧下.00402E22 ; 不等于30(0)就跳
00402E0F |. 8A1E MOV BL,BYTE PTR DS:[ESI]
00402E11 |. 46 INC ESI
00402E12 |. 80FB 78 CMP BL,78
00402E15 |. 74 48 JE SHORT 电视剧下.00402E5F
00402E17 |. 80FB 58 CMP BL,58
00402E1A |. 74 43 JE SHORT 电视剧下.00402E5F
00402E1C |. 84DB TEST BL,BL
00402E1E |. 74 20 JE SHORT 电视剧下.00402E40
00402E20 |. EB 04 JMP SHORT 电视剧下.00402E26
00402E22 |> \84DB TEST BL,BL ; 测试BL是否为空
00402E24 |. 74 2D JE SHORT 电视剧下.00402E53 ; 为0点
00402E26 |> 80EB 30 /SUB BL,30 ; 假码的一位16进制-30
00402E29 |. 80FB 09 |CMP BL,9 ; 跟9比
00402E2C |. 77 25 |JA SHORT 电视剧下.00402E53 ; 大于9就跳
00402E2E |. 39F8 |CMP EAX,EDI ; EAX比0CCCCCCCC
00402E30 |. 77 21 |JA SHORT 电视剧下.00402E53 ; 大于0CCCCCCCC就跳
00402E32 |. 8D0480 |LEA EAX,DWORD PTR DS:[EAX+EAX*4] ; 取EAX*5给EAX
00402E35 |. 01C0 |ADD EAX,EAX ; EAX+EAX
00402E37 |. 01D8 |ADD EAX,EBX ; EAX+假码的十六进制(EBX)
00402E39 |. 8A1E |MOV BL,BYTE PTR DS:[ESI] ; 取假码下一位给BL
00402E3B |. 46 |INC ESI ; 指向下一位假码
00402E3C |. 84DB |TEST BL,BL ; 测试是否取完
00402E3E |.^ 75 E6 \JNZ SHORT 电视剧下.00402E26 ; 没取完就循环
这段循环的作用是把假码按位循环做运算
00402E40 |> \FECD DEC CH
00402E42 |. 74 09 JE SHORT 电视剧下.00402E4D
00402E44 |. 85C0 TEST EAX,EAX ; 测试EAX是否为0
00402E46 |. 7D 54 JGE SHORT 电视剧下.00402E9C ; 大于等于0跳
00402E48 |. EB 09 JMP SHORT 电视剧下.00402E53
00402E4A |> 46 INC ESI
00402E4B |. EB 06 JMP SHORT 电视剧下.00402E53
00402E4D |> F7D8 NEG EAX
00402E4F |. 7E 4B JLE SHORT 电视剧下.00402E9C
00402E51 |. 78 49 JS SHORT 电视剧下.00402E9C
00402E53 |> 5B POP EBX ; Default case of switch 00402E73
00402E54 |. 29DE SUB ESI,EBX
00402E56 |. EB 47 JMP SHORT 电视剧下.00402E9F
00402E58 |> FEC5 INC CH
00402E5A |> 8A1E MOV BL,BYTE PTR DS:[ESI]
00402E5C |. 46 INC ESI
00402E5D |.^ EB 9C JMP SHORT 电视剧下.00402DFB
00402E5F |> BF FFFFFF0F MOV EDI,0FFFFFFF
00402E64 |. 8A1E MOV BL,BYTE PTR DS:[ESI]
00402E66 |. 46 INC ESI
00402E67 |. 84DB TEST BL,BL
00402E69 |.^ 74 DF JE SHORT 电视剧下.00402E4A
00402E6B |> 80FB 61 /CMP BL,61
00402E6E |. 72 03 |JB SHORT 电视剧下.00402E73
00402E70 |. 80EB 20 |SUB BL,20
00402E73 |> 80EB 30 |SUB BL,30 ; Switch (cases 30..46)
00402E76 |. 80FB 09 |CMP BL,9
00402E79 |. 76 0B |JBE SHORT 电视剧下.00402E86
00402E7B |. 80EB 11 |SUB BL,11
00402E7E |. 80FB 05 |CMP BL,5
00402E81 |.^ 77 D0 |JA SHORT 电视剧下.00402E53
00402E83 |. 80C3 0A |ADD BL,0A ; Cases 41 ('A'),42 ('B'),43 ('C'),44 ('D'),45 ('E'),46 ('F') of switch 00402E73
00402E86 |> 39F8 |CMP EAX,EDI ; Cases 30 ('0'),31 ('1'),32 ('2'),33 ('3'),34 ('4'),35 ('5'),36 ('6'),37 ('7'),38 ('8'),39 ('9') of switch 00402E73
00402E88 |.^ 77 C9 |JA SHORT 电视剧下.00402E53
00402E8A |. C1E0 04 |SHL EAX,4
00402E8D |. 01D8 |ADD EAX,EBX
00402E8F |. 8A1E |MOV BL,BYTE PTR DS:[ESI]
00402E91 |. 46 |INC ESI
00402E92 |. 84DB |TEST BL,BL
00402E94 |.^ 75 D5 \JNZ SHORT 电视剧下.00402E6B
00402E96 |. FECD DEC CH
00402E98 |. 75 02 JNZ SHORT 电视剧下.00402E9C
00402E9A |. F7D8 NEG EAX
00402E9C |> 59 POP ECX ; 假码出堆栈
00402E9D |. 31F6 XOR ESI,ESI
00402E9F |> 8932 MOV DWORD PTR DS:[EDX],ESI
00402EA1 |. 5F POP EDI
00402EA2 |. 5E POP ESI ; 00B8E024出堆栈
00402EA3 |. 5B POP EBX ; 6543210假码出堆栈
00402EA4 \. C3 RETN
--------------------------------------------------------------------------------
【破解总结】
注册码要小于等于8位,并且只能为数字
我们把注册码取的每一位十六进制为m
算出的注册码为SUM
本程序采用公式:
F(机器码)=hex(00+机器码前6位)
F(注册码)=循环做运算sum=SUM*5*2+(m-30)
F(注册码)-F(机器码)=十六进制00023F3A也就是十进制(147258)就注册成功
--------------------------------------------------------------------------------
【版权声明】 本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)