首页
社区
课程
招聘
[原创]注册相片装饰大师FrameMaster
发表于: 2006-1-18 22:15 11577

[原创]注册相片装饰大师FrameMaster

qduwg 活跃值
35
2006-1-18 22:15
11577

题目:注册相片装饰大师FrameMaster
软件功能:美国人开发的这个照片装饰大师软件,可以给数码相片添加各种眼花缭乱的边框效果。从数码相机和扫描仪获取数码相片后,可以很快地毫

不费力地直接应用华丽的相框,蒙版,叠加效果,阴影及各种边框效果。除此之外,你还可以添加各种小图片(橡皮图章)到相片上,起到画龙点睛的

效果。可以对相片大小进行修改,完全自己定制各种特性。未注册版试用期30天,过后必须注册。
软件来源:电脑爱好者2002光盘
破解工具:Softice, PEID, OD
破解目的:找出注册码(因为这个软件是明码比较,没有注册算法)

引子:今天又从光盘随便安装了这个相框大师,实验了一下效果不错。可惜只有30天试用期限。现在就一起来动手把它注册了吧。完整完毕,先用PEID

查看是否加壳,结果没有。是BC++写的。运行程序,打开HELP菜单,点击里面的Register命令,弹出注册窗口,在里面输入用户名和假注册码。比如

wanggang, 7878787878,调出SOFTICE,下断点bpx hmemcpy,F5退出,点击OK,被拦下。我们按7次F12即可回到主程序空间,然后再按F10跟踪,我们来

到如下代码处:
00446277  |. 8B4D 98        MOV ECX,DWORD PTR SS:[EBP-68]
0044627A  |. 8B81 E0020000  MOV EAX,DWORD PTR DS:[ECX+2E0]
00446280  |. E8 8BEC0700    CALL FRMMSTR.004C4F10
00446285  |. 8D45 F4        LEA EAX,DWORD PTR SS:[EBP-C]   //用户名地址送EAX。
00446288  |. E8 7F6BFFFF    CALL FRMMSTR.0043CE0C          //取用户名长度。
0044628D  |. 85C0           TEST EAX,EAX               
0044628F  |. 0F94C2         SETE DL
00446292  |. 83E2 01        AND EDX,1
00446295  |. 52             PUSH EDX                              
00446296  |. FF4D B8        DEC DWORD PTR SS:[EBP-48]      
00446299  |. 8D45 F4        LEA EAX,DWORD PTR SS:[EBP-C]        
0044629C  |. BA 02000000    MOV EDX,2                             
004462A1  |. E8 8E1D0E00    CALL FRMMSTR.00528034         //测试用户名是否为空。
004462A6  |. 59             POP ECX                           
004462A7  |. 84C9           TEST CL,CL
004462A9  |. 74 74          JE SHORT FRMMSTR.0044631F     //如果用户名名为空,则OK,否则走到下面提示框。
004462AB  |. 6A 00          PUSH 0
004462AD  |. 8D45 92        LEA EAX,DWORD PTR SS:[EBP-6E]
004462B0  |. E8 2331FFFF    CALL FRMMSTR.004393D8
004462B5  |. B2 02          MOV DL,2
004462B7  |. E8 5031FFFF    CALL FRMMSTR.0043940C
004462BC  |. 66:8B08        MOV CX,WORD PTR DS:[EAX]
004462BF  |. 51             PUSH ECX
004462C0  |. 66:C745 AC 380>MOV WORD PTR SS:[EBP-54],38
004462C6  |. BA 786D5400    MOV EDX,FRMMSTR.00546D78      ;  ASCII "Please enter your name"
004462CB  |. 8D45 F0        LEA EAX,DWORD PTR SS:[EBP-10]
004462CE  |. E8 4D1C0E00    CALL FRMMSTR.00527F20
*省略多行
0044631F  |> 66:C745 AC 440>MOV WORD PTR SS:[EBP-54],44   //用户名不为空则跳到这里来。
00446325  |. 8D45 EC        LEA EAX,DWORD PTR SS:[EBP-14]
00446328  |. E8 CF1EFFFF    CALL FRMMSTR.004381FC
0044632D  |. 8BD0           MOV EDX,EAX                  
0044632F  |. FF45 B8        INC DWORD PTR SS:[EBP-48]
00446332  |. 8B4D 98        MOV ECX,DWORD PTR SS:[EBP-68]
00446335  |. 8B81 D0020000  MOV EAX,DWORD PTR DS:[ECX+2D0]   
0044633B  |. E8 D0EB0700    CALL FRMMSTR.004C4F10         
00446340  |. 8D55 EC        LEA EDX,DWORD PTR SS:[EBP-14]
00446343  |. 8B12           MOV EDX,DWORD PTR DS:[EDX]
00446345  |. A1 905D5500    MOV EAX,DWORD PTR DS:[555D90]
0044634A  |. 8B00           MOV EAX,DWORD PTR DS:[EAX]
0044634C  |. E8 03A0FFFF    CALL FRMMSTR.00440354         //这是关键函数,F8跟入,代码在后面分析。
00446351  |. 50             PUSH EAX                     
00446352  |. FF4D B8        DEC DWORD PTR SS:[EBP-48]            
00446355  |. 8D45 EC        LEA EAX,DWORD PTR SS:[EBP-14]           
00446358  |. BA 02000000    MOV EDX,2                              
0044635D  |. E8 D21C0E00    CALL FRMMSTR.00528034                  
00446362  |. 59             POP ECX                                 
00446363  |. 84C9           TEST CL,CL                   //这是注册码正确与否的标志
00446365  |. 0F84 25020000  JE FRMMSTR.00446590          // CL为0则跳走,当然是死路一条啦。
0044636B  |. B2 01          MOV DL,1                     //下面这一大堆都是在注册成功后向注册表写内容的过程。
0044636D  |. A1 3C444800    MOV EAX,DWORD PTR DS:[48443C]
00446372  |. E8 1DE20300    CALL FRMMSTR.00484594
00446377  |. 8945 8C        MOV DWORD PTR SS:[EBP-74],EAX   
0044637A  |. 66:C745 AC 140>MOV WORD PTR SS:[EBP-54],14
00446380  |. BA 02000080    MOV EDX,80000002
00446385  |. 8B45 8C        MOV EAX,DWORD PTR SS:[EBP-74]
00446388  |. E8 8B1B0E00    CALL FRMMSTR.00527F18
0044638D  |. 66:C745 AC 500>MOV WORD PTR SS:[EBP-54],50
00446393  |. BA 8F6D5400    MOV EDX,FRMMSTR.00546D8F   ;  ASCII "\SOFTWARE\Microsoft\CORBA Specs\Key" //这个是在HKEY_Local_Machine下

