rdsnow 发表于 2005-9-10 21:23:07

流星网络电视V1.9.2.0的注册

【破文作者】   rdsnow

【作者主页】   http://rdsnow.ys168.com

【 E-mail 】   rdsnow@163.com

【 作者QQ 】   83757177

【文章题目】   流星网络电视V1.9.2.0的注册

【软件名称】   流星网络电视1.9.2.0

【下载地址】   http://www.jesen.cn

----------------------------------------------------------------------------------------------
【加密方式】   序列号

【破解工具】   FLYOD V1.10

【软件限制】   功能限制

【破解平台】   Win9x/NT/2000/XP/XP SP2

----------------------------------------------------------------------------------------------
【软件简介】

《流星网络电视》可在线收看国内外数百套精彩电视频道(含CCTV所有频道,内地省市优秀电视台;港澳台地区:凤凰中文,凤凰资讯,阳光卫视,星空卫视,华娱卫视,美亚电影,卫视电影,东森电影,台湾电视台,台湾华视,东森新闻,中天新闻等知名电视频道;体育频道:UBC直播,ESPN,卫视体育,CCTV-5,上海体育,浙江体育等体育频道,可在线收看各赛事直播;国外频道:ABC,BBC,CNN,法国时尚,美国国家地理,沙特阿拉伯电视台,阿拉伯电视台等著名电视台)。
★ 1000多套卫星电视节目24小时不间断直播。
★ 2000多部在线电影免费观看,影片定时更新。
★ 特别推出大型电视系列片《唐之韵》供您欣赏。
★ 免费试看所有频道,给您透明化的选择。
★ 独有的“节目指南”功能,使您不错过任何一段精彩节目。
★ 软件自动检测最新版本,自动在线升级,无需任何手动操作。
★ 软件界面简洁;人性化的的程序设计,使您操作更简便。
★ 电视屏幕自由缩放,并可置顶悬挂在屏幕的任意角落,让您在欣赏电视节目的同时,不影响其它操作。
★ 纯绿色软件。不捆绑任何软件,不产生垃圾文件,不修改注册表!
★ 一次注册,终生免费在线升级

【文章简介】

这个程序原先版本加了Asprotect 2.11的加密外壳的,一直没有能够脱壳,不知道什么原因,新版本的程序换成Aspack 2.12的压缩壳,手脱或用工具都可以轻松搞定。

程序采用了现在流行的重启验证的方式。

加密过程中主要使用到了两个加密算法:MD5 和 DES,都没有变形。其中DES有两个函数,DES_EN( )和DES_DE( ),分别用来加密信息和解密信息,使用同一个密钥。

----------------------------------------------------------------------------------------------
【破解过程】

启动程序,输入注册名和假码,来到这里:(注册码的长度是16、20、24或32)

