首页
论坛
课程
招聘
[原创]英雄莫问出处,菜鸟破解英雄播放器!元旦献礼!
2006-1-1 14:57 14224

[原创]英雄莫问出处,菜鸟破解英雄播放器!元旦献礼!

qduwg 活跃值
35
2006-1-1 14:57
14224
题目:菜鸟破解《豪杰超级解霸3000英雄版》--注册算法
软件名称:豪杰超级解霸3000英雄版
软件来源:电脑爱好者合订本2003光盘
软件平台: Win9x/Me/NT4/2000
软件简介:
《豪杰超级解霸3000英雄版》化腐朽为神奇,使模糊变清晰!解霸网络版播放器支持在线播放,全面兼容各种格式,新增支持WMV,WMA,ASF,MOV等多种文件,支持DVD导航,支持RM9文件的播放。
《豪杰超级解霸3000英雄版》是豪杰公司在2003年精心制作解霸系列的最新版本,在音视频技术功能上全新提升的更新版本。全新的界面方案,保留豪杰系列软件的方便易用性,并且提高了色彩和美观度。

破解目的:寻找注册码和注册算法
破解难度:相对简单
工具:softice,ollydbg,PEID

引子:
今天借了一个VCD,想休息一下,放松一下,结果用豪杰超级解霸3000英雄版播放的时候,每隔几分钟就善意提醒你注册。不堪其扰,我干脆趁今天晚上干掉它算了。也算是献给看雪论坛坛友的一份新年礼物!:)今天跟朋友出去玩了,晚上回来比较累,但是还是破解了这个软件。这个软件还是不错的,大家可能都知道了:)。该软件的帮助文件里面描述了强大的功能。我这里就不说了:)。软件我破解完了后,才发现最后一个关键地方给出了注册码。不过我是为了追踪算法,不是单纯为了找到注册码的,所以我还是完整地跟踪了下来,希望对菜鸟有启发。下面开始工作吧!希望你耐心看完俺的拙文!!可能比较长,因为算法就是比较长的。