面创建的。注册成功后,你输入的注册码就那里可以看到,是明码。
00446398  |. 8D45 E8        LEA EAX,DWORD PTR SS:[EBP-18]
0044639B  |. E8 801B0E00    CALL FRMMSTR.00527F20
*省去很多行
0044643F  |. 66:C745 AC 680>MOV WORD PTR SS:[EBP-54],68
00446445  |. BA B76D5400    MOV EDX,FRMMSTR.00546DB7   ;ASCII "Thank you for ordering FrameMaster!
Your support is much appreciated.
Please store the registration key in case you need it later.
"
0044644A  |. 8D45 DC        LEA EAX,DWORD PTR SS:[EBP-24]
0044644D  |. E8 CE1A0E00    CALL FRMMSTR.00527F20
00446452  |. FF45 B8        INC DWORD PTR SS:[EBP-48]               
00446455  |. 8B00           MOV EAX,DWORD PTR DS:[EAX]               
00446457  |. B2 02          MOV DL,2                                
00446459  |. 59             POP ECX                                 
0044645A  |. E8 1D8B0700    CALL FRMMSTR.004BEF7C                  
0044645F  |. FF4D B8        DEC DWORD PTR SS:[EBP-48]
00446462  |. 8D45 DC        LEA EAX,DWORD PTR SS:[EBP-24]
00446465  |. BA 02000000    MOV EDX,2
0044646A  |. E8 C51B0E00    CALL FRMMSTR.00528034
0044646F  |> 66:C745 AC 740>MOV WORD PTR SS:[EBP-54],74
00446475  |. BA 3B6E5400    MOV EDX,FRMMSTR.00546E3B   ;ASCII "\SOFTWARE\Galleria Software\FrameMaster\Registrant"          //这个是

