• 标 题:超级视网V1.51破解笔记[爆破,算法]
  • 作 者:辉仔Yock
  • 时 间:2003/08/27 01:19am
  • 链 接:http://bbs.pediy.com

【前    言】:以前破了1.1版本的,最近ljwbh提示这个软件又有新花样,要我继续学习,所以我升级了这个软件

,后发现这个版本变成未注册了!所以...

【软件名称】:超级网视1.51

【下载页面】:中国共享软件注册中心

【软件大小】:1376KB

【应用平台】:WIN9X/WINNT/WIN2K/WINXP

【软件简介】:
1、“超级网视”是一款绿色软件,运行过程中不会在系统目录及注册表增添任何内容。
2、本软件主要功能是为了充分利用宽带网络的资源,通过网络收看电视节目,收听广播节目,以及网络中的

其他在线影视节目。并可以播放几乎所有的本的及网络媒体文件(如*.dat, *.wav, *.avi, *.mov, *.mmm,

*.mid, *.rmi, *.mpg, *.rm, *.ram, *.ra, *.swf, *.mp3, *.asf等格式)。
3、可自行定义多达10个快捷频道,单击主界面按钮即可播放相应的节目。
4、软件有两种语言版本,简体中文(GB2312)及繁体中文(BIG5),需分别下载。
5、拥有在线检查新版本,注册后可实现在线升级数据文件及程序文件的功能。
6、界面华丽美观,仿Windows XP界面,并可通过设置即时改变多种界面风格。

【软件限制】:可以免费使用,但启动的时候和每半小时就会弹出一个提醒注册的窗口!

【文章作者】:辉仔Yock[DFCG][YCG][OCN][CTR]

【作者声明】:本人发表这篇文章只是为了学习和研究!!!请不用于商业用途或是将本文方法制作的注册机或是

补丁文件任意传播,读者看了文章后所做的事情与我无关,我也不会负责,请读者看了文章后三思而后行!最后希

望大家在经济基础好的时候,支持共享软件!(在这里最此软件的作者以万二分的歉意鞠躬...)

【破解工具】:Ollydbg1.09-d  PEiD0.9  ImportREC(中文)  Hiew v6.81

—————————————————————————————————
【过    程】:
用PEiD侦察出主程序SuperTVPlayer.exe是ASPack 2.12 -> Alexey Solodovnikov加的壳!

用PEid查找OEP(嘻嘻,我就是喜欢PEid的这个强大功能,但现在的0.9版本又个bug就是有时候没有查OEP这个按钮

),得知OEP=5522E0

运行Ollydbg 按F3加载主程序SuperTVPlayer.exe 弹出一个框(按确定) 再弹出一个框(按NO) 会自动中断!

然后打命令g 5522E0  来到了程序的入口5522E0(嘻嘻..)

用脱壳插件把它Dump下来,记得要另外起个新的名字(TKSuperTVPlayer.exe)再按保存哦!(N久之后久OK了...)

那么现在运行一下脱壳后的程序TKSuperTVPlayer.exe出错(理所当然,没有修复输入表!!!)

那么现在回到Ollydbg,按F9(即运行软件,这个是我个人习惯)运行软件!

然后运行ImportREC,在最高(选择一个使用中的程序)那里选.../SuperTVPlayer.exe这行!

接着在ImportREC的左下角(IAT 所需信息)那里把OEP的值填好!(很重要,我这里得到的OEP是5522E0,那么在这里

就要输入5522E0-40000=1522E0就OK了!)然后按旁边那个(IAT自动搜索),弹出一个框后按确定!

然后就按ImportREC左下角的(获得输入信息),接着中间的大框会出来很多东西,接着按ImportREC右边从上往下

数第二个按钮(显示无效的),这个时候看看中间大框没有ON或是否的就表示行了!(有NO或是否就表示要搜索函数

了!还好我这里没有!如果有NO或否的话就在中间的大框对着NO的地方单击右键,用追踪成次1\2\3和用ImportREC

插件来查找函数!再不行的话就要手动了!)直到所有的函数都变成YES或是的时候就可以按ImportREC下面的那个

(修理抓取文件)来修复TKSuperTVPlayer.exe了!修理成功后再同目录下会有一个TKSuperTVPlayer.exe_.exe文