拿出PEID检查一下是否带壳??一看不错,是VC编写的软件,不带壳,比较友善啊:)。下面运行HERO3000,弹出一个提示框,让你输入用户名和注册码,当然注册码的格式是固定的,由四段码组成的。HERO3000是调用的一个专门的注册程序,名字是AuthReg.exe。我输入wanggang, 注册码是1111-2222-3333-4444,当然不包括那个短杠的。Ctrl+D唤出SoftICE, 有大侠建议我用OD,我现在还不上手呢。先用SICE吧。:)希望大侠能够写出用OD破解的文章。下断点bpx hmemcpy,F5返回HERO对话框点击确定按钮,被拦住。大概按8次F12,然后按F10N次,来到下面代码处:
1. 从4023D0到0040243D代码段为读入你输入的假注册码,读用户名则在另外一个地方,40177A的CALL内。总共读取四段注册码。
004023D0  /$ 83EC 40         SUB ESP,40
004023D3  |. 8B0D 28AC4000   MOV ECX,DWORD PTR DS:[40AC28]
004023D9  |. 56              PUSH ESI
004023DA  |. 8B35 8C714000   MOV ESI,DWORD PTR DS:[<&USER32.GetWindowTextA>]
004023E0  |. 8D4424 04       LEA EAX,DWORD PTR SS:[ESP+4]  
004023E4  |. 6A 08           PUSH 8
004023E6  |. 50              PUSH EAX
004023E7  |. 51              PUSH ECX
004023E8  |. FFD6            CALL ESI         //读注册码第一段
004023EA  |. A1 24AC4000     MOV EAX,DWORD PTR DS:[40AC24]  //我们停在这里。
004023EF  |. 8D5424 09       LEA EDX,DWORD PTR SS:[ESP+9]
004023F3  |. 6A 08           PUSH 8
004023F5  |. 52              PUSH EDX
004023F6  |. 50              PUSH EAX
004023F7  |. FFD6            CALL ESI         //读注册码第二段         
004023F9  |. 8B15 30AC4000   MOV EDX,DWORD PTR DS:[40AC30]
004023FF  |. 8D4C24 0E       LEA ECX,DWORD PTR SS:[ESP+E]
00402403  |. 6A 08           PUSH 8
00402405  |. 51              PUSH ECX
00402406  |. 52              PUSH EDX
00402407  |. FFD6            CALL ESI         //读注册码第三段
00402409  |. 8B0D 2CAC4000   MOV ECX,DWORD PTR DS:[40AC2C]
0040240F  |. 8D4424 13       LEA EAX,DWORD PTR SS:[ESP+13]
00402413  |. 6A 08           PUSH 8
00402415  |. 50              PUSH EAX
00402416  |. 51              PUSH ECX
00402417  |. FFD6            CALL ESI         //读注册码第四段
00402419  |. 8B15 20AC4000   MOV EDX,DWORD PTR DS:[40AC20]
0040241F  |. 68 00010000     PUSH 100
00402424  |. B0 2D           MOV AL,2D
00402426  |. 68 60AD4000     PUSH AUTHREG.0040AD60
0040242B  |. 52              PUSH EDX
0040242C  |. 884424 1E       MOV BYTE PTR SS:[ESP+1E],AL
00402430  |. 884424 19       MOV BYTE PTR SS:[ESP+19],AL
00402434  |. 884424 14       MOV BYTE PTR SS:[ESP+14],AL
00402438  |. C64424 23 00    MOV BYTE PTR SS:[ESP+23],0
0040243D  |. FFD6            CALL ESI        // 把短杠"-"放在注册码的第5,10,15个位置。
0040243F  |. 8D4424 04       LEA EAX,DWORD PTR SS:[ESP+4]
00402443  |. 50              PUSH EAX        //注册码地址进栈
00402444  |. 68 60AD4000     PUSH AUTHREG.0040AD60   //用户名地址进栈
00402449  |. E8 F20F0000     CALL AUTHREG.00403440    //这个CALL就是根据用户名计算注册码的地方。F8跟入
0040244E  |. F7D8            NEG EAX
00402450  |. 1BC0            SBB EAX,EAX
00402452  |. 8D4C24 04       LEA ECX,DWORD PTR SS:[ESP+4]
00402456  |. F7D8            NEG EAX
00402458  |. 51              PUSH ECX
00402459  |. 68 60AD4000     PUSH AUTHREG.0040AD60
0040245E  |. A3 20D84000     MOV DWORD PTR DS:[40D820],EAX
00402463  |. E8 38000000     CALL AUTHREG.004024A0        //这个CALL是把注册信息写入注册表内                                                            。里面好象很长!!
00402468  |. 8B4424 50       MOV EAX,DWORD PTR SS:[ESP+50]
0040246C  |. 8B0D 44AD4000   MOV ECX,DWORD PTR DS:[40AD44]
00402472  |. 83C4 08         ADD ESP,8
00402475  |. 8D5424 04       LEA EDX,DWORD PTR SS:[ESP+4]
00402479  |. 52              PUSH EDX
0040247A  |. 68 30234000     PUSH AUTHREG.00402330
0040247F  |. 50              PUSH EAX
00402480  |. 6A 69           PUSH 69
00402482  |. 51              PUSH ECX
00402483  |. FF15 B8714000   CALL DWORD PTR DS:[<&USER32.DialogBoxParamA>]  //一开始这个                CALL显示错误信息,如果注册成功,则用这个CALL显示正确信息。实在是妙啊!!!
00402489  |. A1 20D84000     MOV EAX,DWORD PTR DS:[40D820]
0040248E  |. 5E              POP ESI
0040248F  |. 83C4 40         ADD ESP,40
00402492  \. C3              RETN
=============================================
3.我们在00402449 跟入这个函数,代码如下:
00403440  /$ 83EC 20         SUB ESP,20
00403443  |. 33C0            XOR EAX,EAX
00403445  |. B9 08000000     MOV ECX,8
0040344A  |. 53              PUSH EBX
0040344B  |. 56              PUSH ESI
0040344C  |. 57              PUSH EDI
0040344D  |. 8D7C24 0C       LEA EDI,DWORD PTR SS:[ESP+C]
00403451  |. F3:AB           REP STOS DWORD PTR ES:[EDI]
00403453  |. 8B4424 30       MOV EAX,DWORD PTR SS:[ESP+30]
00403457  |. 33FF            XOR EDI,EDI
00403459  |. 50              PUSH EAX
0040345A  |. E8 D1010000     CALL AUTHREG.00403630   //此CALL对输入的用户名计算,获得计算注册码的初始值。见后面分析。这个就是第一个注册码段的真实值。
0040345F  |. 894424 10       MOV DWORD PTR SS:[ESP+10],EAX
00403463  |. 83C4 04         ADD ESP,4
00403466  |> 8D743C 0C       /LEA ESI,DWORD PTR SS:[ESP+EDI+C] //此处到00403489是检查输入的假注册码是否是大写字符或空格?
0040346A  |. 0FBE06          |MOVSX EAX,BYTE PTR DS:[ESI]   
0040346D  |. 83F8 41         |CMP EAX,41           
00403470  |. 7C 08           |JL SHORT AUTHREG.0040347A
00403472  |. 83F8 5A         |CMP EAX,5A
00403475  |. 7F 03           |JG SHORT AUTHREG.0040347A
00403477  |. 83C0 20         |ADD EAX,20        //如果EAX是大写字母,给EAX加20,修正为小写字符。
0040347A  |> 50              |PUSH EAX
0040347B  |. 47              |INC EDI
0040347C  |. E8 7F020000     |CALL AUTHREG.00403700      //此CALL比较每个字符是否是41h,5Ah,6Fh,30h,61h,7Ah,31h,39h,3Fh等,可以看出这些值是比较特殊的字符。
00403481  |. 83C4 04         |ADD ESP,4
00403484  |. 8806            |MOV BYTE PTR DS:[ESI],AL   //把变换后的假注册码依次保存起来
00403486  |. 83FF 04         |CMP EDI,4
00403489  |.^7C DB           \JL SHORT AUTHREG.00403466  //未完,继续循环。
0040348B  |. 33C9            XOR ECX,ECX  //ECX为计数器,初始化为0。
0040348D  |. 8B7424 34       MOV ESI,DWORD PTR SS:[ESP+34] //此处到004034B3比较真假注册码。
00403491  |> 0FBE040E        /MOVSX EAX,BYTE PTR DS:[ESI+ECX]  //依次取变换后的用户名字符(真注册码)。
00403495  |. 83F8 41         |CMP EAX,41                 //比较是否为41h
00403498  |. 7C 08           |JL SHORT AUTHREG.004034A2
0040349A  |. 83F8 5A         |CMP EAX,5A                 //比较是否为5Ah
0040349D  |. 7F 03           |JG SHORT AUTHREG.004034A2
0040349F  |. 83C0 20         |ADD EAX,20     //如果EAX是大写字母,给EAX加20,修正为小写字符。
004034A2  |> 0FBE540C 0C     |MOVSX EDX,BYTE PTR SS:[ESP+ECX+C] //把假注册码字符符号扩展后,依次送入EDX。
004034A7  |. 3BD0            |CMP EDX,EAX    //真假注册码进行比较!
004034A9  |. 0F85 2C010000   |JNZ AUTHREG.004035DB  //不相等则通向地狱。此处一定用E命令,把你的假注册码修正为计算出来的真注册码。
004034AF  |. 41              |INC ECX        //ECX为计数器增1。
004034B0  |. 83F9 04         |CMP ECX,4      //比较是否到达4??
004034B3  |.^7C DC           \JL SHORT AUTHREG.00403491  //ECX没有到4,继续循环。
004034B5  |. 8B4424 0C       MOV EAX,DWORD PTR SS:[ESP+C]
004034B9  |. 33DB            XOR EBX,EBX     //以下开始计算第二个注册码段。
004034BB  |. 8D1480          LEA EDX,DWORD PTR DS:[EAX+EAX*4]  //EDX=5*EAX
004034BE  |. 8D0450          LEA EAX,DWORD PTR DS:[EAX+EDX*2]  //EAX=EDX*2+EAX
004034C1  |. 03C0            ADD EAX,EAX        //EAX=EAX*2
004034C3  |. 894424 10       MOV DWORD PTR SS:[ESP+10],EAX    //保存这个结果。
004034C7  |> 8D7C1C 10       /LEA EDI,DWORD PTR SS:[ESP+EBX+10] //取前面计算的真注册码的地址
004034CB  |. 8A07            |MOV AL,BYTE PTR DS:[EDI]   //把第二段依次送入AL。
004034CD  |. 50              |PUSH EAX
004034CE  |. 53              |PUSH EBX
004034CF  |. 43              |INC EBX
004034D0  |. E8 3B010000     |CALL AUTHREG.00403610   //此CALL依次对注册码计算变换,得到第二段注册码。
004034D5  |. 83C4 08         |ADD ESP,8
004034D8  |. 33C9            |XOR ECX,ECX
004034DA  |. 8AC8            |MOV CL,AL
004034DC  |. 51              |PUSH ECX
004034DD  |. E8 1E020000     |CALL AUTHREG.00403700   //此CALL比较每个字符是否是41h,5Ah,6Fh,30h,61h,7Ah,31h,39h,3Fh等,可以看出这些值是比较特殊的字符。
004034E2  |. 83C4 04         |ADD ESP,4
004034E5  |. 8807            |MOV BYTE PTR DS:[EDI],AL  //把变换好的值送回原来的位置。
004034E7  |. 83FB 04         |CMP EBX,4
004034EA  |.^7C DB           \JL SHORT AUTHREG.004034C7  //未完,继续循环。
004034EC  |. 33C9            XOR ECX,ECX      //计数器清零。
004034EE  |> 0FBE440E 05     /MOVSX EAX,BYTE PTR DS:[ESI+ECX+5] //此处到00403511第二段注册码进行比较。
004034F3  |. 83F8 41         |CMP EAX,41
004034F6  |. 7C 08           |JL SHORT AUTHREG.00403500
004034F8  |. 83F8 5A         |CMP EAX,5A
004034FB  |. 7F 03           |JG SHORT AUTHREG.00403500
004034FD  |. 83C0 20         |ADD EAX,20
00403500  |> 0FBE540C 10     |MOVSX EDX,BYTE PTR SS:[ESP+ECX+10]
00403505  |. 3BD0            |CMP EDX,EAX
00403507  |. 0F85 D9000000   |JNZ AUTHREG.004035E6
0040350D  |. 41              |INC ECX
0040350E  |. 83F9 04         |CMP ECX,4
00403511  |.^7C DB           \JL SHORT AUTHREG.004034EE
00403513  |. 8B4424 10       MOV EAX,DWORD PTR SS:[ESP+10] //第二段注册码送EAX
00403517  |. 8B4C24 10       MOV ECX,DWORD PTR SS:[ESP+10] //同时第二段注册码送ECX
0040351B  |. 334424 0C       XOR EAX,DWORD PTR SS:[ESP+C]  //第二段和第一段异或运算。
0040351F  |. 33DB            XOR EBX,EBX
00403521  |. 83C0 08         ADD EAX,8     //EAX=EAX+8。
00403524  |. 8D1449          LEA EDX,DWORD PTR DS:[ECX+ECX*2] //EDX=3*ECX
00403527  |. 0FAF4424 0C     IMUL EAX,DWORD PTR SS:[ESP+C]    // EAX=EAX*(第一段注册码)
0040352C  |. 03C2            ADD EAX,EDX     //EAX=EAX+EDX
0040352E  |. 894424 14       MOV DWORD PTR SS:[ESP+14],EAX    //EAX保存
00403532  |> 8D7C1C 14       /LEA EDI,DWORD PTR SS:[ESP+EBX+14]
00403536  |. 43              |INC EBX
00403537  |. 0FBE07          |MOVSX EAX,BYTE PTR DS:[EDI]
0040353A  |. 50              |PUSH EAX
0040353B  |. E8 C0010000     |CALL AUTHREG.00403700 //功能见上面注释。
00403540  |. 83C4 04         |ADD ESP,4
00403543  |. 8807            |MOV BYTE PTR DS:[EDI],AL
00403545  |. 83FB 04         |CMP EBX,4
00403548  |.^7C E8           \JL SHORT AUTHREG.00403532
0040354A  |. 33C9            XOR ECX,ECX
0040354C  |> 0FBE440E 0A     /MOVSX EAX,BYTE PTR DS:[ESI+ECX+A] //下面到00403548 比较第三段注册码!
00403551  |. 83F8 41         |CMP EAX,41
00403554  |. 7C 08           |JL SHORT AUTHREG.0040355E
00403556  |. 83F8 5A         |CMP EAX,5A
00403559  |. 7F 03           |JG SHORT AUTHREG.0040355E
0040355B  |. 83C0 20         |ADD EAX,20
0040355E  |> 0FBE540C 14     |MOVSX EDX,BYTE PTR SS:[ESP+ECX+14]
00403563  |. 3BD0            |CMP EDX,EAX
00403565  |. 0F85 86000000   |JNZ AUTHREG.004035F1
0040356B  |. 41              |INC ECX
0040356C  |. 83F9 04         |CMP ECX,4
0040356F  |.^7C DB           \JL SHORT AUTHREG.0040354C
下面开始计算第四段注册码:
00403571  |. 8B4424 10       MOV EAX,DWORD PTR SS:[ESP+10]   //第二段送EAX
00403575  |. 8B4C24 14       MOV ECX,DWORD PTR SS:[ESP+14]   //第三段送ECX
00403579  |. 0FAF4424 14     IMUL EAX,DWORD PTR SS:[ESP+14]  //EAX=EAX*(第三段注册码)
0040357E  |. 83C0 05         ADD EAX,5     //EAX=EAX+5
00403581  |. 8D1449          LEA EDX,DWORD PTR DS:[ECX+ECX*2] //EDX=3*ECX
00403584  |. 0FAF4424 0C     IMUL EAX,DWORD PTR SS:[ESP+C]    // EAX=EAX*(第一段注册码)
00403589  |. 33FF            XOR EDI,EDI
0040358B  |. 8D0450          LEA EAX,DWORD PTR DS:[EAX+EDX*2] //EAX=EAX+2*EDX
0040358E  |. 894424 18       MOV DWORD PTR SS:[ESP+18],EAX    //保存EAX。
00403592  |> 8D5C3C 18       /LEA EBX,DWORD PTR SS:[ESP+EDI+18] //下面这个循环处理你输入第四段假注册码。
00403596  |. 47              |INC EDI
00403597  |. 0FBE03          |MOVSX EAX,BYTE PTR DS:[EBX]
0040359A  |. 50              |PUSH EAX
0040359B  |. E8 60010000     |CALL AUTHREG.00403700
004035A0  |. 83C4 04         |ADD ESP,4
004035A3  |. 8803            |MOV BYTE PTR DS:[EBX],AL
004035A5  |. 83FF 04         |CMP EDI,4
004035A8  |.^7C E8           \JL SHORT AUTHREG.00403592
004035AA  |. 33C9            XOR ECX,ECX       //下面这个循环进行第四段注册码的比较。
004035AC  |> 0FBE440E 0F     /MOVSX EAX,BYTE PTR DS:[ESI+ECX+F]
004035B1  |. 83F8 41         |CMP EAX,41
004035B4  |. 7C 08           |JL SHORT AUTHREG.004035BE
004035B6  |. 83F8 5A         |CMP EAX,5A
004035B9  |. 7F 03           |JG SHORT AUTHREG.004035BE
004035BB  |. 83C0 20         |ADD EAX,20
004035BE  |> 0FBE540C 18     |MOVSX EDX,BYTE PTR SS:[ESP+ECX+18]
004035C3  |. 3BD0            |CMP EDX,EAX
004035C5  |. 75 35           |JNZ SHORT AUTHREG.004035FC
004035C7  |. 41              |INC ECX
004035C8  |. 83F9 04         |CMP ECX,4
004035CB  |.^7C DF           \JL SHORT AUTHREG.004035AC
004035CD  |. B8 01000000     MOV EAX,1     //成功注册标志
004035D2  |. 5F              POP EDI
*
*略掉10多行
*
004035FC  |> 33C0            XOR EAX,EAX  //如果失败则EAX清零。:(
004035FE  |. 5F              POP EDI
004035FF  |. 5E              POP ESI
00403600  |. 5B              POP EBX
00403601  |. 83C4 20         ADD ESP,20
00403604  \. C2 0800         RETN 8
=============================================
4.F8跟踪0040345A处的CALL,代码如下:
00403630  /$ 81EC 00020000   SUB ESP,200
00403636  |. 33C0            XOR EAX,EAX
00403638  |. B9 80000000     MOV ECX,80
0040363D  |. 53              PUSH EBX
0040363E  |. 56              PUSH ESI
0040363F  |. 33DB            XOR EBX,EBX
00403641  |. 57              PUSH EDI
00403642  |. 55              PUSH EBP
00403643  |. 8D7C24 10       LEA EDI,DWORD PTR SS:[ESP+10]
00403647  |. F3:AB           REP STOS DWORD PTR ES:[EDI]
00403649  |. 8BB424 14020000 MOV ESI,DWORD PTR SS:[ESP+214]
00403650  |. 56              PUSH ESI  
00403651  |. FF15 F4704000   CALL DWORD PTR DS:[<&KERNEL32.lstrlenA>]  //取用户名串长
00403657  |. 3D 00020000     CMP EAX,200  //与200H比较,相信你用户名不会大于512个字符。
0040365C  |. 8BE8            MOV EBP,EAX
0040365E  |. 76 12           JBE SHORT AUTHREG.00403672
00403660  |. BD 00020000     MOV EBP,200
00403665  |. 8D7C24 10       LEA EDI,DWORD PTR SS:[ESP+10]
00403669  |. B9 80000000     MOV ECX,80
0040366E  |. F3:A5           REP MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI]
00403670  |. EB 0C           JMP SHORT AUTHREG.0040367E
00403672  |> 8D4424 10       LEA EAX,DWORD PTR SS:[ESP+10]
00403676  |. 56              PUSH ESI
00403677  |. 50              PUSH EAX
00403678  |. FF15 E4704000   CALL DWORD PTR DS:[<&KERNEL32.lstrcpyA>] //用户名复制到其他地址。
0040367E  |> 8BC5            MOV EAX,EBP
00403680  |. 99              CDQ    //EDX清零。
00403681  |. 83E2 03         AND EDX,3        //EDX与3相与。
00403684  |. 03C2            ADD EAX,EDX
00403686  |. C1F8 02         SAR EAX,2        //EAX算术右移2位。
00403689  |. F7C5 03000000   TEST EBP,3  //EBP与3相与,改变标志位Z
0040368F  |. 8BF0            MOV ESI,EAX
00403691  |. 74 01           JE SHORT AUTHREG.00403694  //如果Z=1跳转。
00403693  |. 46              INC ESI
00403694  |> 33FF            XOR EDI,EDI   
00403696  |. 85ED            TEST EBP,EBP
00403698  |. 7E 17           JLE SHORT AUTHREG.004036B1
0040369A  |> 8B443C 10       /MOV EAX,DWORD PTR SS:[ESP+EDI+10]//用户名地址送EAX
0040369E  |. 50              |PUSH EAX   //用户名地址进栈
0040369F  |. 57              |PUSH EDI
004036A0  |. 47              |INC EDI
004036A1  |. E8 6AFFFFFF     |CALL AUTHREG.00403610   
004036A6  |. 88443C 17       |MOV BYTE PTR SS:[ESP+EDI+17],AL
004036AA  |. 83C4 08         |ADD ESP,8
004036AD  |. 3BFD            |CMP EDI,EBP
004036AF  |.^7C E9           \JL SHORT AUTHREG.0040369A //循环处理用户名。
004036B1  |> 33FF            XOR EDI,EDI
004036B3  |. 85F6            TEST ESI,ESI
004036B5  |. 7E 1A           JLE SHORT AUTHREG.004036D1
004036B7  |> 035CBC 10       /ADD EBX,DWORD PTR SS:[ESP+EDI*4+10]//由用户名转换得到的16进制数累加到EBX内。
004036BB  |. 8BC7            |MOV EAX,EDI
004036BD  |. 83E0 1F         |AND EAX,1F
004036C0  |. 47              |INC EDI
004036C1  |. 50              |PUSH EAX
004036C2  |. 53              |PUSH EBX
004036C3  |. E8 18000000     |CALL AUTHREG.004036E0  //用户名4位一组进行变换。
004036C8  |. 83C4 08         |ADD ESP,8
004036CB  |. 8BD8            |MOV EBX,EAX
004036CD  |. 3BFE            |CMP EDI,ESI
004036CF  |.^7C E6           \JL SHORT AUTHREG.004036B7 //循环取下一组用户名
004036D1  |> 8BC3            MOV EAX,EBX
004036D3  |. 5D              POP EBP
004036D4  |. 5F              POP EDI
004036D5  |. 5E              POP ESI
004036D6  |. 5B              POP EBX
004036D7  |. 81C4 00020000   ADD ESP,200
004036DD  \. C3              RETN
=============================================
后记:
终于用了1个小时跟踪,毕竟是自己独立完成的,我可是没参考任何大侠的文章。我接着趁热打铁用了1个小时写完这个破解教程。感觉这次破解很顺利,如愿以尝了!心里非常高兴!所以写了这篇文章,跟大家分享我的愉快!但我没有骄傲哦!令我感到意外的是,超级解霸的保护也太弱了,与这个大名鼎鼎的软件公司好象不太匹配!不过这是好事啊!没有了保护,就没有了破解!:)希望菜鸟能够从中吸取点什么,我就足矣了!非常感谢您能够耐心看完,毕竟看其他人的文章可能有些不适应的。;)
注册码的分析过程已经很明显了,写注册机那是水到渠成的事情了。我以后会自己练习写的。:)祝菜鸟学习进步!破解愉快!
另外,OD的确不错,显示的注解比较清晰。
总结:
Username :      wanggang
Registercode:   7zq3-sqq3-3ydq-tb3r