在HKEY_LOCAL_MACHINE下面建立的。用户名在里面。
0044647A  |. 8D45 D8        LEA EAX,DWORD PTR SS:[EBP-28]
*省去多行
004464C2  |. 8D55 D0        LEA EDX,DWORD PTR SS:[EBP-30]   //用户名地址送EDX
004464C5  |. FF32           PUSH DWORD PTR DS:[EDX]
004464C7  |. 66:C745 AC 800>MOV WORD PTR SS:[EBP-54],80
004464CD  |. BA 6E6E5400    MOV EDX,FRMMSTR.00546E6E      ;ASCII "Registrant"
004464D2  |. 8D45 D4        LEA EAX,DWORD PTR SS:[EBP-2C]
004464D5  |. E8 461A0E00    CALL FRMMSTR.00527F20
004464DA  |. FF45 B8        INC DWORD PTR SS:[EBP-48]
004464DD  |. 8B10           MOV EDX,DWORD PTR DS:[EAX]
*省去多行
00446584  |> A1 987D5500    MOV EAX,DWORD PTR DS:[_frmRegister]
00446589  |. E8 36950600    CALL FRMMSTR.004AFAC4
0044658E  |. EB 59          JMP SHORT FRMMSTR.004465E9     //如果注册成功,则走到这里,然后跳到下面。
00446590  |> 68 D0070000    PUSH 7D0                     ; /Timeout = 2000. ms//如果注册码不正确,则直接来到这里,打个2000MS的盹,然