件!


[[呵呵,这里脱壳和昨天破的"心梦网页特效管理专家8.0 XP"差不多!]]
---------------------------------------------------------
因为软件是输入注册码后通过网络验证的,所以一开始我打算爆破的!经过跟踪后有惊人的发现(请一直看下去就

知道了)!

由于它的注册信息和以前版本一样是保存在同目录的SuperTVPlayer.ini文件的
[System]
RegisterName=Yock196                 \\这里是名字!!!
RegisterCode=9876543210ABCDEFGHI     \\这里最少要19位不同的注册码,不然分析的时候很头晕!!!

由于网络验证,我这里是手动把注册信息加进去的!(不手动加的话,破解难度就大了!)

那么我们现在就用OLLYDBG来试调了!载入后会自动中断在程序的入口处!

根据OLLYDBG强大的参考字串查找"RegisterCode"发现有N处,不管那么多,看见"RegisterCode"就按F2(F2=下断!

别告诉我你不知道哦,这样会很难沟通!)

按F9运行程序!断下后按F8和F7慢慢跟就会来到下面关键处!

0054FF47  |.  E8 6476EDFF   CALL    004275B0
0054FF4C  |.  8B55 F8       MOV     EDX,[LOCAL.2]
0054FF4F  |.  8BC3          MOV     EAX,EBX
0054FF51  |.  E8 EAE6FFFF   CALL    0054E640
                           //注册码是怎么炼成的!F7追进去见下面

0054FF56  |.  84C0          TEST    AL,AL
0054FF58  |.  75 3B         JNZ     SHORT 0054FF95
                           //一定要跳走,不然就变成未注册了!

--------------------------------------------------
//上面0054FF51的call来到这里!

0054E640  /$  55            PUSH    EBP
0054E641  |.  8BEC          MOV     EBP,ESP
0054E643  |.  B9 05000000   MOV     ECX,5
0054E648  |>  6A 00         /PUSH    0
0054E64A  |.  6A 00         |PUSH    0
0054E64C  |.  49            |DEC     ECX
0054E64D  |.^ 75 F9         \JNZ     SHORT 0054E648
0054E64F  |.  51            PUSH    ECX
0054E650  |.  53            PUSH    EBX
0054E651  |.  56            PUSH    ESI
0054E652  |.  8955 FC       MOV     [LOCAL.1],EDX
0054E655  |.  8BD8          MOV     EBX,EAX
0054E657  |.  8B45 FC       MOV     EAX,[LOCAL.1]
0054E65A  |.  E8 B966EBFF   CALL    00404D18
0054E65F  |.  33C0          XOR     EAX,EAX
0054E661  |.  55            PUSH    EBP
0054E662  |.  68 FCE75400   PUSH    0054E7FC
0054E667  |.  64:FF30       PUSH    DWORD PTR FS:[EAX]
0054E66A  |.  64:8920       MOV     FS:[EAX],ESP
0054E66D  |.  8D55 EC       LEA     EDX,[LOCAL.5]
0054E670  |.  8BC3          MOV     EAX,EBX
0054E672  |.  E8 B9FEFFFF   CALL    0054E530
0054E677  |.  8B45 EC       MOV     EAX,[LOCAL.5]
0054E67A  |.  E8 B164EBFF   CALL    00404B30
0054E67F  |.  50            PUSH    EAX
0054E680  |.  8D45 F8       LEA     EAX,[LOCAL.2]
0054E683  |.  B9 01000000   MOV     ECX,1
0054E688  |.  8B15 1CE65400 MOV     EDX,[54E61C]                     ;  TKSUPERT.0054E620
0054E68E  |.  E8 C579EBFF   CALL    00406058
0054E693  |.  83C4 04       ADD     ESP,4
0054E696  |.  8B45 EC       MOV     EAX,[LOCAL.5]
                           //这里是机器码
0054E699  |.  E8 9264EBFF   CALL    00404B30
0054E69E  |.  8BF0          MOV     ESI,EAX
0054E6A0  |.  4E            DEC     ESI
0054E6A1  |.  85F6          TEST    ESI,ESI
0054E6A3  |.  7C 14         JL      SHORT 0054E6B9
0054E6A5  |.  46            INC     ESI
0054E6A6  |.  33DB          XOR     EBX,EBX
                           //这里到下面0054E6B7是一个循环,是把连在一起的机器码变成下面这样分开:
===========================================================================
012DA7BC  59 00 00 00 4D 00 00 00 44 00 00 00 59 00 00 00  Y...M...D...Y...
012DA7CC  4D 00 00 00 48 00 00 00 31 00 00 00 33 00 00 00  M...H...1...3...
012DA7DC  38 00 00 00 33 00 00 00 38                       8...3...8
===========================================================================

0054E6A8  |>  8B45 EC       /MOV     EAX,[LOCAL.5]
0054E6AB  |.  0FB60418      |MOVZX   EAX,BYTE PTR [EAX+EBX]
0054E6AF  |.  8B55 F8       |MOV     EDX,[LOCAL.2]
0054E6B2  |.  89049A        |MOV     [EDX+EBX*4],EAX
0054E6B5  |.  43            |INC     EBX
0054E6B6  |.  4E            |DEC     ESI
0054E6B7  |.^ 75 EF         \JNZ     SHORT 0054E6A8
                           //上面0054E6A8到这里是一个循环!


0054E6B9  |>  C745 F0 00000>MOV     [LOCAL.4],0
0054E6C0  |.  C745 F4 00000>MOV     [LOCAL.3],0
0054E6C7  |.  8B45 EC       MOV     EAX,[LOCAL.5]
                           //这里是机器码

0054E6CA  |.  E8 6164EBFF   CALL    00404B30
                           //取得机器码位数

0054E6CF  |.  8BF0          MOV     ESI,EAX
0054E6D1  |.  4E            DEC     ESI
0054E6D2  |.  85F6          TEST    ESI,ESI
0054E6D4  |.  7C 34         JL      SHORT 0054E70A
0054E6D6  |.  46            INC     ESI
0054E6D7  |.  33DB          XOR     EBX,EBX
                           //这里到下面0054E708是一个循环,是把机器码的ascii码乘起来!

0054E6D9  |>  85DB          /TEST    EBX,EBX
0054E6DB  |.  75 0F         |JNZ     SHORT 0054E6EC
0054E6DD  |.  8B45 F8       |MOV     EAX,[LOCAL.2]
0054E6E0  |.  8B0498        |MOV     EAX,[EAX+EBX*4]
0054E6E3  |.  99            |CDQ
0054E6E4  |.  8945 F0       |MOV     [LOCAL.4],EAX
0054E6E7  |.  8955 F4       |MOV     [LOCAL.3],EDX
0054E6EA  |.  EB 1A         |JMP     SHORT 0054E706
0054E6EC  |>  8B45 F8       |MOV     EAX,[LOCAL.2]
0054E6EF  |.  8B0498        |MOV     EAX,[EAX+EBX*4]
0054E6F2  |.  99            |CDQ
0054E6F3  |.  52            |PUSH    EDX
0054E6F4  |.  50            |PUSH    EAX
0054E6F5  |.  8B45 F0       |MOV     EAX,[LOCAL.4]
0054E6F8  |.  8B55 F4       |MOV     EDX,[LOCAL.3]
0054E6FB  |.  E8 8073EBFF   |CALL    00405A80
0054E700  |.  8945 F0       |MOV     [LOCAL.4],EAX
0054E703  |.  8955 F4       |MOV     [LOCAL.3],EDX
0054E706  |>  43            |INC     EBX
0054E707  |.  4E            |DEC     ESI
0054E708  |.^ 75 CF         \JNZ     SHORT 0054E6D9
                           //上面0054E6D9到这里是一个循环,是把机器码的ascii码乘起来!

0054E70A  |>  BB 01000000   MOV     EBX,1
                           //EBX=1 !!!

0054E70F  |.  8BC3          MOV     EAX,EBX
                           /ebx=eax=1