这个软件在注册表内的HLM\Software\Classes\写入如下键:超级解霸3000等。
  
完成日期:2006年1月1日凌晨1:30

Qduwg
qduwg@163.com

[招生]科锐逆向工程师培训46期预科班将于 2023年02月09日 正式开班

收藏
点赞0
打赏
分享
最新回复 (30)
雪    币: 190
活跃值: 活跃值 (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
侠盗 活跃值 2006-1-1 15:49
2
0
谢谢楼主为我们提供这么精彩的文章!
(去找一个破文书写器,做起破文来就方便多了。)
雪    币: 201
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
漫步者 活跃值 2006-1-1 15:55
3
0
呵呵,支持楼主,精华不断!祝贺
雪    币: 200
活跃值: 活跃值 (197)
能力值: ( LV12,RANK:2670 )
在线值:
发帖
回帖
粉丝
KuNgBiM 活跃值 66 2006-1-1 16:36
4
0
作者是 青岛大学 的老师哦~~~
雪    币: 116
活跃值: 活跃值 (231)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
xzchina 活跃值 1 2006-1-1 16:39
5
0
学习!看了不少 qduwg 发的破文,也学到了很多
雪    币: 200
活跃值: 活跃值 (32)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
wangshq397 活跃值 8 2006-1-1 16:41
6
0
作者是 青岛大学 的老师哦~~~
作者是 青岛大学 的老师哦~~
雪    币: 151
活跃值: 活跃值 (32)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
modi 活跃值 2006-1-1 16:53
7
0
支持!
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
血草 活跃值 1 2006-1-1 16:59
8
0
多练习用API来下断就好了。。我觉得对以后提高能好些。太多的使用bpx hmemcpy。会让自己有麻痹意识。
雪    币: 205
活跃值: 活跃值 (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
starluck 活跃值 1 2006-1-1 18:11
9
0
qduwg太强了,学习一下
雪    币: 216
活跃值: 活跃值 (20)
能力值: ( LV9,RANK:1410 )
在线值:
发帖
回帖
粉丝
qduwg 活跃值 35 2006-1-1 18:25
10
0
TO:侠盗 :谢谢您的支持,为我们菜鸟的共同进步,我觉得非常有意义!

所以激发我写破文教程的热情了!与各位大侠的关注分不开的!如果没有

人看我的文章,我就觉得没有写的动力了,那不是纯粹浪费人家时间吗?

?写文章不写则已,写就写的通俗易懂些,行文流畅些,给读者不要造成

理解上的歧义!好文章可以给人带来享受的美感,糟粕文章只能浪费大家

的精力和时间。我希望大家都提供精彩妙文,互相交流!

PS:你提到的破文书写器,我还没有找到,我现在在国外,上网诸多限制

,所以,我还是觉得自己一字一字的整理程序代码比较好。为自己负责,

更为众坛友负责啊。

To: 漫步者

感谢您的热情的支持,能够出的精华文章,那是和像您这样的热心读者给

我的支持和动力分不开的。您的祝贺我笑纳了!Thanks a lot!元旦快乐



TO:KuNgBiM

KU大侠从什么地方得知这个消息的啊?:)嗅觉倒是非常灵敏的啊,好厉

害!I服了YOU。可以干侦探了!^_* 希望KU大侠多指点,您也是高级会

员了,多指导一下我们这些菜鸟。:)感谢!