005BD888|.55            PUSH EBP
005BD889|.68 F5DA5B00   PUSH unpacked.005BDAF5
005BD88E|.64:FF30         PUSH DWORD PTR FS:
005BD891|.64:8920         MOV DWORD PTR FS:,ESP
005BD894|.8D55 EC         LEA EDX,DWORD PTR SS:
005BD897|.8B83 14030000   MOV EAX,DWORD PTR DS:
005BD89D|.E8 7275E9FF   CALL unpacked.00454E14         ;取出输入的用户名
005BD8A2|.8B45 EC         MOV EAX,DWORD PTR SS:
005BD8A5|.8D55 F0         LEA EDX,DWORD PTR SS:
005BD8A8|.E8 CFB5E4FF   CALL unpacked.00408E7C
005BD8AD|.837D F0 00      CMP DWORD PTR SS:,0      ;检查是否成功取出
005BD8B1|.0F84 E9010000   JE unpacked.005BDAA0
005BD8B7|.8D55 E4         LEA EDX,DWORD PTR SS:
005BD8BA|.8B83 18030000   MOV EAX,DWORD PTR DS:
005BD8C0|.E8 4F75E9FF   CALL unpacked.00454E14         ;取出输入的注册码
005BD8C5|.8B45 E4         MOV EAX,DWORD PTR SS:
005BD8C8|.8D55 E8         LEA EDX,DWORD PTR SS:
005BD8CB|.E8 ACB5E4FF   CALL unpacked.00408E7C
005BD8D0|.837D E8 00      CMP DWORD PTR SS:,0      ;检查是否成功取出
005BD8D4|.0F84 C6010000   JE unpacked.005BDAA0
005BD8DA|.8D55 E0         LEA EDX,DWORD PTR SS:
005BD8DD|.8B83 14030000   MOV EAX,DWORD PTR DS:
005BD8E3|.E8 2C75E9FF   CALL unpacked.00454E14         ;计算用户名的长度
005BD8E8|.8B45 E0         MOV EAX,DWORD PTR SS:
005BD8EB|.8D55 F8         LEA EDX,DWORD PTR SS:
005BD8EE|.E8 89B5E4FF   CALL unpacked.00408E7C
005BD8F3|.8D55 D8         LEA EDX,DWORD PTR SS:    ;下面开始对注册码变换
005BD8F6|.8B83 18030000   MOV EAX,DWORD PTR DS:
005BD8FC|.E8 1375E9FF   CALL unpacked.00454E14         ;取出注册码的长度
005BD901|.8B45 D8         MOV EAX,DWORD PTR SS:
005BD904|.8D55 DC         LEA EDX,DWORD PTR SS:
005BD907|.E8 70B5E4FF   CALL unpacked.00408E7C
005BD90C|.8B45 DC         MOV EAX,DWORD PTR SS:
005BD90F|.8D55 FC         LEA EDX,DWORD PTR SS:
005BD912|.E8 11B3E4FF   CALL unpacked.00408C28         ;注册码大写转为小写
005BD917|.8D55 D4         LEA EDX,DWORD PTR SS:
005BD91A|.8B45 FC         MOV EAX,DWORD PTR SS:
005BD91D|.E8 52A5EBFF   CALL unpacked.00477E74         ;对注册码采用MD5运算
005BD922|.8B45 D4         MOV EAX,DWORD PTR SS:
005BD925|.8D4D F4         LEA ECX,DWORD PTR SS:
005BD928|.BA 0CDB5B00   MOV EDX,unpacked.005BDB0C      ;ASCII "dream"
005BD92D|.E8 5697EBFF   CALL unpacked.00477088         ;再经过DES加密,Key="dream"因为密钥至少要有64位,不够用0x00替代
005BD932|.8B45 FC         MOV EAX,DWORD PTR SS:
005BD935|.E8 D66DE4FF   CALL unpacked.00404710         ;计算输入注册码的长度
005BD93A|.83E8 10         SUB EAX,10                     ;Switch (cases 10..20)
005BD93D|.74 11         JE SHORT unpacked.005BD950
005BD93F|.83E8 04         SUB EAX,4
005BD942|.74 26         JE SHORT unpacked.005BD96A
005BD944|.83E8 04         SUB EAX,4
005BD947|.74 3B         JE SHORT unpacked.005BD984
005BD949|.83E8 08         SUB EAX,8
005BD94C|.74 50         JE SHORT unpacked.005BD99E
005BD94E|.EB 68         JMP SHORT unpacked.005BD9B8
005BD950|>A1 586A5C00   MOV EAX,DWORD PTR DS:    ;Case 10 of switch 005BD93A
005BD955|.50            PUSH EAX
005BD956|.B9 0A000000   MOV ECX,0A
005BD95B|.BA 06000000   MOV EDX,6
005BD960|.8B45 F4         MOV EAX,DWORD PTR SS:
005BD963|.E8 0870E4FF   CALL unpacked.00404970         ;如果输入16位注册码,从DES结果的第6位起取10个字符
005BD968|.EB 6B         JMP SHORT unpacked.005BD9D5
005BD96A|>A1 586A5C00   MOV EAX,DWORD PTR DS:    ;Case 14 of switch 005BD93A
005BD96F|.50            PUSH EAX
005BD970|.B9 0E000000   MOV ECX,0E
005BD975|.BA 03000000   MOV EDX,3
005BD97A|.8B45 F4         MOV EAX,DWORD PTR SS:
005BD97D|.E8 EE6FE4FF   CALL unpacked.00404970         ;如果输入20位注册码,从DES结果的第3位起取14个字符
005BD982|.EB 51         JMP SHORT unpacked.005BD9D5
005BD984|>A1 586A5C00   MOV EAX,DWORD PTR DS:    ;Case 18 of switch 005BD93A
005BD989|.50            PUSH EAX
005BD98A|.B9 10000000   MOV ECX,10
005BD98F|.BA 05000000   MOV EDX,5
005BD994|.8B45 F4         MOV EAX,DWORD PTR SS:
005BD997|.E8 D46FE4FF   CALL unpacked.00404970         ;如果输入24位注册码,从DES结果的第5位起取16个字符
005BD99C|.EB 37         JMP SHORT unpacked.005BD9D5
005BD99E|>A1 586A5C00   MOV EAX,DWORD PTR DS:    ;Case 20 of switch 005BD93A
005BD9A3|.50            PUSH EAX
005BD9A4|.B9 0C000000   MOV ECX,0C
005BD9A9|.BA 0C000000   MOV EDX,0C
005BD9AE|.8B45 F4         MOV EAX,DWORD PTR SS:
005BD9B1|.E8 BA6FE4FF   CALL unpacked.00404970         ;如果输入32位注册码,从DES结果的第12位起取32个字符
005BD9B6|.EB 1D         JMP SHORT unpacked.005BD9D5      ;以上已经完成了对注册码的处理,取出的字符等待存入注册表
005BD9B8|>6A 30         PUSH 30                        ;Default case of switch 005BD93A
005BD9BA|.B9 14DB5B00   MOV ECX,unpacked.005BDB14      ;如果输入的注册码不是以上长度,就到这里,OVER了
005BD9BF|.BA 20DB5B00   MOV EDX,unpacked.005BDB20
005BD9C4|.A1 A46C5C00   MOV EAX,DWORD PTR DS:
005BD9C9|.8B00            MOV EAX,DWORD PTR DS:
005BD9CB|.E8 A477EBFF   CALL unpacked.00475174
005BD9D0|.E9 CB000000   JMP unpacked.005BDAA0            ;这个JMP,跳向注册码错误的对话框
005BD9D5|>B2 01         MOV DL,1
005BD9D7|.A1 FCD34300   MOV EAX,DWORD PTR DS:
005BD9DC|.E8 1BFBE7FF   CALL unpacked.0043D4FC
005BD9E1|.8BD8            MOV EBX,EAX
005BD9E3|.BA 02000080   MOV EDX,80000002
005BD9E8|.8BC3            MOV EAX,EBX
005BD9EA|.E8 ADFBE7FF   CALL unpacked.0043D59C
005BD9EF|.B1 01         MOV CL,1
005BD9F1|.BA 48DB5B00   MOV EDX,unpacked.005BDB48      ;ASCII "\SOFTWARE\Microsoft\Windows\CurrentVersion\zlb"
005BD9F6|.8BC3            MOV EAX,EBX
005BD9F8|.E8 07FCE7FF   CALL unpacked.0043D604
005BD9FD|.84C0            TEST AL,AL
005BD9FF|.74 14         JE SHORT unpacked.005BDA15
005BDA01|.8B0D 586A5C00   MOV ECX,DWORD PTR DS:    ;unpacked.005C92E0
005BDA07|.8B09            MOV ECX,DWORD PTR DS:
005BDA09|.BA 0CDB5B00   MOV EDX,unpacked.005BDB0C      ;ASCII "dream"
005BDA0E|.8BC3            MOV EAX,EBX
005BDA10|.E8 3300E8FF   CALL unpacked.0043DA48         ;下面代码是将注册码的处理结果存入注册表中
005BDA15|>8BC3            MOV EAX,EBX
005BDA17|.E8 50FBE7FF   CALL unpacked.0043D56C
005BDA1C|.8BC3            MOV EAX,EBX
005BDA1E|.E8 E15BE4FF   CALL unpacked.00403604