0054E711  |.  99            CDQ
0054E712  |.  0345 F0       ADD     EAX,[LOCAL.4]
0054E715  |.  1355 F4       ADC     EDX,[LOCAL.3]
0054E718  |.  52            PUSH    EDX
0054E719  |.  50            PUSH    EAX
0054E71A  |.  8D43 0A       LEA     EAX,[EBX+A]
0054E71D  |.  99            CDQ
0054E71E  |.  330424        XOR     EAX,[ESP]
0054E721  |.  335424 04     XOR     EDX,[ESP+4]
0054E725  |.  83C4 08       ADD     ESP,8
0054E728  |.  52            PUSH    EDX
0054E729  |.  50            PUSH    EAX
0054E72A  |.  8D55 EC       LEA     EDX,[LOCAL.5]
0054E72D  |.  B8 08000000   MOV     EAX,8
0054E732  |.  E8 8DADEBFF   CALL    004094C4
0054E737  |.  8D45 E4       LEA     EAX,[LOCAL.7]
0054E73A  |.  50            PUSH    EAX
0054E73B  |.  B9 02000000   MOV     ECX,2
0054E740  |.  BA 03000000   MOV     EDX,3
0054E745  |.  8B45 FC       MOV     EAX,[LOCAL.1]
                           //我输入的假注册码

0054E748  |.  E8 3B66EBFF   CALL    00404D88
                           //这里是取得假注册码第3、4位数的值!

0054E74D  |.  FF75 E4       PUSH    [LOCAL.7]
                           假注册码第3、4位数的值压栈!

0054E750  |.  8D45 E0       LEA     EAX,[LOCAL.8]
0054E753  |.  50            PUSH    EAX
0054E754  |.  B9 02000000   MOV     ECX,2
0054E759  |.  BA 08000000   MOV     EDX,8
0054E75E  |.  8B45 FC       MOV     EAX,[LOCAL.1]
                           //我输入的假注册码

0054E761  |.  E8 2266EBFF   CALL    00404D88
                           //这里是取得假注册码第8、9位数的值!

0054E766  |.  FF75 E0       PUSH    [LOCAL.8]
                           //假注册码第8、9位数的值压栈!

0054E769  |.  8D45 DC       LEA     EAX,[LOCAL.9]
0054E76C  |.  50            PUSH    EAX
0054E76D  |.  B9 02000000   MOV     ECX,2
0054E772  |.  BA 0D000000   MOV     EDX,0D
0054E777  |.  8B45 FC       MOV     EAX,[LOCAL.1]
                           //我输入的假注册码

0054E77A  |.  E8 0966EBFF   CALL    00404D88
                           //这里是取得假注册码第13、14位数的值!

0054E77F  |.  FF75 DC       PUSH    [LOCAL.9]
                           //假注册码第13、14位数的值压栈!

0054E782  |.  8D45 D8       LEA     EAX,[LOCAL.10]
0054E785  |.  50            PUSH    EAX
0054E786  |.  B9 02000000   MOV     ECX,2
0054E78B  |.  BA 12000000   MOV     EDX,12
0054E790  |.  8B45 FC       MOV     EAX,[LOCAL.1]
                           //我输入的假注册码

0054E793  |.  E8 F065EBFF   CALL    00404D88
                           //这里是取得假注册码第18、19位数的值

0054E798  |.  FF75 D8       PUSH    [LOCAL.10]
                           //假注册码第18、19位数的值压栈!

0054E79B  |.  8D45 E8       LEA     EAX,[LOCAL.6]
0054E79E  |.  BA 04000000   MOV     EDX,4
0054E7A3  |.  E8 4864EBFF   CALL    00404BF0
                           //这里是把假注册码第3、4、8、9、13、14、18、19位连在一起!

0054E7A8  |.  8D4D D4       LEA     ECX,[LOCAL.11]
0054E7AB  |.  BA 08000000   MOV     EDX,8
0054E7B0  |.  8B45 EC       MOV     EAX,[LOCAL.5]
0054E7B3  |.  E8 E858EFFF   CALL    004440A0
                           //这里是把机器码计算后的值取其后八位
0054E7B8  |.  8B45 D4       MOV     EAX,[LOCAL.11]
                           //机器码计算后的值的后八位!
0054E7BB  |.  8B55 E8       MOV     EDX,[LOCAL.6]
                           //假注册码第3、4、8、9、13、14、18、19连在一起!
0054E7BE  |.  E8 B164EBFF   CALL    00404C74
                           //比较
0054E7C3  |.  75 04         JNZ     SHORT 0054E7C9
                           //不跳的话就是注册版本了哦!(爆破点)