TO:xzchina

感谢徐州的xzchina ,真的看了不少我写的破文吗?(我真是偷着乐啊)

能有这么高的点击率和认同,我很高兴!我希望能够从菜鸟的思考角度多

写精彩文章,菜鸟在逐步琢磨的过程中,也就无形之间就变成老鸟了!知

识和能力的积累都是一点一点的来的,少安毋躁哦!

T0:wangshq397
感谢wangshq397大侠的支持。对俺的身份怎么知晓的啊?(嘘!不要大

声讲话)。如果有欠缺的地方请多包涵!老师的天性就是要首先自己明白

,然后再把知识融会贯通给其他人。我在这方面做的还不够,需要多多向

KANXUE他们努力看齐啊!!

TO: modi :Thank you for your surports! modi!就是Modify?:)

To: 血草
血草大侠,感谢您的建议和指导。我有的时候也用API来下断,当然要根

据具体情况,不必苛求,哪种方法最有效率,就用哪种。如果能够发现比

较典型的API函数,当然可以直接设断了。

搞CARAK可不得有丝毫麻痹哟!!!!:)

Qduwg

qduwg@163.com

回复于2006年1月1日PM1:00 Ethiopia
雪    币: 0
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
chinadev 活跃值 2006-1-1 18:50
11
0
最初由 血草 发布
多练习用API来下断就好了。。我觉得对以后提高能好些。太多的使用bpx hmemcpy。会让自己有麻痹意识。