点击OK后重新启动程序,找到字符串"dream"或"whole"来到这儿:

005BAB6C   .B1 01         MOV CL,1
005BAB6E   .BA C0B15B00   MOV EDX,unpacked.005BB1C0      ;ASCII "\SOFTWARE\Microsoft\Windows\CurrentVersion\zlb"
005BAB73   .8BC3            MOV EAX,EBX
005BAB75   .E8 8A2AE8FF   CALL unpacked.0043D604
005BAB7A   .84C0            TEST AL,AL
005BAB7C   .74 1F         JE SHORT unpacked.005BAB9D
005BAB7E   .8D4D D4         LEA ECX,DWORD PTR SS:
005BAB81   .BA F8B15B00   MOV EDX,unpacked.005BB1F8      ;ASCII "dream"
005BAB86   .8BC3            MOV EAX,EBX
005BAB88   .E8 E72EE8FF   CALL unpacked.0043DA74         ;从注册表中取出保存的注册码的信息
005BAB8D   .8B55 D4         MOV EDX,DWORD PTR SS:
005BAB90   .8B45 FC         MOV EAX,DWORD PTR SS:
005BAB93   .05 00040000   ADD EAX,400
005BAB98   .E8 EB98E4FF   CALL unpacked.00404488
005BAB9D   >B1 01         MOV CL,1
005BAB9F   .BA 08B25B00   MOV EDX,unpacked.005BB208      ;ASCII "\SOFTWARE\Microsoft\Internet Explorer\ActiveX Compatibility"
005BABA4   .8BC3            MOV EAX,EBX
005BABA6   .E8 592AE8FF   CALL unpacked.0043D604
005BABAB   .84C0            TEST AL,AL
005BABAD   .74 1C         JE SHORT unpacked.005BABCB
005BABAF   .BA 4CB25B00   MOV EDX,unpacked.005BB24C      ;ASCII "{6BF52A52-394A-11D3-B153-00C04F79FAA6}"
005BABB4   .8BC3            MOV EAX,EBX
005BABB6   .E8 A530E8FF   CALL unpacked.0043DC60
005BABBB   .84C0            TEST AL,AL
005BABBD   .74 0C         JE SHORT unpacked.005BABCB
005BABBF   .BA 4CB25B00   MOV EDX,unpacked.005BB24C      ;ASCII "{6BF52A52-394A-11D3-B153-00C04F79FAA6}"
005BABC4   .8BC3            MOV EAX,EBX
005BABC6   .E8 5D2BE8FF   CALL unpacked.0043D728
005BABCB   >BA 01000080   MOV EDX,80000001
005BABD0   .8BC3            MOV EAX,EBX
005BABD2   .E8 C529E8FF   CALL unpacked.0043D59C
005BABD7   .B1 01         MOV CL,1
005BABD9   .BA 7CB25B00   MOV EDX,unpacked.005BB27C      ;ASCII "\SoftWare\Microsoft\Windows\CurrentVersion\polly"
005BABDE   .8BC3            MOV EAX,EBX
005BABE0   .E8 1F2AE8FF   CALL unpacked.0043D604
005BABE5   .84C0            TEST AL,AL
005BABE7   .74 1F         JE SHORT unpacked.005BAC08
005BABE9   .8D4D D0         LEA ECX,DWORD PTR SS:
005BABEC   .BA B8B25B00   MOV EDX,unpacked.005BB2B8      ;ASCII "whole"
005BABF1   .8BC3            MOV EAX,EBX
005BABF3   .E8 7C2EE8FF   CALL unpacked.0043DA74         ;从注册表中取出保存用户名的信息
005BABF8   .8B55 D0         MOV EDX,DWORD PTR SS:
005BABFB   .8B45 FC         MOV EAX,DWORD PTR SS:
005BABFE   .05 04040000   ADD EAX,404
005BAC03   .E8 8098E4FF   CALL unpacked.00404488
005BAC08   >8BC3            MOV EAX,EBX
005BAC0A   .E8 5D29E8FF   CALL unpacked.0043D56C
005BAC0F   .8BC3            MOV EAX,EBX
005BAC11   .E8 EE89E4FF   CALL unpacked.00403604
005BAC16   .8D4D CC         LEA ECX,DWORD PTR SS:
005BAC19   .8B45 FC         MOV EAX,DWORD PTR SS:
005BAC1C   .8B80 04040000   MOV EAX,DWORD PTR DS:
005BAC22   .BA C8B25B00   MOV EDX,unpacked.005BB2C8      ;ASCII "zlbpolly"
005BAC27   .E8 44C6EBFF   CALL unpacked.00477270         ;用DES_DE( )解密用户名,将用户名还原出来
005BAC2C   .8B55 CC         MOV EDX,DWORD PTR SS:
005BAC2F   .8B45 FC         MOV EAX,DWORD PTR SS:
005BAC32   .05 04040000   ADD EAX,404
005BAC37   .E8 4C98E4FF   CALL unpacked.00404488
005BAC3C   .8B45 FC         MOV EAX,DWORD PTR SS:
005BAC3F   .8B80 04040000   MOV EAX,DWORD PTR DS:
005BAC45   .BA DCB25B00   MOV EDX,unpacked.005BB2DC      ;丁世龙
005BAC4A   .E8 0D9CE4FF   CALL unpacked.0040485C
005BAC4F   .74 69         JE SHORT unpacked.005BACBA
005BAC51   .8B45 FC         MOV EAX,DWORD PTR SS:
005BAC54   .8B80 04040000   MOV EAX,DWORD PTR DS:
005BAC5A   .BA ECB25B00   MOV EDX,unpacked.005BB2EC      ;ASCII "8348006"
005BAC5F   .E8 F89BE4FF   CALL unpacked.0040485C
005BAC64   .74 54         JE SHORT unpacked.005BACBA
005BAC66   .8B45 FC         MOV EAX,DWORD PTR SS:
005BAC69   .8B80 04040000   MOV EAX,DWORD PTR DS:
005BAC6F   .BA FCB25B00   MOV EDX,unpacked.005BB2FC      ;ASCII "zhaoguihu"
005BAC74   .E8 E39BE4FF   CALL unpacked.0040485C
005BAC79   .74 3F         JE SHORT unpacked.005BACBA
005BAC7B   .8B45 FC         MOV EAX,DWORD PTR SS:
005BAC7E   .8B80 04040000   MOV EAX,DWORD PTR DS:
005BAC84   .BA 10B35B00   MOV EDX,unpacked.005BB310      ;ASCII "wwwjjj"
005BAC89   .E8 CE9BE4FF   CALL unpacked.0040485C
005BAC8E   .74 2A         JE SHORT unpacked.005BACBA
005BAC90   .8B45 FC         MOV EAX,DWORD PTR SS:
005BAC93   .8B80 04040000   MOV EAX,DWORD PTR DS:
005BAC99   .BA 20B35B00   MOV EDX,unpacked.005BB320      ;吴小龙
005BAC9E   .E8 B99BE4FF   CALL unpacked.0040485C
005BACA3   .74 15         JE SHORT unpacked.005BACBA
005BACA5   .8B45 FC         MOV EAX,DWORD PTR SS:
005BACA8   .8B80 04040000   MOV EAX,DWORD PTR DS:
005BACAE   .BA 30B35B00   MOV EDX,unpacked.005BB330      ;刘光军
005BACB3   .E8 A49BE4FF   CALL unpacked.0040485C
005BACB8   .75 1A         JNZ SHORT unpacked.005BACD4
005BACBA   >8B45 FC         MOV EAX,DWORD PTR SS:
005BACBD   .E8 EAFCFFFF   CALL unpacked.005BA9AC
005BACC2   .8B45 FC         MOV EAX,DWORD PTR SS:
005BACC5   .05 04040000   ADD EAX,404
005BACCA   .BA 40B35B00   MOV EDX,unpacked.005BB340
005BACCF   .E8 B497E4FF   CALL unpacked.00404488
005BACD4   >8D55 C0         LEA EDX,DWORD PTR SS:    ;上面的名字都是一些黑名单,对比后跳到这里继续对用户名处理
005BACD7   .8B45 FC         MOV EAX,DWORD PTR SS:
005BACDA   .8B80 04040000   MOV EAX,DWORD PTR DS:
005BACE0   .E8 8FD1EBFF   CALL unpacked.00477E74         ;MD5(用户名)
005BACE5   .8B45 C0         MOV EAX,DWORD PTR SS:
005BACE8   .8D4D C4         LEA ECX,DWORD PTR SS:
005BACEB   .8B55 FC         MOV EDX,DWORD PTR SS:
005BACEE   .8B92 08040000   MOV EDX,DWORD PTR DS:
005BACF4   .E8 8FC3EBFF   CALL unpacked.00477088         ;DES_EN(),Key=机器码
005BACF9   .8B45 C4         MOV EAX,DWORD PTR SS:
005BACFC   .8D55 C8         LEA EDX,DWORD PTR SS:
005BACFF   .E8 70D1EBFF   CALL unpacked.00477E74         ;MD5( )
005BAD04   .8B55 C8         MOV EDX,DWORD PTR SS:
005BAD07   .8B45 FC         MOV EAX,DWORD PTR SS:
005BAD0A   .05 10040000   ADD EAX,410
005BAD0F   .E8 7497E4FF   CALL unpacked.00404488
005BAD14   .8B45 FC         MOV EAX,DWORD PTR SS:
005BAD17   .8B80 00040000   MOV EAX,DWORD PTR DS:
005BAD1D   .E8 EE99E4FF   CALL unpacked.00404710         ;判断注册表中保存注册码信息的长度,应该有四种可能:10,14,16,12分别对应注册码的长度是16、20、24、32
005BAD22   .83E8 0A         SUB EAX,0A                     ;Switch (cases A..10)
005BAD25   .74 7E         JE SHORT unpacked.005BADA5
005BAD27   .83E8 02         SUB EAX,2
005BAD2A   .74 17         JE SHORT unpacked.005BAD43
005BAD2C   .83E8 02         SUB EAX,2
005BAD2F   .0F84 52010000   JE unpacked.005BAE87
005BAD35   .83E8 02         SUB EAX,2
005BAD38   .0F84 2B020000   JE unpacked.005BAF69
005BAD3E   .E9 E6030000   JMP unpacked.005BB129
005BAD43   >8B45 FC         MOV EAX,DWORD PTR SS:   ;Case C of switch 005BAD22
005BAD46   .05 0C040000   ADD EAX,40C                      ;如果长度位12,即当时填入32位假码,就跳到这里
005BAD4B   .8B55 FC         MOV EDX,DWORD PTR SS:
005BAD4E   .8B92 10040000   MOV EDX,DWORD PTR DS:
005BAD54   .E8 2F97E4FF   CALL unpacked.00404488
005BAD59   .68 E0925C00   PUSH unpacked.005C92E0
005BAD5E   .8D55 B8         LEA EDX,DWORD PTR SS:
005BAD61   .8B45 FC         MOV EAX,DWORD PTR SS:
005BAD64   .8B80 0C040000   MOV EAX,DWORD PTR DS:
005BAD6A   .E8 05D1EBFF   CALL unpacked.00477E74         ;MD( )如果输入32个字符的假码,就在这里做内存注册机吧
005BAD6F   .8B45 B8         MOV EAX,DWORD PTR SS:
005BAD72   .8D4D BC         LEA ECX,DWORD PTR SS:
005BAD75   .BA F8B15B00   MOV EDX,unpacked.005BB1F8      ;ASCII "dream"
005BAD7A   .E8 09C3EBFF   CALL unpacked.00477088         ;DES_EN( ),Key="dream"
005BAD7F   .8B45 BC         MOV EAX,DWORD PTR SS:
005BAD82   .B9 0C000000   MOV ECX,0C
005BAD87   .BA 0C000000   MOV EDX,0C
005BAD8C   .E8 DF9BE4FF   CALL unpacked.00404970         ;第12位起取12个字符
005BAD91   .33C0            XOR EAX,EAX
005BAD93   .A3 E8925C00   MOV DWORD PTR DS:,EAX
005BAD98   .8D45 F0         LEA EAX,DWORD PTR SS:
005BAD9B   .E8 9496E4FF   CALL unpacked.00404434
005BADA0   .E9 B9020000   JMP unpacked.005BB05E
005BADA5   >8D45 B4         LEA EAX,DWORD PTR SS:    ;Case A of switch 005BAD22
005BADA8   .50            PUSH EAX                         ;如果长度位10,即当时填入16位假码,就跳到这里
005BADA9   .8B45 FC         MOV EAX,DWORD PTR SS:
005BADAC   .8B80 10040000   MOV EAX,DWORD PTR DS:
005BADB2   .B9 05000000   MOV ECX,5
005BADB7   .BA 10000000   MOV EDX,10
005BADBC   .E8 AF9BE4FF   CALL unpacked.00404970         ;第16位起取5个字符
005BADC1   .FF75 B4         PUSH DWORD PTR SS:
005BADC4   .8D45 B0         LEA EAX,DWORD PTR SS:
005BADC7   .50            PUSH EAX
005BADC8   .8B45 FC         MOV EAX,DWORD PTR SS:
005BADCB   .8B80 10040000   MOV EAX,DWORD PTR DS:
005BADD1   .B9 04000000   MOV ECX,4
005BADD6   .BA 04000000   MOV EDX,4
005BADDB   .E8 909BE4FF   CALL unpacked.00404970         ;第4位起取4个字符
005BADE0   .FF75 B0         PUSH DWORD PTR SS:
005BADE3   .8D45 AC         LEA EAX,DWORD PTR SS:
005BADE6   .50            PUSH EAX
005BADE7   .8B45 FC         MOV EAX,DWORD PTR SS:
005BADEA   .8B80 10040000   MOV EAX,DWORD PTR DS:
005BADF0   .B9 04000000   MOV ECX,4
005BADF5   .BA 12000000   MOV EDX,12
005BADFA   .E8 719BE4FF   CALL unpacked.00404970         ;第18位起取4个字符
005BADFF   .FF75 AC         PUSH DWORD PTR SS:
005BAE02   .8D45 A8         LEA EAX,DWORD PTR SS:
005BAE05   .50            PUSH EAX
005BAE06   .8B45 FC         MOV EAX,DWORD PTR SS:
005BAE09   .8B80 10040000   MOV EAX,DWORD PTR DS:
005BAE0F   .B9 03000000   MOV ECX,3
005BAE14   .BA 1D000000   MOV EDX,1D
005BAE19   .E8 529BE4FF   CALL unpacked.00404970         ;第29起取3个字符
005BAE1E   .FF75 A8         PUSH DWORD PTR SS:
005BAE21   .8B45 FC         MOV EAX,DWORD PTR SS:
005BAE24   .05 0C040000   ADD EAX,40C
005BAE29   .BA 04000000   MOV EDX,4
005BAE2E   .E8 9D99E4FF   CALL unpacked.004047D0         ;合并取出的字符,这里也是一个长度是16的标准版的真注册码
005BAE33   .68 E0925C00   PUSH unpacked.005C92E0
005BAE38   .8D55 A0         LEA EDX,DWORD PTR SS:
005BAE3B   .8B45 FC         MOV EAX,DWORD PTR SS:
005BAE3E   .8B80 0C040000   MOV EAX,DWORD PTR DS:
005BAE44   .E8 2BD0EBFF   CALL unpacked.00477E74         ;MD5( )如果输入16个字符的假码,就在这里做内存注册机吧
005BAE49   .8B45 A0         MOV EAX,DWORD PTR SS:
005BAE4C   .8D4D A4         LEA ECX,DWORD PTR SS:
005BAE4F   .BA F8B15B00   MOV EDX,unpacked.005BB1F8      ;ASCII "dream"
005BAE54   .E8 2FC2EBFF   CALL unpacked.00477088         ;DES_EN( ),key="dream"
005BAE59   .8B45 A4         MOV EAX,DWORD PTR SS:
005BAE5C   .B9 0A000000   MOV ECX,0A
005BAE61   .BA 06000000   MOV EDX,6
005BAE66   .E8 059BE4FF   CALL unpacked.00404970         ;第6位起取10个字符
005BAE6B   .C705 E8925C00 0>MOV DWORD PTR DS:,1
005BAE75   .8D45 F0         LEA EAX,DWORD PTR SS:
005BAE78   .BA 4CB35B00   MOV EDX,unpacked.005BB34C
005BAE7D   .E8 4A96E4FF   CALL unpacked.004044CC
005BAE82   .E9 D7010000   JMP unpacked.005BB05E
005BAE87   >8D45 9C         LEA EAX,DWORD PTR SS:    ;Case E of switch 005BAD22
005BAE8A   .50            PUSH EAX                         ;如果长度位14,即当时填入20位假码,就跳到这里
005BAE8B   .8B45 FC         MOV EAX,DWORD PTR SS:
005BAE8E   .8B80 10040000   MOV EAX,DWORD PTR DS:
005BAE94   .B9 05000000   MOV ECX,5
005BAE99   .BA 03000000   MOV EDX,3
005BAE9E   .E8 CD9AE4FF   CALL unpacked.00404970         ;从上面用户名处理结果中第3位起取5个字符
005BAEA3   .FF75 9C         PUSH DWORD PTR SS:
005BAEA6   .8D45 98         LEA EAX,DWORD PTR SS:
005BAEA9   .50            PUSH EAX
005BAEAA   .8B45 FC         MOV EAX,DWORD PTR SS:
005BAEAD   .8B80 10040000   MOV EAX,DWORD PTR DS:
005BAEB3   .B9 02000000   MOV ECX,2
005BAEB8   .BA 1D000000   MOV EDX,1D
005BAEBD   .E8 AE9AE4FF   CALL unpacked.00404970         ;第29位起取2个字符
005BAEC2   .FF75 98         PUSH DWORD PTR SS:
005BAEC5   .8D45 94         LEA EAX,DWORD PTR SS:
005BAEC8   .50            PUSH EAX
005BAEC9   .8B45 FC         MOV EAX,DWORD PTR SS:
005BAECC   .8B80 10040000   MOV EAX,DWORD PTR DS:
005BAED2   .B9 06000000   MOV ECX,6
005BAED7   .BA 0C000000   MOV EDX,0C
005BAEDC   .E8 8F9AE4FF   CALL unpacked.00404970         ;第13位起取6个字符
005BAEE1   .FF75 94         PUSH DWORD PTR SS:
005BAEE4   .8D45 90         LEA EAX,DWORD PTR SS:
005BAEE7   .50            PUSH EAX
005BAEE8   .8B45 FC         MOV EAX,DWORD PTR SS:
005BAEEB   .8B80 10040000   MOV EAX,DWORD PTR DS:
005BAEF1   .B9 07000000   MOV ECX,7
005BAEF6   .BA 06000000   MOV EDX,6
005BAEFB   .E8 709AE4FF   CALL unpacked.00404970         ;第6位起取7个字符
005BAF00   .FF75 90         PUSH DWORD PTR SS:
005BAF03   .8B45 FC         MOV EAX,DWORD PTR SS:
005BAF06   .05 0C040000   ADD EAX,40C
005BAF0B   .BA 04000000   MOV EDX,4
005BAF10   .E8 BB98E4FF   CALL unpacked.004047D0         ;合并上面字符,得到一个长度位20的VIP版的真注册码
005BAF15   .68 E0925C00   PUSH unpacked.005C92E0
005BAF1A   .8D55 88         LEA EDX,DWORD PTR SS:
005BAF1D   .8B45 FC         MOV EAX,DWORD PTR SS:
005BAF20   .8B80 0C040000   MOV EAX,DWORD PTR DS:
005BAF26   .E8 49CFEBFF   CALL unpacked.00477E74         ;MD5( )如果输入20个字符的假码,就在这里做内存注册机吧
005BAF2B   .8B45 88         MOV EAX,DWORD PTR SS:
005BAF2E   .8D4D 8C         LEA ECX,DWORD PTR SS:
005BAF31   .BA F8B15B00   MOV EDX,unpacked.005BB1F8      ;ASCII "dream"
005BAF36   .E8 4DC1EBFF   CALL unpacked.00477088         ;DES_EN( )运算,Key="dream"
005BAF3B   .8B45 8C         MOV EAX,DWORD PTR SS:
005BAF3E   .B9 0E000000   MOV ECX,0E
005BAF43   .BA 03000000   MOV EDX,3
005BAF48   .E8 239AE4FF   CALL unpacked.00404970         ;从第3位起取14个字符
005BAF4D   .C705 E8925C00 0>MOV DWORD PTR DS:,2
005BAF57   .8D45 F0         LEA EAX,DWORD PTR SS:
005BAF5A   .BA 60B35B00   MOV EDX,unpacked.005BB360
005BAF5F   .E8 6895E4FF   CALL unpacked.004044CC
005BAF64   .E9 F5000000   JMP unpacked.005BB05E
005BAF69   >8D45 84         LEA EAX,DWORD PTR SS:    ;Case 10 of switch 005BAD22
005BAF6C   .50            PUSH EAX                         ;如果长度位16,即当时填入24位假码,就跳到这里
005BAF6D   .8B45 FC         MOV EAX,DWORD PTR SS:
005BAF70   .8B80 10040000   MOV EAX,DWORD PTR DS:
005BAF76   .B9 06000000   MOV ECX,6
005BAF7B   .BA 08000000   MOV EDX,8
005BAF80   .E8 EB99E4FF   CALL unpacked.00404970         ;第8位起取6个字符
005BAF85   .FF75 84         PUSH DWORD PTR SS:
005BAF88   .8D45 80         LEA EAX,DWORD PTR SS:
005BAF8B   .50            PUSH EAX
005BAF8C   .8B45 FC         MOV EAX,DWORD PTR SS:
005BAF8F   .8B80 10040000   MOV EAX,DWORD PTR DS:
005BAF95   .B9 07000000   MOV ECX,7
005BAF9A   .BA 12000000   MOV EDX,12
005BAF9F   .E8 CC99E4FF   CALL unpacked.00404970         ;第18位起取7个字符
005BAFA4   .FF75 80         PUSH DWORD PTR SS:
005BAFA7   .8D85 7CFFFFFF   LEA EAX,DWORD PTR SS:
005BAFAD   .50            PUSH EAX
005BAFAE   .8B45 FC         MOV EAX,DWORD PTR SS:
005BAFB1   .8B80 10040000   MOV EAX,DWORD PTR DS:
005BAFB7   .B9 08000000   MOV ECX,8
005BAFBC   .BA 17000000   MOV EDX,17
005BAFC1   .E8 AA99E4FF   CALL unpacked.00404970         ;第23位起取8个字符
005BAFC6   .FFB5 7CFFFFFF   PUSH DWORD PTR SS:
005BAFCC   .8D85 78FFFFFF   LEA EAX,DWORD PTR SS:
005BAFD2   .50            PUSH EAX
005BAFD3   .8B45 FC         MOV EAX,DWORD PTR SS:
005BAFD6   .8B80 10040000   MOV EAX,DWORD PTR DS:
005BAFDC   .B9 03000000   MOV ECX,3
005BAFE1   .BA 0D000000   MOV EDX,0D
005BAFE6   .E8 8599E4FF   CALL unpacked.00404970         ;第13位起取3个字符
005BAFEB   .FFB5 78FFFFFF   PUSH DWORD PTR SS:
005BAFF1   .8B45 FC         MOV EAX,DWORD PTR SS:
005BAFF4   .05 0C040000   ADD EAX,40C
005BAFF9   .BA 04000000   MOV EDX,4
005BAFFE   .E8 CD97E4FF   CALL unpacked.004047D0         ;合并得到钻石版的真注册码
005BB003   .68 E0925C00   PUSH unpacked.005C92E0
005BB008   .8D95 70FFFFFF   LEA EDX,DWORD PTR SS:
005BB00E   .8B45 FC         MOV EAX,DWORD PTR SS:
005BB011   .8B80 0C040000   MOV EAX,DWORD PTR DS:
005BB017   .E8 58CEEBFF   CALL unpacked.00477E74         ;MD5( )如果输入24个字符的假码,就在这里做内存注册机吧
005BB01C   .8B85 70FFFFFF   MOV EAX,DWORD PTR SS:
005BB022   .8D8D 74FFFFFF   LEA ECX,DWORD PTR SS:
005BB028   .BA F8B15B00   MOV EDX,unpacked.005BB1F8      ;ASCII "dream"
005BB02D   .E8 56C0EBFF   CALL unpacked.00477088         ;DES_EN( ),Key="dream"
005BB032   .8B85 74FFFFFF   MOV EAX,DWORD PTR SS:
005BB038   .B9 10000000   MOV ECX,10
005BB03D   .BA 05000000   MOV EDX,5
005BB042   .E8 2999E4FF   CALL unpacked.00404970         ;第5位起取16的字符
005BB047   .C705 E8925C00 0>MOV DWORD PTR DS:,3
005BB051   .8D45 F0         LEA EAX,DWORD PTR SS:
005BB054   .BA 70B35B00   MOV EDX,unpacked.005BB370
005BB059   .E8 6E94E4FF   CALL unpacked.004044CC
005BB05E   >8D85 68FFFFFF   LEA EAX,DWORD PTR SS:    ;下面代码比较第2位起的5个字符
005BB064   .50            PUSH EAX
005BB065   .B9 05000000   MOV ECX,5
005BB06A   .BA 02000000   MOV EDX,2
005BB06F   .A1 E0925C00   MOV EAX,DWORD PTR DS:
005BB074   .E8 F798E4FF   CALL unpacked.00404970         ;第2位起取5个字符
005BB079   .8B85 68FFFFFF   MOV EAX,DWORD PTR SS:
005BB07F   .8D95 6CFFFFFF   LEA EDX,DWORD PTR SS:
005BB085   .E8 36F8FFFF   CALL unpacked.005BA8C0         ;转换位ASC码+空格的形式
005BB08A   .8B85 6CFFFFFF   MOV EAX,DWORD PTR SS:
005BB090   .50            PUSH EAX
005BB091   .8D85 60FFFFFF   LEA EAX,DWORD PTR SS:
005BB097   .50            PUSH EAX
005BB098   .8B45 FC         MOV EAX,DWORD PTR SS:
005BB09B   .8B80 00040000   MOV EAX,DWORD PTR DS:
005BB0A1   .B9 05000000   MOV ECX,5
005BB0A6   .BA 02000000   MOV EDX,2
005BB0AB   .E8 C098E4FF   CALL unpacked.00404970         ;第2位起取5个字符
005BB0B0   .8B85 60FFFFFF   MOV EAX,DWORD PTR SS:
005BB0B6   .8D95 64FFFFFF   LEA EDX,DWORD PTR SS:
005BB0BC   .E8 FFF7FFFF   CALL unpacked.005BA8C0         ;转换位ASC码+空格的形式
005BB0C1   .8B95 64FFFFFF   MOV EDX,DWORD PTR SS:
005BB0C7   .58            POP EAX
005BB0C8   .E8 8F97E4FF   CALL unpacked.0040485C         ;比较
005BB0CD   .75 5A         JNZ SHORT unpacked.005BB129
005BB0CF   .C605 E0645C00 0>MOV BYTE PTR DS:,1
005BB0D6   .833D E8925C00 0>CMP DWORD PTR DS:,1
005BB0DD   .74 07         JE SHORT unpacked.005BB0E6
005BB0DF   .C605 E4645C00 0>MOV BYTE PTR DS:,1
005BB0E6   >8B45 FC         MOV EAX,DWORD PTR SS:
005BB0E9   .8B80 AC030000   MOV EAX,DWORD PTR DS:
005BB0EF   .33D2            XOR EDX,EDX