后显示一个不成功对话框。
00446595  |. E8 EA8C0F00    CALL <JMP.&KERNEL32.Sleep>    ; \Sleep
0044659A  |. 6A 00          PUSH 0
0044659C  |. 8D45 88        LEA EAX,DWORD PTR SS:[EBP-78]
0044659F  |. E8 342EFFFF    CALL FRMMSTR.004393D8
004465A4  |. B2 02          MOV DL,2
004465A6  |. E8 612EFFFF    CALL FRMMSTR.0043940C
004465AB  |. 66:8B08        MOV CX,WORD PTR DS:[EAX]
004465AE  |. 51             PUSH ECX
004465AF  |. 66:C745 AC B00>MOV WORD PTR SS:[EBP-54],0B0
004465B5  |. BA 7A6E5400    MOV EDX,FRMMSTR.00546E7A      ;  ASCII "Failed Registration"
004465BA  |. 8D45 C0        LEA EAX,DWORD PTR SS:[EBP-40]
004465BD  |. E8 5E190E00    CALL FRMMSTR.00527F20
004465C2  |. FF45 B8        INC DWORD PTR SS:[EBP-48]              
004465C5  |. 8B00           MOV EAX,DWORD PTR DS:[EAX]               
004465C7  |. B2 01          MOV DL,1                                
004465C9  |. 59             POP ECX                                 
004465CA  |. E8 AD890700    CALL FRMMSTR.004BEF7C          //这个CALL出现错误提示。
004465CF  |. FF4D B8        DEC DWORD PTR SS:[EBP-48]
004465D2  |. 8D45 C0        LEA EAX,DWORD PTR SS:[EBP-40]
*略去多行。
================================================================================
下面我们看0044634C处的函数调用 CALL FRMMSTR.00440354 ,代码如下:
*函数前面部分代码省去,下面是黑名单比较。  
004404AB  |. FF85 18FFFFFF     INC DWORD PTR SS:[EBP-E8]
004404B1  |. BA C5285400       MOV EDX,FRMMSTR.005428C5                 ;  ASCII "KD8383VMDKKAAAL-LLF4VVIII34AAAAA-LLF4VVIII34AAAAA"
004404B6  |. 8D45 84           LEA EAX,DWORD PTR SS:[EBP-7C]
004404B9  |. E8 627A0E00       CALL FRMMSTR.00527F20
004404BE  |. FF85 18FFFFFF     INC DWORD PTR SS:[EBP-E8]
004404C4  |. BA F7285400       MOV EDX,FRMMSTR.005428F7                 ;  ASCII "344DDDDAAKKAAAB-VVIII34AAAAABBF4-LLF4VVIII34AAAAA"
004404C9  |. 8D45 88           LEA EAX,DWORD PTR SS:[EBP-78]
004404CC  |. E8 4F7A0E00       CALL FRMMSTR.00527F20
004404D1  |. FF85 18FFFFFF     INC DWORD PTR SS:[EBP-E8]
004404D7  |. BA 29295400       MOV EDX,FRMMSTR.00542929                 ;  ASCII "344DDDDAAKVVIII-34AAAAAKAAABBBF4-LLF4VVIII34AAAAA"
004404DC  |. 8D45 8C           LEA EAX,DWORD PTR SS:[EBP-74]
004404DF  |. E8 3C7A0E00       CALL FRMMSTR.00527F20
004404E4  |. FF85 18FFFFFF     INC DWORD PTR SS:[EBP-E8]
004404EA  |. BA 5B295400       MOV EDX,FRMMSTR.0054295B                 ;  ASCII "344DDVVIII34AAA-AADDAAKKAAABBBF4-LLF4VVIII34AAAAA"
004404EF  |. 8D45 90           LEA EAX,DWORD PTR SS:[EBP-70]
004404F2  |. E8 297A0E00       CALL FRMMSTR.00527F20
004404F7  |. FF85 18FFFFFF     INC DWORD PTR SS:[EBP-E8]
004404FD  |. BA 8D295400       MOV EDX,FRMMSTR.0054298D                 ;  ASCII "344DDDDAAKVVIII-34AAAAAKAAABBBF4-LLF4VVIII34AAAAA"
00440502  |. 8D45 94           LEA EAX,DWORD PTR SS:[EBP-6C]
00440505  |. E8 167A0E00       CALL FRMMSTR.00527F20
0044050A  |. FF85 18FFFFFF     INC DWORD PTR SS:[EBP-E8]
00440510  |. BA BF295400       MOV EDX,FRMMSTR.005429BF                 ;  ASCII "VVIII34AAAAA344-DDDDAAKKAAABBBF4-LLF4VVIII34AAAAA"
00440515  |. 8D45 98           LEA EAX,DWORD PTR SS:[EBP-68]
00440518  |. E8 037A0E00       CALL FRMMSTR.00527F20
0044051D  |. FF85 18FFFFFF     INC DWORD PTR SS:[EBP-E8]
00440523  |. BA F1295400       MOV EDX,FRMMSTR.005429F1                 ;  ASCII "344DDDDVVIII34A-AAAAAAKKAAABBBF4-LLF4VVIII34AAAAA"
00440528  |. 8D45 9C           LEA EAX,DWORD PTR SS:[EBP-64]
0044052B  |. E8 F0790E00       CALL FRMMSTR.00527F20
00440530  |. FF85 18FFFFFF     INC DWORD PTR SS:[EBP-E8]
00440536  |. BA 232A5400       MOV EDX,FRMMSTR.00542A23                 ;  ASCII "344DDDDAAVVIII3-4AAAAAKKAAABBBF4-LLF4VVIII34AAAAA"
0044053B  |. 8D45 A0           LEA EAX,DWORD PTR SS:[EBP-60]
0044053E  |. E8 DD790E00       CALL FRMMSTR.00527F20
00440543  |. FF85 18FFFFFF     INC DWORD PTR SS:[EBP-E8]
00440549  |. BA 552A5400       MOV EDX,FRMMSTR.00542A55                 ;  ASCII "344DDDDAVVIII34-AAAAAAKKAAABBBF4-LLF4VVIII34AAAAA"
0044054E  |. 8D45 A4           LEA EAX,DWORD PTR SS:[EBP-5C]
00440551  |. E8 CA790E00       CALL FRMMSTR.00527F20
00440556  |. FF85 18FFFFFF     INC DWORD PTR SS:[EBP-E8]
0044055C  |. BA 872A5400       MOV EDX,FRMMSTR.00542A87                 ;  ASCII "344DDDDAAKKAVVI-II34AAAAAAABBBF4-LLF4VVIII34AAAAA"
00440561  |. 8D45 A8           LEA EAX,DWORD PTR SS:[EBP-58]
00440564  |. E8 B7790E00       CALL FRMMSTR.00527F20
00440569  |. FF85 18FFFFFF     INC DWORD PTR SS:[EBP-E8]
0044056F  |. BA B92A5400       MOV EDX,FRMMSTR.00542AB9                 ;  ASCII "344DDDDAAKKVVII-I34AAAAAAAABBBF4-LLF4VVIII34AAAAA"
00440574  |. 8D45 AC           LEA EAX,DWORD PTR SS:[EBP-54]
00440577  |. E8 A4790E00       CALL FRMMSTR.00527F20
0044057C  |. FF85 18FFFFFF     INC DWORD PTR SS:[EBP-E8]
00440582  |. BA EB2A5400       MOV EDX,FRMMSTR.00542AEB                 ;  ASCII "5666DDDAAKKAVVI-II34AAAAAAABBBF4-LLF4VVIII34AAAAA"
00440587  |. 8D45 B0           LEA EAX,DWORD PTR SS:[EBP-50]
0044058A  |. E8 91790E00       CALL FRMMSTR.00527F20
0044058F  |. FF85 18FFFFFF     INC DWORD PTR SS:[EBP-E8]
00440595  |. BA 1D2B5400       MOV EDX,FRMMSTR.00542B1D                 ;  ASCII "KJ4DDDDAAKKAAVV-III34AAAAAABBBF4-LLF4VVIII34AAAAA"
0044059A  |. 8D45 B4           LEA EAX,DWORD PTR SS:[EBP-4C]
0044059D  |. E8 7E790E00       CALL FRMMSTR.00527F20
004405A2  |. FF85 18FFFFFF     INC DWORD PTR SS:[EBP-E8]
004405A8  |. BA 4F2B5400       MOV EDX,FRMMSTR.00542B4F                 ;  ASCII "3447777AVVIII34-AAAAAAKKAAABBBF4-LLF4VVIII34AAAAA"
004405AD  |. 8D45 B8           LEA EAX,DWORD PTR SS:[EBP-48]
004405B0  |. E8 6B790E00       CALL FRMMSTR.00527F20
004405B5  |. FF85 18FFFFFF     INC DWORD PTR SS:[EBP-E8]
004405BB  |. BA 812B5400       MOV EDX,FRMMSTR.00542B81                 ;  ASCII "344DDDDAAKKVVII-I34AAAAAAAABBBF4-LLF4VVIII34AAAAA"
*省去很多行
004408E0  |. 8D95 30FFFFFF     ||LEA EDX,DWORD PTR SS:[EBP-D0]
004408E6  |. 8D45 FC           ||LEA EAX,DWORD PTR SS:[EBP-4]
004408E9  |. E8 16780E00       ||CALL FRMMSTR.00528104         //这个CALL和下面构成经典结构。所以F8跟入。
004408EE  |. 84C0              ||TEST AL,AL
004408F0  |. 0F84 BD000000     ||JE FRMMSTR.004409B3           //测试AL标志,如果为不为0则不跳,不跳则OK。
004408F6  |. B0 01             ||MOV AL,1
004408F8  |. 50                ||PUSH EAX                       
004408F9  |. FF8D 18FFFFFF     ||DEC DWORD PTR SS:[EBP-E8]
004408FF  |. 8D85 30FFFFFF     ||LEA EAX,DWORD PTR SS:[EBP-D0]
*省去若干行
0044098A  |. 83C4 14           ||ADD ESP,14
0044098D  |. FF8D 18FFFFFF     ||DEC DWORD PTR SS:[EBP-E8]
00440993  |. 8D45 FC           ||LEA EAX,DWORD PTR SS:[EBP-4]
00440996  |. BA 02000000       ||MOV EDX,2
0044099B  |. E8 94760E00       ||CALL FRMMSTR.00528034
004409A0  |. 58                ||POP EAX                              
004409A1  |. 8B95 FCFEFFFF     ||MOV EDX,DWORD PTR SS:[EBP-104]         
004409A7  |. 64:8915 00000000  ||MOV DWORD PTR FS:[0],EDX
004409AE  |. E9 E7000000       ||JMP FRMMSTR.00440A9A     //程序到这里就直接跳到下面(*)代码处。
*省去若干行
00440A87  |. E8 A8750E00       CALL FRMMSTR.00528034
00440A8C  |. 58                POP EAX                                 
00440A8D  |. 8B95 FCFEFFFF     MOV EDX,DWORD PTR SS:[EBP-104]           
00440A93  |. 64:8915 00000000  MOV DWORD PTR FS:[0],EDX
00440A9A  |> 8BE5              MOV ESP,EBP               //跳到这里则成功。--------------(*)
00440A9C  |. 5D                POP EBP                                
00440A9D  \. C3                RETN
=============================================================================
下面继续分析004408E9 CALL FRMMSTR.00528104代码:
00528104  /$ 55                PUSH EBP
00528105  |. 8BEC              MOV EBP,ESP
00528107  |. 53                PUSH EBX
00528108  |. 8B00              MOV EAX,DWORD PTR DS:[EAX]
0052810A  |. 8B12              MOV EDX,DWORD PTR DS:[EDX]
0052810C  |. E8 1BF9FDFF       CALL FRMMSTR.00507A2C        //这个函数内就这一个关键函数调用,F8跟入。
00528111  |. 0F94C0            SETE AL
00528114  |. 83E0 01           AND EAX,1
00528117  |. 5B                POP EBX                  
00528118  |. 5D                POP EBP                                 
00528119  \. C3                RETN
=============================================================================
下面是0052810C CALL FRMMSTR.00507A2C函数的代码,这里就是关键地方了 。
00507A43  |. 8B46 FC           MOV EAX,DWORD PTR DS:[ESI-4]    //假码长度送EAX。
00507A46  |. 8B57 FC           MOV EDX,DWORD PTR DS:[EDI-4]    //真码长度送EAX。
00507A49  |. 29D0              SUB EAX,EDX                     //假码长度减去真码长度。这里假码是10位,真码是48位。结果是-38。
00507A4B  |. 77 02             JA SHORT FRMMSTR.00507A4F       //假码长度大于真码则跳。
00507A4D  |. 01C2              ADD EDX,EAX                     // 上面差值-38加到EDX上,就是EDX=48-38=10位。也就是下面只比较你这十位