血草。。。。你的马呢。。。放出来牧草呀
雪    币: 484
活跃值: 活跃值 (18)
能力值: ( LV9,RANK:1060 )
在线值:
发帖
回帖
粉丝
wenglingok 活跃值 26 2006-1-1 18:56
12
0
向Qduwgx学习。
雪    币: 200
活跃值: 活跃值 (197)
能力值: ( LV12,RANK:2670 )
在线值:
发帖
回帖
粉丝
KuNgBiM 活跃值 66 2006-1-1 19:27
13
0
最初由 qduwg 发布
........
TO:KuNgBiM

KU大侠从什么地方得知这个消息的啊?:)嗅觉倒是非常灵敏的啊,好厉

害!I服了YOU。可以干侦探了!^_* 希望KU大侠多指点,您也是高级会

员了,多指导一下我们这些菜鸟。:)感谢!
........




to Qduwg:

破文的作色器我很早以前编译了一个,到我的空间下载吧,空间在哪?
看我的个性签名吧~~~try it!!



随便找了个:
破文书写器
雪    币: 226
活跃值: 活跃值 (11)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
heXer 活跃值 3 2006-1-1 19:37
14
0
埃塞俄比亚很贫困的吧
雪    币: 199
活跃值: 活跃值 (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
talent 活跃值 2006-1-1 21:20
15
0
搞不懂就问人,
搞得懂就答人,
没有人懂还可以问神!
雪    币: 484
活跃值: 活跃值 (18)
能力值: ( LV9,RANK:1060 )
在线值:
发帖
回帖
粉丝
wenglingok 活跃值 26 2006-1-1 21:38
16
0
最初由 heXer 发布
埃塞俄比亚很贫困的吧


qduwg 到埃塞俄比亚卖盗版去

还是到埃塞俄比亚去推销国产精品软件啊?
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV9,RANK:410 )
在线值:
发帖
回帖
粉丝
fcrjzmd 活跃值 10 2006-1-1 22:00
17
0
看来Qduwg兄后劲很强啊。。!感染不少我哦。。。。不错哦。!精华都6了。。惭愧哦。。向Qduw兄学习!!!
雪    币: 10184
活跃值: 活跃值 (12807)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
kanxue 活跃值 8 2006-1-1 22:15
18
0
最初由 KuNgBiM 发布