DES加密或解密过程中,因为密钥至少要有64位,如有几次密钥Key="dream",密钥只有40位,因此要填充24个0

----------------------------------------------------------------------------------------------
【破解心得】

作者没有采用了注册码的明码比较。对用户名和注册码的处理过程大致是这样的;

注册码——MD5( )——DES_EN( ,Key="dream")——抽取字符——存入注册表——重启程序读注册表

用户名——DES_EN( ,Key="zlbpolly")——存入注册表——重启程序读注册表——DES_DE( ,Key="zlbpolly")还原用户名——MD5( )——抽取字符形成真注册码——MD5( )——DES_EN( Key="dream")——抽取字符

经过上述过程后将用户名和注册码得到的最终结果比较其中的一部分字符。

有没有发现用户名和注册码最后一段处理是一样的,其实真码的形成很简单:

用户名——经过MD5( )运算——DES_EN( Key="机器码")——MD5( )——根据版本钻石版还是标准版抽取相应字符形成真码。

编写算法注册机时要注意,MD5( )的结果以小写16进制输出,DES( )的结果以大写16禁止文本输出:

如:"rdsnow"的MD5输出为:"28a5ec4ecec3e6227fbffdcedeec1bc4"

"28a5ec4ecec3e6227fbffdcedeec1bc4"的DES( key=机器码)输出(我的Key是"67f2a822")为:"B51E989F74EEE338B51ABC5A6AB315FD42B634367DDF2D96BEC3B6004B5C2422"