是否相同了。
00507A4F  |> 52                PUSH EDX  
00507A50  |. C1EA 02           SHR EDX,2        //计数器初始化。
00507A53  |. 74 26             JE SHORT FRMMSTR.00507A7B
00507A55  |> 8B0E              /MOV ECX,DWORD PTR DS:[ESI]     //假码前4个字节送ECX。
00507A57  |. 8B1F              |MOV EBX,DWORD PTR DS:[EDI]     //真码前4个字节送EBX。
00507A59  |. 39D9              |CMP ECX,EBX         //比较真假。
00507A5B  |. 75 58             |JNZ SHORT FRMMSTR.00507AB5     //不同则OVER。
00507A5D  |. 4A                |DEC EDX      //计数器减1。
00507A5E  |. 74 15             |JE SHORT FRMMSTR.00507A75      //为0则跳走。
00507A60  |. 8B4E 04           |MOV ECX,DWORD PTR DS:[ESI+4]   //假码下4个字节送ECX。
00507A63  |. 8B5F 04           |MOV EBX,DWORD PTR DS:[EDI+4]   //真码下4个字节送EBX。
00507A66  |. 39D9              |CMP ECX,EBX  //比较真假。
00507A68  |. 75 4B             |JNZ SHORT FRMMSTR.00507AB5     //不同则OVER。
00507A6A  |. 83C6 08           |ADD ESI,8       //地址增量
00507A6D  |. 83C7 08           |ADD EDI,8      //地址增量
00507A70  |. 4A                |DEC EDX         //计数器减量
00507A71  |.^75 E2             \JNZ SHORT FRMMSTR.00507A55    //不为0则往上循环。
00507A73  |. EB 06             JMP SHORT FRMMSTR.00507A7B     //如果上面循环结束,直接跳转。
00507A75  |> 83C6 04           ADD ESI,4
00507A78  |. 83C7 04           ADD EDI,4
00507A7B  |> 5A                POP EDX                        //计数器重新赋值
00507A7C  |. 83E2 03           AND EDX,3
00507A7F  |. 74 22             JE SHORT FRMMSTR.00507AA3
00507A81  |. 8B0E              MOV ECX,DWORD PTR DS:[ESI]     //剩余假码送ECX,因为可能注册码长度并非4的倍数。
00507A83  |. 8B1F              MOV EBX,DWORD PTR DS:[EDI]     //剩余真码送EBX。
00507A85  |. 38D9              CMP CL,BL         //比较真假。
00507A87  |. 75 41             JNZ SHORT FRMMSTR.00507ACA     //不同则OVER。
00507A89  |. 4A                DEC EDX          //计数器减量
00507A8A  |. 74 17             JE SHORT FRMMSTR.00507AA3       //为0则跳走。
00507A8C  |. 38FD              CMP CH,BH  
00507A8E  |. 75 3A             JNZ SHORT FRMMSTR.00507ACA
00507A90  |. 4A                DEC EDX   //计数器减量
00507A91  |. 74 10             JE SHORT FRMMSTR.00507AA3      //为0则跳走。
00507A93  |. 81E3 0000FF00     AND EBX,0FF0000                //如果还有第三个字节,则用与运算取出。
00507A99  |. 81E1 0000FF00     AND ECX,0FF0000                //同上。
00507A9F  |. 39D9              CMP ECX,EBX                    //比较真假。
00507AA1  |. 75 27             JNZ SHORT FRMMSTR.00507ACA     //不同则OVER。
00507AA3  |> 01C0              ADD EAX,EAX                              ;  FRMMSTR.<ModuleEntryPoint>
00507AA5  |. EB 23             JMP SHORT FRMMSTR.00507ACA     //从这里跳走才算成功的。
*省去多行
00507ACA  |> 5F                POP EDI                                 
00507ACB  |. 5E                POP ESI                                 
00507ACC  |. 5B                POP EBX                                 
00507ACD  \. C3                RETN
=============================================================================
后记:

经过1个小时的跟踪,1个小时写出破文来,虽然这个软件最后是明码比较,我还没有发现这个真码怎么计算出来的,好象不明显。进入前面那个比较真

假的函数,你立即就可以看到真码了。当然还有10几个假码在那里列出来了,不要被它所迷惑哟。只有用它自动取的那个注册码才可以成功(废话,假

码跟它也不相等啊。)

虽然没有困难找出注册码,但如何分析出注册码的算法是关键。我还需要继续分析。先把这个笔记POST出来再说吧。

浪费您时间阅读此文,十分感谢!再次向关注我的破文的各位表示感谢!!

结果:
UserName:     wanggang
RegisterCode: D8383VMDKKAAAL-LLF4VVIII34AAAAA-LLF4VVIII34AA1-1

2006年1月17日晚完稿


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 7
支持
分享
最新回复 (17)
雪    币: 47147
活跃值: (20450)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
看看 http://www.pediy.com/ 右下角的 《2006年度精华帖排行榜》

名次  作者 精华数
1  qduwg 11  
2  busheler 2  
3  kyc 2  
4  Anskya 2  
5  fcrjzmd 2  
6  ForEver 2  
7  KuNgBiM 2  
8  snake 2  
9  loveboom 1  
10  china 1  
2006-1-18 22:22
0
雪    币: 146
活跃值: (72)
能力值: ( LV4,RANK:50 )
在线值:
发帖
回帖
粉丝
3
楼主在非洲不打猎了,改行当专业Cracker,呵呵,小心FBI通辑你哦
2006-1-18 22:37
0
雪    币: 475
活跃值: (1130)
能力值: ( LV9,RANK:1410 )
在线值:
发帖
回帖
粉丝
4
感谢KANXU的支持!我从来没有注意你说的排行榜,没有想到名列榜首啊。真是令人振奋!!!托各位的福啦!!