0054E7C5  |.  B3 01         MOV     BL,1
                           //标志位赋值
0054E7C7  |.  EB 02         JMP     SHORT 0054E7CB

这里就划上句号了!可惜还是未注册版本!我晕死...
--------------------------------------------------------


继续跟,来到这里!(原来就是这里在搞鬼了!)

0054AB42   .  68 9CB95400   PUSH    0054B99C                         ;  ASCII "    -    -    "
0054AB47   .  8D85 6CFFFFFF LEA     EAX,[EBP-94]
0054AB4D   .  50            PUSH    EAX
0054AB4E   .  B9 B4B95400   MOV     ECX,0054B9B4                     ;  ASCII "RegisterCode"
0054AB53   .  BA 28B95400   MOV     EDX,0054B928                     ;  ASCII "System"
0054AB58   .  8B45 F8       MOV     EAX,[EBP-8]
0054AB5B   .  8B18          MOV     EBX,[EAX]
0054AB5D   .  FF13          CALL    [EBX]                            ;  TKSUPERT.004714AC
0054AB5F   .  8B95 6CFFFFFF MOV     EDX,[EBP-94]
0054AB65   .  8B45 FC       MOV     EAX,[EBP-4]
0054AB68   .  E8 D33A0000   CALL    0054E640
                           //这里是上面"注册码怎么练成的"地方!继续炼一次!

0054AB6D   .  84C0          TEST    AL,AL
0054AB6F   .  0F85 D0000000 JNZ     0054AC45
                           //一定要跳走哦!不然就...
                           //这里省略一部分和破解用处不大的代码!
                           //...
                           //...
                           //...

0054AC45   >  68 F8B95400   PUSH    0054B9F8                         ;  ASCII "100"
                           //看见100了吗??

0054AC4A   .  8D85 60FFFFFF LEA     EAX,[EBP-A0]
0054AC50   .  50            PUSH    EAX
0054AC51   .  B9 04BA5400   MOV     ECX,0054BA04                     ;  ASCII "EnableProxy"
                           //这个可是关键哦!

0054AC56   .  BA 28B95400   MOV     EDX,0054B928                     ;  ASCII "System"
0054AC5B   .  8B45 F8       MOV     EAX,[EBP-8]
0054AC5E   .  8B18          MOV     EBX,[EAX]
0054AC60   .  FF13          CALL    [EBX]                            ;  TKSUPERT.004714AC
                           //取同目录下SuperTVPlayer.ini文件里面"System"项"EnableProxy"的值

0054AC62   .  8B85 60FFFFFF MOV     EAX,[EBP-A0]
                           //这里就是"EnableProxy"的值!

0054AC68   .  BA F8B95400   MOV     EDX,0054B9F8                     ;  ASCII "100"
0054AC6D   .  E8 02A0EBFF   CALL    00404C74
                           //比较是否大于100,大于下面就跳,否之就挂了!

0054AC72   .  0F85 0C010000 JNZ     0054AD84
                           //一定要跳走啊!不然就死了!
                           //这里省略一部分和破解用处不大的代码!
                           //...
                           //...
                           //...

0054AD84   >  68 F8B95400   PUSH    0054B9F8                         ;  ASCII "100"
                           //看见100了吗??

0054AD89   .  8D85 54FFFFFF LEA     EAX,[EBP-AC]
0054AD8F   .  50            PUSH    EAX
0054AD90   .  B9 E4B95400   MOV     ECX,0054B9E4                     ;  ASCII "ProxyUpdata"
                           //这个可是关键哦!

0054AD95   .  BA 28B95400   MOV     EDX,0054B928                     ;  ASCII "System"
0054AD9A   .  8B45 F8       MOV     EAX,[EBP-8]
0054AD9D   .  8B18          MOV     EBX,[EAX]
0054AD9F   .  FF13          CALL    [EBX]                            ;  TKSUPERT.004714AC
                           //取同目录下SuperTVPlayer.ini文件里面"System"项"EnableProxy"的值

0054ADA1   .  8B85 54FFFFFF MOV     EAX,[EBP-AC]
                           //这里就是"EnableProxy"的值!