再经过一次MD5( )得到"b196b34a23783d94922e8b4ca5f92a7a"

抽取不同位置的字符得到不同版本的注册码:

用户名:rdsnow,机器码 "67f2a822"

未知版:b196b34a23783d94922e8b4ca5f92a7a (32个字符)(未能通过后面的长度验证)

标准版:4922e6b3422e82a7 (16个字符)

VIP 版:96b342a83d94934a2378 (20个字符)

钻石版:a2378322e8b4c4ca5f92a3d9 (24个字符)

因为个人的机器码不一样,所以注册码也不一样。

----------------------------------------------------------------------------------------------
【破解声明】   我是一只小菜鸟,偶得一点心得,愿与大家分享:)

【版权声明】   本文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!
----------------------------------------------------------------------------------------------
                                                                     文章写于2005-8-25 17:55:37

Nisy 发表于 2005-9-11 06:42:06

学习一下~

ayan 发表于 2005-9-11 10:53:48

good!

hrbx 发表于 2005-9-12 13:09:05

不错, 支持,学习

gwp02 发表于 2005-10-20 23:09:40

qxtianlong 发表于 2005-10-21 10:40:02

强。。。学习了。。。

cariolee 发表于 2020-3-5 10:41:27

学习了,好好学习!!
页: [1]
查看完整版本: 流星网络电视V1.9.2.0的注册