感谢!!

TO:PLAYX: 在非洲也没有猎可打了。哈哈。我只有当Crak了。FBI不会有问题的。打程序里面的猎,我喜欢。
2006-1-18 22:46
0
雪    币: 200
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
楼主怎想起来弄2002年的软件了
2006-1-18 23:39
0
雪    币: 1192
活跃值: (1619)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
最初由 顾影怜 发布
楼主怎想起来弄2002年的软件了


潜水员忍不住了:)

支持楼主坚持
2006-1-19 01:38
0
雪    币: 475
活跃值: (1130)
能力值: ( LV9,RANK:1410 )
在线值:
发帖
回帖
粉丝
7
顾影怜  
你好!软件是哪年的并不重要,关键是能够练手就行。不要以为新软件的技术就高了多少。旧软件也不错啊。:)
2006-1-19 20:31
0
雪    币: 313
活跃值: (250)
能力值: ( LV9,RANK:650 )
在线值:
发帖
回帖
粉丝
8
楼主说的对,学习的是技术,软件日期不重要了.
2006-1-22 09:54
0
雪    币: 277
活跃值: (312)
能力值: ( LV9,RANK:330 )
在线值:
发帖
回帖
粉丝
9
最初由 顾影怜 发布
楼主怎想起来弄2002年的软件了

楼主大概去非洲时带去的吧
2006-1-22 11:24
0
雪    币: 205
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10
楼主兄弟:早几年的软件破解起来大部分都比较简单,最近的新软件,呵呵,你去试试吧。
2006-1-22 12:03
0
雪    币: 280
活跃值: (15)
能力值: ( LV6,RANK:90 )
在线值:
发帖
回帖
粉丝
11
希望大哥能用od写破文就好了
2006-1-22 12:50
0
雪    币: 475
活跃值: (1130)
能力值: ( LV9,RANK:1410 )
在线值:
发帖
回帖
粉丝
12
哦??原来是这样啊?新软件技术比较先进了,比较难破解了。嗯 有道理的!可惜我这里无法找到新软件的。

的确是我自己带来的。所以软件比较老了。咋办??
2006-1-22 13:55
0
雪    币: 267
活跃值: (285)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
牛哥!
强!
2006-1-22 14:07
0
雪    币: 475
活跃值: (1130)
能力值: ( LV9,RANK:1410 )
在线值:
发帖
回帖
粉丝
14
侠盗
大侠能否给点关于现在最新软件的保护机制信息?比如用什么方法保护?难道以前的保护都失效了吗??现在的软件保护强大的不得了吗?我们CRACKER可能没有活干了?要失业吗??