0054ADA7   .  BA F8B95400   MOV     EDX,0054B9F8                     ;  ASCII "100"
0054ADAC   .  E8 C39EEBFF   CALL    00404C74
                           //比较是否大于100,大于下面就跳,否之就挂了!

0054ADB1   .  0F85 CC000000 JNZ     0054AE83
                           //一定要跳走啊!不然就死了!

哈哈,来到这里才真的注册成功了!
==========================================================================
这里是我最开始跟踪的爆破过程:

由于最开始不知道把"ProxyUpdata"和"EnableProxy"都赋值大于100就可以注册成功!

所以我对所有经过"RegisterCode"处都下断,分别在启动,更新,关于,打开节目表的时候都断下了!

(经过熟悉程序后才了解到程序通过网络验证的时候如果是正确的注册码的话就会

把"ProxyUpdata"和"EnableProxy"都赋值大于100---这是我的猜测)


这里是"C4爆破版本"要改的地方一共14处(有几处是重复了,而且也不用改那么多地方的,只是以防万一)!
--------------------------------------------------//启动经过此处关键!
0054FF51  |.  E8 EAE6FFFF   CALL    0054E640
0054FF56  |.  84C0          TEST    AL,AL
0054FF58  |.  75 3B         JNZ     SHORT 0054FF95//EB3B JMP
----------------------------

0054E7B8  |.  8B45 D4       MOV     EAX,[LOCAL.11]
0054E7BB  |.  8B55 E8       MOV     EDX,[LOCAL.6]
0054E7BE  |.  E8 B164EBFF   CALL    00404C74
0054E7C3  |.  75 04         JNZ     SHORT 0054E7C9//9090 NOP
0054E7C5  |.  B3 01         MOV     BL,1
0054E7C7  |.  EB 02         JMP     SHORT 0054E7CB
----------------------------
0054AB5F   .  8B95 6CFFFFFF MOV     EDX,[EBP-94]
0054AB65   .  8B45 FC       MOV     EAX,[EBP-4]
0054AB68   .  E8 D33A0000   CALL    0054E640
0054AB6D   .  84C0          TEST    AL,AL
0054AB6F   .  0F85 D0000000 JNZ     0054AC45//E9D100000090 JMP
----------------------------
0054E7B8  |.  8B45 D4       MOV     EAX,[LOCAL.11]
0054E7BB  |.  8B55 E8       MOV     EDX,[LOCAL.6]
0054E7BE  |.  E8 B164EBFF   CALL    00404C74
0054E7C3  |.  75 04         JNZ     SHORT 0054E7C9//9090 NOP
0054E7C5  |.  B3 01         MOV     BL,1
0054E7C7  |.  EB 02         JMP     SHORT 0054E7CB
----------------------------
0054AC62   .  8B85 60FFFFFF MOV     EAX,[EBP-A0]
0054AC68   .  BA F8B95400   MOV     EDX,0054B9F8
0054AC6D   .  E8 02A0EBFF   CALL    00404C74
0054AC72   .  0F85 0C010000 JNZ     0054AD84//E90D01000090 JMP
----------------------------
0054ADA1   .  8B85 54FFFFFF MOV     EAX,[EBP-AC]
0054ADA7   .  BA F8B95400   MOV     EDX,0054B9F8
0054ADAC   .  E8 C39EEBFF   CALL    00404C74
0054ADB1   .  0F85 CC000000 JNZ     0054AE83//E9CD00000090 JMP