破文的作色器我很早以前编译了一个,到我的空间下载吧,空间在哪?
看我的个性签名吧~~~try it!!

........


提点意见,有些破文生成器生成文章后,最后手动再排一版。
今天整理精华集时,发现几个问题:
1.开始几行(如【破文标题】,【破文作者】等),每行都空一行,制作CHM时感觉不爽。建议不空行,这样紧凑些。
2.【软件简介】这项加上字数限制,最多一、二行介绍一下(最好不要这项,告诉软件名,啥软件Google一下就知道)。有些文章中的“软件简介”差不多占了整篇文章的三分之一。
3.着色问题,目前几个破文生成器的着色效果都太刺眼,感觉不着色反而看的舒服。

KuNgBiM:在你文章中,上述几个毛病都存在,特别是软件简介,太长了。因此有些我不得不手工去除这些简介。
雪    币: 201
活跃值: 活跃值 (10)
能力值: ( LV9,RANK:210 )
在线值:
发帖
回帖
粉丝
windayjian 活跃值 5 2006-1-1 22:45
19
0
最初由 talent 发布
搞不懂就问人,
搞得懂就答人,
没有人懂还可以问神!


这段话我喜欢
雪    币: 200
活跃值: 活跃值 (197)
能力值: ( LV12,RANK:2670 )
在线值:
发帖
回帖
粉丝
KuNgBiM 活跃值 66 2006-1-2 00:02
20
0
最初由 kanxue 发布