我现在对国内的软件保护了解很少,所以我不知道现在的情况如何。希望您指点。
2006-1-22 15:32
0
雪    币: 205
活跃值: (16)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
To Qduwg:
我是刚刚入门的新手,水平跟你比要差一大截呢,不是谦虚,确实如此。我除了偶尔可以跟踪出几个保护不太复杂的注册码外,其他几乎是一无所知,更不要说破解方面的理论了。因此,我只有感性的认识:
1.现在的软件保护,壳越来越强大了,不会手动脱壳,作为一个 Cracker,几乎就要失业了。
2.明码比较的注册验证越来越少,稍笨点的程序员,也知道用你输入的假注册码逆运算出机器码,然后去跟机器码进行比较。如果看不懂算法,你根本写不出注册机,只能暴破。业内人士对暴破是很不齿的,说那是没有追求。我们 Cracker 破解的软件一大堆,可我们真正能用到的有几个?因此,如果暴破也算破解,是真的很没追求没面子的事。
3.高明点的程序员现在都玩密码学了,一套一套的,令我等低手 Cracker 们头大。
4.学习汇编看懂算法,然后用一种高效率的语言写算法注册机是越来越有必要了,可惜我没有时间去学习。毕竟破解不是赚钱的方法。

好象你在国外,但你既然能上网,难道无法下载软件吗?
http://hnpy.onlinedown.com
http://www4.skycn.com/index.html
这两个是国内比较大点的共享软件集散地,每天都有大把新程序发布,可以去看看。
2006-1-22 21:35
0
雪    币: 389
活跃值: (912)
能力值: ( LV9,RANK:770 )
在线值:
发帖
回帖
粉丝
16
能不能传个埃塞俄比亚的软件破破.
2006-1-22 21:44
0
雪    币: 222
活跃值: (40)
能力值: ( LV8,RANK:130 )
在线值:
发帖
回帖
粉丝
17
严重向楼主学习

严重支持楼上的建议
2006-1-22 22:12
0
雪    币: 475
活跃值: (1130)
能力值: ( LV9,RANK:1410 )
在线值:
发帖
回帖
粉丝
18
侠盗大侠:
今天看到您的分析,感到压力倍增!现在的软件保护都是采用比较复杂的密码学算法及相应的壳,脱壳是非常关键的一步,然后才是说

破解。我现在正在练习脱壳,先从简单的,逐步过渡到复杂点的,我也刚刚开始研究PE文件格式等细节内容,尚未入门呢。我希望以后

通过看雪论坛多多吸取营养,自己就进步很快了。

明码比较的注册验证已经淡出市场了,一般采用其他间接方法验证吗?我不知一般采用什么进行注册软件???请指教一二。我很纳闷

。现在一般采用加密狗技术保护的比较多,这应该是比较高级的保护了吧??破解难度相对比较大。爆破只是偶尔散散心而已,对那些

没有注册码的软件应该怎么办?根本没有地方输入注册码的。只有日期限制或者功能限制,如果不爆破怎么办??虽然爆破虽被业内人

士不齿。但是爆破也不可或缺呀。我们虽然追求技术的完美,但不能把这个贬的一无是处啊。特别是对菜鸟来说,也许就是从爆破获得

的信心。你说那??我们虽然用不上我们破解的软件,但不能够阻止我们破解的脚步,和追求技术一流的热情!!

关于密码学问题,我也是门外汉,我的一个同事就搞这个,什么RSA等,椭圆算法等,都有一套比较高深的理论支持。我看先学习一下数

论吧。本来我想参加数学系一个课题组,就是密码学方面的,但是他们的资料都是关于数论,我没有基础,无法听明白群论等纯数学理

论,我就自动退出了。我认为想搞密码学,数论,群论都很重要,所以程序员都一般来自搞数学的比较多。

注册机问题也比较重要,能够分析明白算法,然后写出注册机,这是我们追求的目标。这点不是跟你说第一点矛盾了吗??没有注册码

验证了,哪里来的注册码比较了??我不明白那个时候注册机还有什么用啊??请指点!!:)

另外,我现在在国外工作,上网条件简陋,速度慢的要命,所以我无法接触到比较新颖的软件。希望见谅!!

您的分析非常有水平,比我这真正的菜鸟来高多了!!我需要想你学习!!希望多发布你的经验出来,让我们受益!!感谢你的指点!



qduwg
2006-1-23 19:31
0
游客
登录 | 注册 方可回帖
返回
//