--------------------------------------------------//更新经过此处关键!
0054F196   .  8B55 EC       MOV     EDX,[EBP-14]
0054F199   .  8B45 FC       MOV     EAX,[EBP-4]
0054F19C   .  E8 9FF4FFFF   CALL    0054E640
0054F1A1   .  84C0          TEST    AL,AL
0054F1A3   .  0F85 A5000000 JNZ     0054F24E//E9A600000090 JMP
----------------------------
0054F276   .  8B45 E0       MOV     EAX,[EBP-20]
0054F279   .  BA E0F45400   MOV     EDX,0054F4E0
0054F27E   .  E8 F159EBFF   CALL    00404C74
0054F283   .  0F85 AD000000 JNZ     0054F336//E9AE00000090 JMP
----------------------------
0053F3AB   .  8B55 90       MOV     EDX,[EBP-70]
0053F3AE   .  8B45 FC       MOV     EAX,[EBP-4]
0053F3B1   .  E8 4E0C0000   CALL    00540004
0053F3B6   .  84C0          TEST    AL,AL
0053F3B8   .  75 63         JNZ     SHORT 0053F41D//EB63 JMP
----------------------------
0053F445   .  8B45 8C       MOV     EAX,[EBP-74]
0053F448   .  BA 94F75300   MOV     EDX,0053F794
0053F44D   .  E8 2258ECFF   CALL    00404C74
0053F452   .  75 6B         JNZ     SHORT 0053F4BF//EB6B JMP
---------------------------------------------------//打开节目表经过此处关键!
0052A1B1   .  8B95 74FFFFFF MOV     EDX,[EBP-8C]
0052A1B7   .  8B45 FC       MOV     EAX,[EBP-4]
0052A1BA   .  E8 45170000   CALL    0052B904
0052A1BF   .  84C0          TEST    AL,AL
0052A1C1   .  75 53         JNZ     SHORT 0052A216//EB53 JMP
----------------------------
0052A241   .  8B85 70FFFFFF MOV     EAX,[EBP-90]
0052A247   .  BA A0B25200   MOV     EDX,0052B2A0
0052A24C   .  E8 23AAEDFF   CALL    00404C74
0052A251   .  75 4E         JNZ     SHORT 0052A2A1//EB4E JMP
--------------------------------------------------//关于经过此处关键!
0053D2B4   .  8B55 98       MOV     EDX,[EBP-68]
0053D2B7   .  8B45 FC       MOV     EAX,[EBP-4]
0053D2BA   .  E8 75050000   CALL    0053D834
0053D2BF   .  84C0          TEST    AL,AL
0053D2C1   .  0F85 8B000000 JNZ     0053D352//E98C00000090 JMP
----------------------------
0053D37A   .  8B45 94       MOV     EAX,[EBP-6C]
0053D37D   .  BA C0D75300   MOV     EDX,0053D7C0                     ;  ASCII "100"
0053D382   .  E8 ED78ECFF   CALL    00404C74
0053D387   .  0F85 8B000000 JNZ     0053D418//E98C00000090 JMP


------------------------------------------------------------------
【总    结】:

这个程序注册的用户名不做计算,可以说是没有用的!(我个人觉得用户名最大的作用就是显示再关于那里的授权

给"XXX")

真注册码=机器码的ASCII码都乘起来的积-->再加1的和-->与B或运算的结果-->取得结果的后八位-->与输入的

注册码第3、4、8、9、13、14、18、19连在一起的值比较,不同就死!

以我的机器码为例(我的机器码是YMDYMH13838)

(注:以下括号里的是16进制的乘法和加法)
(59*4D*44*59*4D*48*31*33*38*33*38+1) XOR B=FB5E45C45EA3C80A
取其后八位5EA3C80A与注册码第3、4、8、9、13、14、18、19连在一起的值比较,不同就死!

我的机器码是"YMDYMH13838"

那么注册码是"XX5EXXXA3XXXC8XXX0A"(X为0-F间任意)
===================================================
注意:
这个程序就算你把注册名和正确的注册码都手动写入同目录的SuperTVPlayer.ini文件的
[System]
RegisterName=Yock196
RegisterCode=9876543210ABCDEFGHI
里面一样是未注册的!因为还有两处(没有就自己加进去)"ProxyUpdata"和"EnableProxy"没有赋值!

我怀疑程序通过网络验证的时候如果是正确的注册码的话就会把"ProxyUpdata"和"EnableProxy"都赋值大于100

也就是说把同目录的SuperTVPlayer.ini文件里面添加下面内容就OK了!(爽吧,不同爆破也可以是完美注册版本)
[System]
RegisterName=Yock196            //用户名
RegisterCode=985E543A30ABC8EFG0A//这里是根据自己的机器码算的注册码!你要是用我这个是不行D说
ProxyUpdata=101
EnableProxy=101
-------------------------------------------------
关于完美注册后在使用过程中程序会不会再次变回未注册我就没有时间测试了,所以还是用C4爆破版本的好!

最后在这里真心感谢你花了那么多时间看这篇文章,也借此机会向这个软件的作者鞠躬表示歉意!


                                           2003.08.26晚于清远