提点意见,有些破文生成器生成文章后,最后手动再排一版。
今天整理精华集时,发现几个问题:
1.开始几行(如【破文标题】,【破文作者】等),每行都空一行,制作CHM时感觉不爽。建议不空行,这样紧凑些。
........


收到~~~以后注意~~

以后偶就用

“该软件用于影评..........”

哈哈~~~
雪    币: 134
活跃值: 活跃值 (12)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
playx 活跃值 1 2006-1-2 00:47
21
0
用了好多破文书写器,好象都没有暂存和打开功能,有时破文不一气呵成,不小心关闭或者保存后,无法再用破文编辑器调入,建议 KuNgBiM  把此功能加上。
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
faster 活跃值 2006-1-2 17:12
22
0
学习中。。。
雪    币: 201
活跃值: 活跃值 (11)
能力值: ( LV9,RANK:770 )
在线值:
发帖
回帖
粉丝
kyc 活跃值 19 2006-1-2 17:57
23
0
埃塞俄比亚的MM怎么样?
雪    币: 200
活跃值: 活跃值 (10)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
血草 活跃值 1 2006-1-2 20:23
24
0
最初由 chinadev 发布


血草。。。。你的马呢。。。放出来牧草呀


^_^ 是不是 chinadev 这个名字只有你能用呢?
雪    币: 203
活跃值: 活跃值 (11)
能力值: ( LV9,RANK:530 )
在线值:
发帖
回帖
粉丝
落魄浪子 活跃值 13 2006-1-2 22:04
25
0
工作忙好久没来了.支技下
游客
登录 | 注册 方可回帖
返回