飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2698|回复: 5

wzwgp申请加入PYG破文

[复制链接]
  • TA的每日心情
    开心
    2018-2-26 08:32
  • 签到天数: 19 天

    [LV.4]偶尔看看III

    发表于 2006-6-7 11:04:56 | 显示全部楼层 |阅读模式
    【破文标题】申请加入破文之一
    【破文作者】wzwgp
    【作者邮箱】[email protected]
    破解软件】One Click Ringtone Converter 1.4  
    【下载地址】http://www.onlinedown.net/soft/46780.htm
    【破解平台】WinXP
    【软件类别】国外软件/共享版/音频工具
    【保护方式】注册码
    【作者声明】菜鸟初学Crack,申请加入PYG,只是感兴趣,消遣业余时间,错误之处敬请诸位前辈不吝赐教。
    【破解工具】OllyDBD、PEiD
    【软件介绍】一款手机铃声制作软件,只需要点一下鼠标就可以将所有的音乐变成你的手机和弦铃声。支持由WAV,MP3,WMA, OGG,  APE, FLAC音频文件到WAV, MP3和MMF格式的压缩铃声的转换。可以整个文件或部分转换,支持批处理。
    【破解过程】该软件安装后有4个EXE文件,其中unlock.exe是注册程序,PEiD检查无壳,是:Microsoft Visual C++ 7.0 Method2。OD载入查找字串参考,找到:“you registration data is incorrect.error”  双击来到代码窗口,向上在004046F3处下断,F9运行程序,弹出注册框填入用户名:wzwgp 组织:icbc  Unlock code: 12345678  点击“ok”     

     一、追码
       
    004046F3  /$  55            PUSH EBP                                ;  断下   
    004046F4  |.  8BEC          MOV EBP,ESP
    004046F6  |.  81EC 34080000 SUB ESP,834
    004046FC  |.  53            PUSH EBX
    004046FD  |.  56            PUSH ESI
    004046FE  |.  57            PUSH EDI
    004046FF  |.  33DB          XOR EBX,EBX
    00404701  |.  53            PUSH EBX
    00404702  |.  8BF0          MOV ESI,EAX
    00404704  |.  53            PUSH EBX
    00404705  |.  6A 01         PUSH 1
    00404707  |.  8D7E 20       LEA EDI,DWORD PTR DS:[ESI+20]            
    0040470A  |.  8D46 28       LEA EAX,DWORD PTR DS:[ESI+28]            ;  用户名地址入EAX
    0040470D  |.  68 EA030000   PUSH 3EA
    00404712  |.  8BCF          MOV ECX,EDI
    00404714  |.  E8 5DCCFFFF   CALL unlock.00401376
    00404719  |.  85C0          TEST EAX,EAX
    0040471B  |.  74 2A         JE SHORT unlock.00404747
    0040471D  |.  53            PUSH EBX
    0040471E  |.  53            PUSH EBX
    0040471F  |.  6A 01         PUSH 1
    00404721  |.  8D46 2C       LEA EAX,DWORD PTR DS:[ESI+2C]            ;  组织名地址入EAX
    00404724  |.  68 EB030000   PUSH 3EB
    00404729  |.  8BCF          MOV ECX,EDI
    0040472B  |.  E8 46CCFFFF   CALL unlock.00401376
    00404730  |.  85C0          TEST EAX,EAX
    00404732  |.  74 13         JE SHORT unlock.00404747
    00404734  |.  53            PUSH EBX
    00404735  |.  53            PUSH EBX
    00404736  |.  6A 01         PUSH 1
    00404738  |.  8D46 30       LEA EAX,DWORD PTR DS:[ESI+30]            ;  假码地址入EAX
    0040473B  |.  68 EC030000   PUSH 3EC
    00404740  |.  8BCF          MOV ECX,EDI
    00404742  |.  E8 2FCCFFFF   CALL unlock.00401376
    00404747  |>  8D7E 30       LEA EDI,DWORD PTR DS:[ESI+30]            ;  假码地址入EDI
    0040474A  |.  8BC7          MOV EAX,EDI
    0040474C  |.  E8 2FCDFFFF   CALL unlock.00401480
    00404751  |.  FF37          PUSH DWORD PTR DS:[EDI]                  
    00404753  |.  FF15 CC514000 CALL NEAR DWORD PTR DS:[<&USER32.CharUpp>; 假码字符小写转大写
    00404759  |.  8B46 28       MOV EAX,DWORD PTR DS:[ESI+28]
    0040475C  |.  3958 F8       CMP DWORD PTR DS:[EAX-8],EBX
    0040475F  |.  0F84 A2010000 JE unlock.00404907
    00404765  |.  8B17          MOV EDX,DWORD PTR DS:[EDI]
    00404767  |.  395A F8       CMP DWORD PTR DS:[EDX-8],EBX
    0040476A  |.  0F84 97010000 JE unlock.00404907
    00404770  |.  6A 07         PUSH 7
    00404772  |.  59            POP ECX
    00404773  |.  33C0          XOR EAX,EAX
    00404775  |.  8D7D D0       LEA EDI,DWORD PTR SS:[EBP-30]
    00404778  |.  895D CC       MOV DWORD PTR SS:[EBP-34],EBX
    0040477B  |.  F3:AB         REP STOS DWORD PTR ES:[EDI]
    0040477D  |.  B9 00010000   MOV ECX,100
    00404782  |.  8DBD CCFBFFFF LEA EDI,DWORD PTR SS:[EBP-434]
    00404788  |.  68 FF030000   PUSH 3FF                                 
    0040478D  |.  F3:AB         REP STOS DWORD PTR ES:[EDI]              
    0040478F  |.  52            PUSH EDX                                 
    00404790  |.  8D85 CCFBFFFF LEA EAX,DWORD PTR SS:[EBP-434]           
    00404796  |.  50            PUSH EAX                                 
    00404797  |.  FF15 64514000 CALL NEAR DWORD PTR DS:[<&MSVCR71._mbsnb>; 假码16进制数入堆栈
    0040479D  |.  8D85 CCFBFFFF LEA EAX,DWORD PTR SS:[EBP-434]
    004047A3  |.  E8 E6FEFFFF   CALL unlock.0040468E           ; 检查假码是否有R、T、U…有将被替换
    004047A8  |.  8D85 CCFBFFFF LEA EAX,DWORD PTR SS:[EBP-434]
    004047AE  |.  68 D8524000   PUSH unlock.004052D8                     ;  2D (-) 入栈
    004047B3  |.  50            PUSH EAX
    004047B4  |.  FF15 60514000 CALL NEAR DWORD PTR DS:[<&MSVCR71._mbsto>;  取检查后假码
    004047BA  |.  83C4 14       ADD ESP,14
    004047BD  |.  85C0          TEST EAX,EAX
    004047BF  |.  8945 FC       MOV DWORD PTR SS:[EBP-4],EAX
    004047C2  |.  0F84 F1000000 JE unlock.004048B9                       ;  未输入注册码跳到注册失败提示窗
    004047C8  |>  83FB 08       /CMP EBX,8                               ;  注册码取完没有?
    004047CB  |.  0F83 B3000000 |JNB unlock.00404884
    004047D1  |.  8B45 FC       |MOV EAX,DWORD PTR SS:[EBP-4]
    004047D4  |.  8D50 01       |LEA EDX,DWORD PTR DS:[EAX+1]
    004047D7  |>  8A08          |/MOV CL,BYTE PTR DS:[EAX]
    004047D9  |.  40            ||INC EAX
    004047DA  |.  84C9          ||TEST CL,CL
    004047DC  |.^ 75 F9         |\JNZ SHORT unlock.004047D7
    004047DE  |.  2BC2          |SUB EAX,EDX                             ;  计算每组注册码位数
    004047E0  |.  83F8 06       |CMP EAX,6
    004047E3  |.  77 12         |JA SHORT unlock.004047F7                ;  组注册码位数大于6跳到下面计算
    004047E5  |.  6A 1A         |PUSH 1A                                 
    004047E7  |.  6A 00         |PUSH 0                                 
    004047E9  |.  FF75 FC       |PUSH DWORD PTR SS:[EBP-4]               
    004047EC  |.  FF15 5C514000 |CALL NEAR DWORD PTR DS:[<&MSVCR71.strto>; F7进入
    004047F2  |.  83C4 0C       |ADD ESP,0C
    004047F5  |.  EB 6E         |JMP SHORT unlock.00404865
    004047F7  |>  8B45 FC       |MOV EAX,DWORD PTR SS:[EBP-4]
    004047FA  |.  8D50 01       |LEA EDX,DWORD PTR DS:[EAX+1]
    004047FD  |>  8A08          |/MOV CL,BYTE PTR DS:[EAX]
    004047FF  |.  40            ||INC EAX
    00404800  |.  84C9          ||TEST CL,CL
    00404802  |.^ 75 F9         |\JNZ SHORT unlock.004047FD
    00404804  |.  2BC2          |SUB EAX,EDX
    00404806  |.  83F8 08       |CMP EAX,8
    00404809  |.  75 5F         |JNZ SHORT unlock.0040486A               ;  不等于8跳走
    0040480B  |.  33C0          |XOR EAX,EAX
    0040480D  |.  884D EC       |MOV BYTE PTR SS:[EBP-14],CL
    00404810  |.  8D7D ED       |LEA EDI,DWORD PTR SS:[EBP-13]
    00404813  |.  AB            |STOS DWORD PTR ES:[EDI]
    00404814  |.  66:AB         |STOS WORD PTR ES:[EDI]
    00404816  |.  AA            |STOS BYTE PTR ES:[EDI]
    00404817  |.  33C0          |XOR EAX,EAX
    00404819  |.  884D F4       |MOV BYTE PTR SS:[EBP-C],CL
    0040481C  |.  8D7D F5       |LEA EDI,DWORD PTR SS:[EBP-B]
    0040481F  |.  AB            |STOS DWORD PTR ES:[EDI]
    00404820  |.  66:AB         |STOS WORD PTR ES:[EDI]
    00404822  |.  6A 06         |PUSH 6                                 
    00404824  |.  FF75 FC       |PUSH DWORD PTR SS:[EBP-4]               
    00404827  |.  AA            |STOS BYTE PTR ES:[EDI]                  
    00404828  |.  8B3D 64514000 |MOV EDI,DWORD PTR DS:[<&MSVCR71._mbsnbc>
    0040482E  |.  8D45 EC       |LEA EAX,DWORD PTR SS:[EBP-14]           
    00404831  |.  50            |PUSH EAX                                
    00404832  |.  FFD7          |CALL NEAR EDI                           ; 取位数等于8的假码的前6位保存
    00404834  |.  8B45 FC       |MOV EAX,DWORD PTR SS:[EBP-4]            ; 取位数等于8的假码
    00404837  |.  83C0 06       |ADD EAX,6
    0040483A  |.  6A 02         |PUSH 2
    0040483C  |.  50            |PUSH EAX                                ; 保存后2位
    0040483D  |.  8D45 F4       |LEA EAX,DWORD PTR SS:[EBP-C]
    00404840  |.  50            |PUSH EAX
    00404841  |.  FFD7          |CALL NEAR EDI
    00404843  |.  8B3D 5C514000 |MOV EDI,DWORD PTR DS:[<&MSVCR71.strtoul>  
    00404849  |.  6A 1A         |PUSH 1A                                 
    0040484B  |.  8D45 EC       |LEA EAX,DWORD PTR SS:[EBP-14]           ; 前6位地址入EAX
    0040484E  |.  6A 00         |PUSH 0                                 
    00404850  |.  50            |PUSH EAX                                
    00404851  |.  FFD7          |CALL NEAR EDI                           ; 计算前6位
    00404853  |.  89449D CC     |MOV DWORD PTR SS:[EBP+EBX*4-34],EAX   ; 保存前6位计算结果
    00404857  |.  6A 1A         |PUSH 1A
    00404859  |.  8D45 F4       |LEA EAX,DWORD PTR SS:[EBP-C]
    0040485C  |.  6A 00         |PUSH 0
    0040485E  |.  50            |PUSH EAX
    0040485F  |.  43            |INC EBX                                 ; 计数器
    00404860  |.  FFD7          |CALL NEAR EDI                           ; 计算后2位
    00404862  |.  83C4 30       |ADD ESP,30
    00404865  |>  89449D CC     |MOV DWORD PTR SS:[EBP+EBX*4-34],EAX     ; 保存计算结果(跳转来自 004047F5)
    00404869  |.  43            |INC EBX                                 ; 计数器
    0040486A  |>  68 D8524000   |PUSH unlock.004052D8                    ; 2D (-) 入栈
    0040486F  |.  6A 00         |PUSH 0
    00404871  |.  FF15 60514000 |CALL NEAR DWORD PTR DS:[<&MSVCR71._mbst>; 逐组取注册码
    00404877  |.  85C0          |TEST EAX,EAX                            ; 是否取完?
    00404879  |.  59            |POP ECX
    0040487A  |.  59            |POP ECX
    0040487B  |.  8945 FC       |MOV DWORD PTR SS:[EBP-4],EAX
    0040487E  |.^ 0F85 44FFFFFF \JNZ unlock.004047C8                     ;  未取完循环
    00404884  |>  83FB 07       CMP EBX,7                                ;  注册码是否是7组?
    00404887  |.  75 30         JNZ SHORT unlock.004048B9                ;  注册码不是7组跳到注册失败提示窗
    00404889  |.  8B45 E4       MOV EAX,DWORD PTR SS:[EBP-1C]            ;  S7入EAX
    0040488C  |.  2B45 D0       SUB EAX,DWORD PTR SS:[EBP-30]            ;  EAX=S7-S2
    0040488F  |.  2B45 CC       SUB EAX,DWORD PTR SS:[EBP-34]            ;  EAX=S7-S2-S1
    00404892  |.  3D 54B2D700   CMP EAX,0D7B254             ;  EAX=0D7B254 ?
    00404897  |.  75 20         JNZ SHORT unlock.004048B9        ; 不相等注册失败
    00404899  |.  8B45 E0       MOV EAX,DWORD PTR SS:[EBP-20]            ;  S6入EAX
    0040489C  |.  8B4D DC       MOV ECX,DWORD PTR SS:[EBP-24]            ;  S5入ECX
    0040489F  |.  03C1          ADD EAX,ECX                              ;  EAX=S6+S5
    004048A1  |.  0345 D8       ADD EAX,DWORD PTR SS:[EBP-28]            ;  EAX=S6+S5+S4
    004048A4  |.  0345 D4       ADD EAX,DWORD PTR SS:[EBP-2C]            ;  EAX=S6+S5+S4+S3
    004048A7  |.  3D D74B4E30   CMP EAX,304E4BD7             ;  EAX=304E4BD7 ?
    004048AC  |.  75 0B         JNZ SHORT unlock.004048B9        ; 不相等注册失败
    004048AE  |.  8D46 24       LEA EAX,DWORD PTR DS:[ESI+24]
    004048B1  |.  C700 01000000 MOV DWORD PTR DS:[EAX],1
    004048B7  |.  EB 06         JMP SHORT unlock.004048BF
    004048B9  |>  8D46 24       LEA EAX,DWORD PTR DS:[ESI+24]
    004048BC  |.  8320 00       AND DWORD PTR DS:[EAX],0
    004048BF  |>  8338 00       CMP DWORD PTR DS:[EAX],0
    004048C2      75 1C         JNZ SHORT unlock.004048E0               
    004048C4  |.  6A 10         PUSH 10
    004048C6  |.  68 D0524000   PUSH unlock.004052D0                     ;  error
    004048CB  |.  68 AC524000   PUSH unlock.004052AC                     ;  you registration data is incorrect.error
    004048D0  |>  FF76 04       PUSH DWORD PTR DS:[ESI+4]               
    004048D3  |.  FF15 D4514000 CALL NEAR DWORD PTR DS:[<&USER32.Message>;  MessageBoxA
    004048D9  |.  6A 02         PUSH 2
    004048DB  |.  FF76 04       PUSH DWORD PTR DS:[ESI+4]
    004048DE  |.  EB 1F         JMP SHORT unlock.004048FF
    004048E0  |>  E8 D8C9FFFF   CALL unlock.004012BD
    004048E5  |.  85C0          TEST EAX,EAX
    004048E7      75 0E         JNZ SHORT unlock.004048F7
    004048E9  |.  6A 10         PUSH 10
    004048EB  |.  68 D0524000   PUSH unlock.004052D0                     ;  error
    004048F0  |.  68 7C524000   PUSH unlock.0040527C                     ;  error. unable to save registration                                                                       information.you registration data is incorrect.error
    004048F5  |.^ EB D9         JMP SHORT unlock.004048D0
    004048F7  |>  0FB745 08     MOVZX EAX,WORD PTR SS:[EBP+8]



    004047EC  00404851  00404860  处Call  F7来到下面:

    7C35543D >  6A 01           PUSH 1
    7C35543F    FF7424 10       PUSH DWORD PTR SS:[ESP+10]
    7C355443    FF7424 10       PUSH DWORD PTR SS:[ESP+10]
    7C355447    FF7424 10       PUSH DWORD PTR SS:[ESP+10]
    7C35544B    E8 17FEFFFF     CALL MSVCR71.7C355267                    ; F7再进入
    7C355450    83C4 10         ADD ESP,10
    7C355453    C3              RETN

    7C35544B 处Call  F7来到下面:

    7C355267    55              PUSH EBP
    7C355268    8BEC            MOV EBP,ESP
    7C35526A    51              PUSH ECX
    7C35526B    53              PUSH EBX
    7C35526C    56              PUSH ESI
    7C35526D    57              PUSH EDI
    7C35526E    E8 C343FFFF     CALL MSVCR71.7C349636
    7C355273    8B70 64         MOV ESI,DWORD PTR DS:[EAX+64]
    7C355276    3B35 44EF387C   CMP ESI,DWORD PTR DS:[7C38EF44]      ; MSVCR71.7C38EF48
    7C35527C    74 07           JE SHORT MSVCR71.7C355285
    7C35527E    E8 E174FFFF     CALL MSVCR71.7C34C764
    7C355283    8BF0            MOV ESI,EAX
    7C355285    8B4D 08         MOV ECX,DWORD PTR SS:[EBP+8]         ; 假码入ECX
    7C355288    8365 FC 00      AND DWORD PTR SS:[EBP-4],0
    7C35528C    8A19            MOV BL,BYTE PTR DS:[ECX]             ; 逐个取假码
    7C35528E    8D79 01         LEA EDI,DWORD PTR DS:[ECX+1]
    7C355291    837E 28 01      CMP DWORD PTR DS:[ESI+28],1
    7C355295    0FB6C3          MOVZX EAX,BL
    7C355298    7E 11           JLE SHORT MSVCR71.7C3552AB           ; 小于等于转移
    7C35529A    6A 08           PUSH 8
    7C35529C    50              PUSH EAX
    7C35529D    56              PUSH ESI
    7C35529E    E8 15D1FFFF     CALL MSVCR71.7C3523B8
    7C3552A3    8B4D 08         MOV ECX,DWORD PTR SS:[EBP+8]
    7C3552A6    83C4 0C         ADD ESP,0C
    7C3552A9    EB 0A           JMP SHORT MSVCR71.7C3552B5
    7C3552AB    8B56 48         MOV EDX,DWORD PTR DS:[ESI+48]
    7C3552AE    0FB60442        MOVZX EAX,BYTE PTR DS:[EDX+EAX*2]    ; [EDX+EAX*2]=1
    7C3552B2    83E0 08         AND EAX,8
    7C3552B5    85C0            TEST EAX,EAX
    7C3552B7    74 05           JE SHORT MSVCR71.7C3552BE
    7C3552B9    8A1F            MOV BL,BYTE PTR DS:[EDI]
    7C3552BB    47              INC EDI
    7C3552BC  ^ EB D3           JMP SHORT MSVCR71.7C355291
    7C3552BE    80FB 2D         CMP BL,2D                            ; 2D (-)
    7C3552C1    75 06           JNZ SHORT MSVCR71.7C3552C9
    7C3552C3    834D 14 02      OR DWORD PTR SS:[EBP+14],2
    7C3552C7    EB 05           JMP SHORT MSVCR71.7C3552CE
    7C3552C9    80FB 2B         CMP BL,2B                            ; 2B (+)
    7C3552CC    75 03           JNZ SHORT MSVCR71.7C3552D1
    7C3552CE    8A1F            MOV BL,BYTE PTR DS:[EDI]
    7C3552D0    47              INC EDI
    7C3552D1    8B45 10         MOV EAX,DWORD PTR SS:[EBP+10]        ; [EBP+10]=1A
    7C3552D4    85C0            TEST EAX,EAX
    7C3552D6    0F8C 3A010000   JL MSVCR71.7C355416
    7C3552DC    83F8 01         CMP EAX,1
    7C3552DF    0F84 31010000   JE MSVCR71.7C355416
    7C3552E5    83F8 24         CMP EAX,24
    7C3552E8    0F8F 28010000   JG MSVCR71.7C355416
    7C3552EE    85C0            TEST EAX,EAX
    7C3552F0    6A 10           PUSH 10
    7C3552F2    59              POP ECX                              ; ECX=10
    7C3552F3    75 24           JNZ SHORT MSVCR71.7C355319           ; 跳
    7C3552F5    80FB 30         CMP BL,30
    7C3552F8    74 09           JE SHORT MSVCR71.7C355303
    7C3552FA    C745 10 0A00000>MOV DWORD PTR SS:[EBP+10],0A
    7C355301    EB 2E           JMP SHORT MSVCR71.7C355331
    7C355303    8A07            MOV AL,BYTE PTR DS:[EDI]
    7C355305    3C 78           CMP AL,78
    7C355307    74 0D           JE SHORT MSVCR71.7C355316
    7C355309    3C 58           CMP AL,58
    7C35530B    74 09           JE SHORT MSVCR71.7C355316
    7C35530D    C745 10 0800000>MOV DWORD PTR SS:[EBP+10],8
    7C355314    EB 1B           JMP SHORT MSVCR71.7C355331
    7C355316    894D 10         MOV DWORD PTR SS:[EBP+10],ECX
    7C355319    394D 10         CMP DWORD PTR SS:[EBP+10],ECX        ; 1A>10
    7C35531C    75 13           JNZ SHORT MSVCR71.7C355331
    7C35531E    80FB 30         CMP BL,30
    7C355321    75 0E           JNZ SHORT MSVCR71.7C355331
    7C355323    8A07            MOV AL,BYTE PTR DS:[EDI]
    7C355325    3C 78           CMP AL,78
    7C355327    74 04           JE SHORT MSVCR71.7C35532D
    7C355329    3C 58           CMP AL,58
    7C35532B    75 04           JNZ SHORT MSVCR71.7C355331
    7C35532D    47              INC EDI
    7C35532E    8A1F            MOV BL,BYTE PTR DS:[EDI]
    7C355330    47              INC EDI
    7C355331    83C8 FF         OR EAX,FFFFFFFF
    7C355334    33D2            XOR EDX,EDX
    7C355336    F775 10         DIV DWORD PTR SS:[EBP+10]            ; EAX=FFFFFFFF div 1A=09D89D89
    7C355339    8B35 60B4387C   MOV ESI,DWORD PTR DS:[_pctype]       ; MSVCR71.7C37A4D8
    7C35533F    0FB6CB          MOVZX ECX,BL
    7C355342    66:8B0C4E       MOV CX,WORD PTR DS:[ESI+ECX*2]       ; [ESI+ECX*2]=1
    7C355346    F6C1 04         TEST CL,4                            ; 1 and 4 =0
    7C355349    74 08           JE SHORT MSVCR71.7C355353
    7C35534B    0FBECB          MOVSX ECX,BL
    7C35534E    83E9 30         SUB ECX,30                           ; 注册码是数字减30
    7C355351    EB 1F           JMP SHORT MSVCR71.7C355372
    7C355353    66:F7C1 0301    TEST CX,103                          ; 1 and 103 =1
    7C355358    74 43           JE SHORT MSVCR71.7C35539D
    7C35535A    80FB 61         CMP BL,61                            ; 61 (a)
    7C35535D    7C 0D           JL SHORT MSVCR71.7C35536C
    7C35535F    80FB 7A         CMP BL,7A                            ; 7A (z)
    7C355362    7F 08           JG SHORT MSVCR71.7C35536C
    7C355364    0FBECB          MOVSX ECX,BL
    7C355367    83E9 20         SUB ECX,20
    7C35536A    EB 03           JMP SHORT MSVCR71.7C35536F
    7C35536C    0FBECB          MOVSX ECX,BL
    7C35536F    83C1 C9         ADD ECX,-37                          ; 注册码是字符减37
    7C355372    3B4D 10         CMP ECX,DWORD PTR SS:[EBP+10]        ; [EBP+10]=1A
    7C355375    73 26           JNB SHORT MSVCR71.7C35539D      ; 注册码减37要小于1A
    7C355377    834D 14 08      OR DWORD PTR SS:[EBP+14],8
    7C35537B    3945 FC         CMP DWORD PTR SS:[EBP-4],EAX         ; [EBP-4]=计算结果 < EAX=9D89D89
    7C35537E    72 0C           JB SHORT MSVCR71.7C35538C            
    7C355380    75 04           JNZ SHORT MSVCR71.7C355386
    7C355382    3BCA            CMP ECX,EDX
    7C355384    76 06           JBE SHORT MSVCR71.7C35538C
    7C355386    834D 14 04      OR DWORD PTR SS:[EBP+14],4
    7C35538A    EB 0C           JMP SHORT MSVCR71.7C355398
    7C35538C    8B75 FC         MOV ESI,DWORD PTR SS:[EBP-4]         ; [EBP-4] 计算结果
    7C35538F    0FAF75 10       IMUL ESI,DWORD PTR SS:[EBP+10]       ; ESI=0*1A=0 
    7C355393    03F1            ADD ESI,ECX                          ; ESI=0+s1+(-37)=s1+(-37)
    7C355395    8975 FC         MOV DWORD PTR SS:[EBP-4],ESI         ; 保存ESI
    7C355398    8A1F            MOV BL,BYTE PTR DS:[EDI]             ; 逐个取1组中的假码
    7C35539A    47              INC EDI
    7C35539B  ^ EB 9C           JMP SHORT MSVCR71.7C355339           ; 回跳到7C355339处
    7C35539D    8B45 14         MOV EAX,DWORD PTR SS:[EBP+14]
    7C3553A0    4F              DEC EDI
    7C3553A1    A8 08           TEST AL,8
    7C3553A3    75 0F           JNZ SHORT MSVCR71.7C3553B4
    7C3553A5    837D 0C 00      CMP DWORD PTR SS:[EBP+C],0
    7C3553A9    74 03           JE SHORT MSVCR71.7C3553AE
    7C3553AB    8B7D 08         MOV EDI,DWORD PTR SS:[EBP+8]
    7C3553AE    8365 FC 00      AND DWORD PTR SS:[EBP-4],0
    7C3553B2    EB 4B           JMP SHORT MSVCR71.7C3553FF
    7C3553B4    A8 04           TEST AL,4
    7C3553B6    BE FFFFFF7F     MOV ESI,7FFFFFFF
    7C3553BB    75 1B           JNZ SHORT MSVCR71.7C3553D8
    7C3553BD    A8 01           TEST AL,1
    7C3553BF    75 3E           JNZ SHORT MSVCR71.7C3553FF
    7C3553C1    83E0 02         AND EAX,2
    7C3553C4    74 09           JE SHORT MSVCR71.7C3553CF
    7C3553C6    817D FC 0000008>CMP DWORD PTR SS:[EBP-4],80000000
    7C3553CD    77 09           JA SHORT MSVCR71.7C3553D8
    7C3553CF    85C0            TEST EAX,EAX
    7C3553D1    75 2C           JNZ SHORT MSVCR71.7C3553FF
    7C3553D3    3975 FC         CMP DWORD PTR SS:[EBP-4],ESI
    7C3553D6    76 27           JBE SHORT MSVCR71.7C3553FF
    7C3553D8    E8 F34AFFFF     CALL MSVCR71._errno
    7C3553DD    F645 14 01      TEST BYTE PTR SS:[EBP+14],1
    7C3553E1    C700 22000000   MOV DWORD PTR DS:[EAX],22
    7C3553E7    74 06           JE SHORT MSVCR71.7C3553EF
    7C3553E9    834D FC FF      OR DWORD PTR SS:[EBP-4],FFFFFFFF
    7C3553ED    EB 10           JMP SHORT MSVCR71.7C3553FF
    7C3553EF    8A45 14         MOV AL,BYTE PTR SS:[EBP+14]
    7C3553F2    24 02           AND AL,2
    7C3553F4    F6D8            NEG AL
    7C3553F6    1BC0            SBB EAX,EAX
    7C3553F8    F7D8            NEG EAX
    7C3553FA    03C6            ADD EAX,ESI
    7C3553FC    8945 FC         MOV DWORD PTR SS:[EBP-4],EAX
    7C3553FF    8B45 0C         MOV EAX,DWORD PTR SS:[EBP+C]
    7C355402    85C0            TEST EAX,EAX
    7C355404    74 02           JE SHORT MSVCR71.7C355408
    7C355406    8938            MOV DWORD PTR DS:[EAX],EDI
    7C355408    F645 14 02      TEST BYTE PTR SS:[EBP+14],2
    7C35540C    74 03           JE SHORT MSVCR71.7C355411
    7C35540E    F75D FC         NEG DWORD PTR SS:[EBP-4]
    7C355411    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]
    7C355414    EB 0B           JMP SHORT MSVCR71.7C355421
    7C355416    8B45 0C         MOV EAX,DWORD PTR SS:[EBP+C]
    7C355419    85C0            TEST EAX,EAX
    7C35541B    74 02           JE SHORT MSVCR71.7C35541F
    7C35541D    8908            MOV DWORD PTR DS:[EAX],ECX
    7C35541F    33C0            XOR EAX,EAX
    7C355421    5F              POP EDI                              ; 0012F958
    7C355422    5E              POP ESI
    7C355423    5B              POP EBX
    7C355424    C9              LEAVE
    7C355425    C3              RETN                 ; 返回到 7C355450


    004047A3 处 CALL unlock.0040468E 检查假码中如有以下字符将被替换。

    0040468E  /$ /EB 39         JMP SHORT unlock.004046C9
    00404690  |> |0FBE08        /MOVSX ECX,BYTE PTR DS:[EAX]
    00404693  |. |83C1 AE       |ADD ECX,-52                             ;  Switch (cases 52..5A)
    00404696  |. |83F9 08       |CMP ECX,8
    00404699  |. |77 2D         |JA SHORT unlock.004046C8
    0040469B  |. |FF248D CF4640>|JMP NEAR DWORD PTR DS:[ECX*4+4046CF]
    004046A2  |> |C600 30       |MOV BYTE PTR DS:[EAX],30                ;  Case 52 ('R') of switch 00404693
    004046A5  |. |EB 21         |JMP SHORT unlock.004046C8
    004046A7  |> |C600 4F       |MOV BYTE PTR DS:[EAX],4F                ;  Case 54 ('T') of switch 00404693
    004046AA  |. |EB 1C         |JMP SHORT unlock.004046C8
    004046AC  |> |C600 31       |MOV BYTE PTR DS:[EAX],31                ;  Case 55 ('U') of switch 00404693
    004046AF  |. |EB 17         |JMP SHORT unlock.004046C8
    004046B1  |> |C600 49       |MOV BYTE PTR DS:[EAX],49                ;  Case 56 ('V') of switch 00404693
    004046B4  |. |EB 12         |JMP SHORT unlock.004046C8
    004046B6  |> |C600 4C       |MOV BYTE PTR DS:[EAX],4C                ;  Case 57 ('W') of switch 00404693
    004046B9  |. |EB 0D         |JMP SHORT unlock.004046C8
    004046BB  |> |C600 38       |MOV BYTE PTR DS:[EAX],38                ;  Case 58 ('X') of switch 00404693
    004046BE  |. |EB 08         |JMP SHORT unlock.004046C8
    004046C0  |> |C600 42       |MOV BYTE PTR DS:[EAX],42                ;  Case 59 ('Y') of switch 00404693
    004046C3  |. |EB 03         |JMP SHORT unlock.004046C8
    004046C5  |> |C600 35       |MOV BYTE PTR DS:[EAX],35                ;  Case 5A ('Z') of switch 00404693
    004046C8  |> |40            |INC EAX                                 ;  Default case of switch 00404693
    004046C9  |> \8038 00        CMP BYTE PTR DS:[EAX],0
    004046CC  |.^ 75 C2         \JNZ SHORT unlock.00404690
    004046CE  \.  C3            RETN

    二、追码分析

    1.注册码有7组(S1、S2、S3、S4、S5、S6、S7)ASSIC码(0-9、a-z)组成,如有R、T等将被替换(详见上),不被替换的
     字符S(53-37=1C>1A)、Q(51-37=1A)及其余ASSIC码组成的注册码与排在其后的该组字符将忽略不参与运算。
    2.每组注册码可以是1-6位或8位,如是其他位数,该组注册码计算结果为0。8位组注册码将被分成前6位和后2位2组,
     产生2组计算结果。
    3.每组注册码进行如下运算:S(s1…s6)
     (1) 0*1A+s1
      (2) (1)*1A+s2
      (3) (2)*1A+s3
      (4) (3)*1A+s4
      (5) (4)*1A+s5
      (6)S=(5)*1A+s6
    4.如果满足下列等式:
      S7-S2-S1=0D7B254
      S6+S5+S4+S3=304E4BD7
     注册成功。

     注册码:2LB2J2A4-N47F8D-1B8LIA-KOBLH4-MHA5CE-409A5A

    注册信息保存在HKEY_CURRENT_USER\Software\Streamware Development\ringconv,重启时验证注册信息。

    [ 本帖最后由 wzwgp 于 2006-6-7 15:28 编辑 ]
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-2-26 08:32
  • 签到天数: 19 天

    [LV.4]偶尔看看III

     楼主| 发表于 2006-6-7 11:12:01 | 显示全部楼层

    申请加入破文之二

    【破文标题】申请加入破文之二
    【破文作者】wzwgp
    【作者邮箱】[email protected]
    【破解软件】Picture To Icon 1.914  
    【下载地址】http://www.onlinedown.net/soft/45891.htm
    【破解平台】WinXP
    【保护方式】ASPack 壳、注册码
    【作者声明】菜鸟初学Crack,申请加入PYG,只是感兴趣,消遣业余时间,错误之处敬请诸位前辈不吝赐教。
    【破解工具】OllyDBD、PEiD
    【软件介绍】能将图片或屏幕的一部分转化为ICON图标,调整图标大小以及从资源库中提取icon。支持BMP, JPEG, GIF, CUR, WMF。

    【破解过程】

    一、脱壳

    PEiD 查壳:ASPack 2.001 -> Alexey Solodovnikov  OD载入,提示“入口点超出代码范围......”确定后,提示“代码段可能被压缩、加密....”选否。停在下面:

    00613001 >  60              PUSHAD              ; 入口代码
    00613002    E8 72050000     CALL Pic2Ico.00613579       ; F8到此 ESP=12FFA4
    00613007    EB 4C           JMP SHORT Pic2Ico.00613055

    下断:HR ESP  F9

    006134F4   /75 08           JNZ SHORT Pic2Ico.006134FE        ; 断在此,F8跳
    006134F6   |B8 01000000     MOV EAX,1
    006134FB   |C2 0C00         RETN 0C
    006134FE   \68 CC154000     PUSH Pic2Ico.004015CC       ; 跳到这儿
    00613503    C3              RETN               ; F8返回到004015CC

    004015CC   /EB 10           JMP SHORT Pic2Ico.004015DE    ; 到达OEP
    004015CE   |66:623A         BOUND DI,DWORD PTR DS:[EDX]
    004015D1   |43              INC EBX
    004015D2   |2B2B            SUB EBP,DWORD PTR DS:[EBX]
    004015D4   |48              DEC EAX
    004015D5   |4F              DEC EDI
    004015D6   |4F              DEC EDI
    004015D7   |4B              DEC EBX

    在004015CC处OllyDump方式1脱壳,保存文件后,运行正常。PEiD 再查: Borland C++ 1999


    二、追码

    OD载入脱壳后文件,查找字串参考,找到:register successfully!\nthank you,双击来到:00422BED处,向上翻很长一段代码,在
    004228E8处下断,F9 在注册框里填用户名:wzwgp 注册码:127A31682B 点“OK”

    004228E8  /.  55            PUSH EBP                         ;  断下
    004228E9  |.  8BEC          MOV EBP,ESP
    004228EB  |.  83C4 9C       ADD ESP,-64
          --------------中间省略------------------
    00422926  |.  8B4D A4       MOV ECX,DWORD PTR SS:[EBP-5C]
    00422929  |.  8B81 00030000 MOV EAX,DWORD PTR DS:[ECX+300]
    0042292F  |.  E8 E4FE0900   CALL zt.004C2818
    00422934  |.  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]      ;  用户名地址指针入EAX
    00422937  |.  E8 6032FEFF   CALL zt.00405B9C                  ;  取得用户名位数
    0042293C  |.  83F8 03       CMP EAX,3                         ;  用户名位数与3比较大小
    0042293F  |.  0F9CC2        SETL DL
    00422942  |.  83E2 01       AND EDX,1
    00422945  |.  52            PUSH EDX                          
    00422946  |.  FF4D C4       DEC DWORD PTR SS:[EBP-3C]         
    00422949  |.  8D45 FC       LEA EAX,DWORD PTR SS:[EBP-4]     
    0042294C  |.  BA 02000000   MOV EDX,2                        
    00422951  |.  E8 1E0F0D00   CALL zt.004F3874                  
    00422956  |.  59            POP ECX
    00422957  |.  84C9          TEST CL,CL
    00422959  |.  74 3C         JE SHORT zt.00422997              ;  用户名位数大于3位跳
    0042295B  |.  66:C745 B8 14>MOV WORD PTR SS:[EBP-48],14
    00422961  |.  BA 6D275100   MOV EDX,zt.0051276D               ;  please input your full name!

    00422997  |> \68 F4010000   PUSH 1F4                          ; /跳到此
    0042299C  |.  E8 B7A40E00   CALL <JMP.&kernel32.Sleep>        ; \Sleep
    004229A1  |.  66:C745 B8 20>MOV WORD PTR SS:[EBP-48],20
    004229A7  |.  8D45 F4       LEA EAX,DWORD PTR SS:[EBP-C]
    004229AA  |.  E8 CD11FEFF   CALL zt.00403B7C
    004229AF  |.  8BD0          MOV EDX,EAX
    004229B1  |.  FF45 C4       INC DWORD PTR SS:[EBP-3C]
    004229B4  |.  8B4D A4       MOV ECX,DWORD PTR SS:[EBP-5C]
    004229B7  |.  8B81 04030000 MOV EAX,DWORD PTR DS:[ECX+304]
    004229BD  |.  E8 56FE0900   CALL zt.004C2818                  ;  取假码
    004229C2  |.  8D55 F4       LEA EDX,DWORD PTR SS:[EBP-C]      ;  假码地址指针入EDX
    004229C5  |.  FF32          PUSH DWORD PTR DS:[EDX]           ;  Arg1 = 00BA3684 (ASCII "127A31682B")
    004229C7  |.  E8 24E7FFFF   CALL zt.004210F0                  ;  F7 进入算法

     004229C7 处F7 来到下面:

    004210F0  /$  55            PUSH EBP
    004210F1  |.  8BEC          MOV EBP,ESP
    004210F3  |.  81C4 74FFFFFF ADD ESP,-8C
    004210F9  |.  56            PUSH ESI
    004210FA  |.  57            PUSH EDI
    004210FB  |.  B8 C0285100   MOV EAX,zt.005128C0
    00421100  |.  E8 7B760C00   CALL zt.004E8780
    00421105  |.  C745 F8 01000>MOV DWORD PTR SS:[EBP-8],1
    0042110C  |.  8D55 08       LEA EDX,DWORD PTR SS:[EBP+8]
    0042110F  |.  8D45 08       LEA EAX,DWORD PTR SS:[EBP+8]
    00421112  |.  E8 DD260D00   CALL zt.004F37F4
    00421117  |.  FF45 F8       INC DWORD PTR SS:[EBP-8]
    0042111A  |.  66:C745 EC 08>MOV WORD PTR SS:[EBP-14],8
    00421120  |.  C645 DB 00    MOV BYTE PTR SS:[EBP-25],0
    00421124  |.  8D45 08       LEA EAX,DWORD PTR SS:[EBP+8]
    00421127  |.  E8 704AFEFF   CALL zt.00405B9C         ;  取假码位数
    0042112C  |.  83F8 2C       CMP EAX,2C                       ;  注册码要44位,填入44位注册码重新来到此
    0042112F      0F85 3E020000 JNZ zt.00421373
    00421135  |.  BE D6245100   MOV ESI,zt.005124D6              ;  常数组入ESI (1z1h+2a0n-0g8y*9a1n|)
    0042113A  |.  8D7D 88       LEA EDI,DWORD PTR SS:[EBP-78]
    0042113D  |.  B9 05000000   MOV ECX,5
    00421142  |.  F3:A5         REP MOVS DWORD PTR ES:[EDI],DWOR>; 常数入栈(12FA30-40)  
    00421144  |.  A4            MOVS BYTE PTR ES:[EDI],BYTE PTR >
    00421145  |.  8D45 08       LEA EAX,DWORD PTR SS:[EBP+8]     ; 假码地址入EAX
    00421148  |.  E8 2B10FEFF   CALL zt.00402178         ; 取假码
    0042114D  |.  0FBE50 28     MOVSX EDX,BYTE PTR DS:[EAX+28]  ; 假码41位入EDX
    00421151  |.  83FA 50       CMP EDX,50                       ; 第41位注册码(50)
    00421154      74 23         JE SHORT zt.00421179
    00421156  |.  33C0          XOR EAX,EAX
    00421158  |.  50            PUSH EAX
    00421159  |.  FF4D F8       DEC DWORD PTR SS:[EBP-8]
    0042115C  |.  8D45 08       LEA EAX,DWORD PTR SS:[EBP+8]
    0042115F  |.  BA 02000000   MOV EDX,2
    00421164  |.  E8 0B270D00   CALL zt.004F3874
    00421169  |.  58            POP EAX
    0042116A  |.  8B55 DC       MOV EDX,DWORD PTR SS:[EBP-24]
    0042116D  |.  64:8915 00000>MOV DWORD PTR FS:[0],EDX
    00421174      E9 19020000   JMP zt.00421392
    00421179  |>  8D45 08       LEA EAX,DWORD PTR SS:[EBP+8]
    0042117C  |.  E8 F70FFEFF   CALL zt.00402178
    00421181  |.  0FBE50 29     MOVSX EDX,BYTE PTR DS:[EAX+29]
    00421185  |.  83FA 32       CMP EDX,32            ; 第42位注册码(32)
    00421188  |.  74 23         JE SHORT zt.004211AD
    0042118A  |.  33C0          XOR EAX,EAX
    0042118C  |.  50            PUSH EAX
    0042118D  |.  FF4D F8       DEC DWORD PTR SS:[EBP-8]
    00421190  |.  8D45 08       LEA EAX,DWORD PTR SS:[EBP+8]
    00421193  |.  BA 02000000   MOV EDX,2
    00421198  |.  E8 D7260D00   CALL zt.004F3874
    0042119D  |.  58            POP EAX
    0042119E  |.  8B55 DC       MOV EDX,DWORD PTR SS:[EBP-24]
    004211A1  |.  64:8915 00000>MOV DWORD PTR FS:[0],EDX
    004211A8  |.  E9 E5010000   JMP zt.00421392
    004211AD  |>  8D45 08       LEA EAX,DWORD PTR SS:[EBP+8]
    004211B0  |.  E8 C30FFEFF   CALL zt.00402178
    004211B5  |.  0FBE50 2A     MOVSX EDX,BYTE PTR DS:[EAX+2A]
    004211B9  |.  83FA 49       CMP EDX,49                        ; 第43位注册码(49)
    004211BC  |.  74 23         JE SHORT zt.004211E1
    004211BE  |.  33C0          XOR EAX,EAX
    004211C0  |.  50            PUSH EAX
    004211C1  |.  FF4D F8       DEC DWORD PTR SS:[EBP-8]
    004211C4  |.  8D45 08       LEA EAX,DWORD PTR SS:[EBP+8]
    004211C7  |.  BA 02000000   MOV EDX,2
    004211CC  |.  E8 A3260D00   CALL zt.004F3874
    004211D1  |.  58            POP EAX
    004211D2  |.  8B55 DC       MOV EDX,DWORD PTR SS:[EBP-24]
    004211D5  |.  64:8915 00000>MOV DWORD PTR FS:[0],EDX
    004211DC  |.  E9 B1010000   JMP zt.00421392
    004211E1  |>  8D45 08       LEA EAX,DWORD PTR SS:[EBP+8]
    004211E4  |.  E8 8F0FFEFF   CALL zt.00402178
    004211E9  |.  0FBE50 2B     MOVSX EDX,BYTE PTR DS:[EAX+2B]
    004211ED  |.  83FA 31       CMP EDX,31                        ;  第44位注册码(31)
    004211F0  |.  74 23         JE SHORT zt.00421215       ;  相等就跳

    00421215  |> \8D45 08       LEA EAX,DWORD PTR SS:[EBP+8]      ;  跳到此
    00421218  |.  E8 5B0FFEFF   CALL zt.00402178
    0042121D  |.  50            PUSH EAX                           
    0042121E  |.  8D55 A0       LEA EDX,DWORD PTR SS:[EBP-60]     
    00421221  |.  52            PUSH EDX                           
    00421222  |.  E8 B5720C00   CALL zt.004E84DC                  
    00421227  |.  83C4 08       ADD ESP,8
    0042122A  |.  0FBE4D A1     MOVSX ECX,BYTE PTR SS:[EBP-5F]  ; 取假码第2位
    0042122E  |.  83F9 30       CMP ECX,30                        ; 第2位注册码(30)
    00421231      0F85 3C010000 JNZ zt.00421373                    
    00421237  |.  C645 A1 23    MOV BYTE PTR SS:[EBP-5F],23       ; 常数32替换第2位注册码
    0042123B  |.  C645 DB 01    MOV BYTE PTR SS:[EBP-25],1
    0042123F  |.  C745 D4 02000>MOV DWORD PTR SS:[EBP-2C],2
     
     进入第一个循环
    00421246  |> /8B45 D4       /MOV EAX,DWORD PTR SS:[EBP-2C]
    00421249  |. |0FBE5405 88   |MOVSX EDX,BYTE PTR SS:[EBP+EAX-78]      ;  edx=31(常数组第三位)(逐位取常数组)
    0042124E  |. |8B4D D4       |MOV ECX,DWORD PTR SS:[EBP-2C]           ;  [ebp-2c]=2
    00421251  |. |0FBE440D 9F   |MOVSX EAX,BYTE PTR SS:[EBP+ECX-61]      ;  eax=23(替换后的假码第二位、逐位取假码)
    00421256  |. |03D0          |ADD EDX,EAX                             ;  edx=54
    00421258  |. |8B4D D4       |MOV ECX,DWORD PTR SS:[EBP-2C]
    0042125B  |. |0FBE440D A0   |MOVSX EAX,BYTE PTR SS:[EBP+ECX-60]      ;  eax=37(假码第三位、逐位取假码)
    00421260  |. |33D0          |XOR EDX,EAX                             ;  edx=63
    00421262  |. |8B4D D4       |MOV ECX,DWORD PTR SS:[EBP-2C]
    00421265  |. |0FBE440D 88   |MOVSX EAX,BYTE PTR SS:[EBP+ECX-78]      ;  eax=31
    0042126A  |. |33D0          |XOR EDX,EAX                             ;  edx=52
    0042126C  |. |52            |PUSH EDX                                
    0042126D  |. |E8 26010000   |CALL zt.00421398                        
    00421272  |. |59            |POP ECX
    00421273  |. |B9 1A000000   |MOV ECX,1A
    00421278  |. |99            |CDQ
    00421279  |. |F7F9          |IDIV ECX                                ;  eax=3  edx=4 (52 IDIV 1A)
    0042127B  |. |83C2 41       |ADD EDX,41                              ;  edx=4+41=45
    0042127E  |. |8B45 D4       |MOV EAX,DWORD PTR SS:[EBP-2C]
    00421281  |. |0FBE4C05 A9   |MOVSX ECX,BYTE PTR SS:[EBP+EAX-57]      ;  假码第12位入ecx
    00421286  |. |3BD1          |CMP EDX,ECX               ;  注册码第12位=45
    00421288     |75 06          JZ SHORT zt.00421290                    ;  将JN改成JNZ可以走完循环
    0042128A  |. |C645 DB 00    |MOV BYTE PTR SS:[EBP-25],0
    0042128E  |. |EB 09         |JMP SHORT zt.00421299
    00421290  |> |FF45 D4       |INC DWORD PTR SS:[EBP-2C]               ;  [ebp-2c]=2+1(计数器)
    00421293  |. |837D D4 0A    |CMP DWORD PTR SS:[EBP-2C],0A
    00421297  |.^\7C AD         \JL SHORT zt.00421246                    ;  [ebp-2c]小于0A循环

     通过该循环计算出44位注册码中的8个数(45 41 4D 59 50 47 51 57),第12位到第19位。
     走出第一个循环来到第二个循环,将已知的注册码填到对应位置,来到第二个循环。

    004212B6  |> /8B55 D0       /MOV EDX,DWORD PTR SS:[EBP-30]           ;  18入EDX [EBP-30]计数器
    004212B9  |. |0FBE4415 89   |MOVSX EAX,BYTE PTR SS:[EBP+EDX-77]      ;  替换后的假码第二位入EAX (逐位取假码)
    004212BE  |. |B9 06000000   |MOV ECX,6
    004212C3  |. |99            |CDQ
    004212C4  |. |F7F9          |IDIV ECX                                ;  EAX=5 EDX=5 (23 IDIV 6)
    004212C6  |. |8BCA          |MOV ECX,EDX                             ;  ECX=5
    004212C8  |. |8B45 D0       |MOV EAX,DWORD PTR SS:[EBP-30]
    004212CB  |. |0FBE5405 8A   |MOVSX EDX,BYTE PTR SS:[EBP+EAX-76]      ;  假码第3位入EDX (逐位取假码)
    004212D0  |. |D3E2          |SHL EDX,CL                              ;  EDX=6E0  Cl=5 (逻辑右移)
    004212D2  |. |8B45 D0       |MOV EAX,DWORD PTR SS:[EBP-30]
    004212D5  |. |0FBE4C05 8B   |MOVSX ECX,BYTE PTR SS:[EBP+EAX-75]      ;  假码第4位入ECX=41 (A)
    004212DA  |. |0BD1          |OR EDX,ECX                              ;  EDX=6E1 (6E0 OR 41)
    004212DC  |. |52            |PUSH EDX                                
    004212DD  |. |E8 B6000000   |CALL zt.00421398                        ;  EDX的值存入EAX
    004212E2  |. |59            |POP ECX
    004212E3  |. |B9 1A000000   |MOV ECX,1A
    004212E8  |. |99            |CDQ
    004212E9  |. |F7F9          |IDIV ECX                                ;  eax=43 edx=13 (6E1 IDIV 1A)
    004212EB  |. |80C2 61       |ADD DL,61                               ;  DL=13+61=74
    004212EE  |. |8B45 D0       |MOV EAX,DWORD PTR SS:[EBP-30]
    004212F1  |. |889405 5CFFFF>|MOV BYTE PTR SS:[EBP+EAX-A4],DL         ;  保存计算结果
    004212F8  |. |FF45 D0       |INC DWORD PTR SS:[EBP-30]               ;  计数器加1
    004212FB  |. |837D D0 28    |CMP DWORD PTR SS:[EBP-30],28            ;  计数器的数值小于28继续循环
    004212FF  |.^\7C B5         \JL SHORT zt.004212B6                    ;  循环

      通过第二个循环计算出一组中间数,共16个(74 78 6C 65 75 67 75 68 70 6C 72 66 71 66 6C 62 )。

    00421301  |> \C645 84 5A    MOV BYTE PTR SS:[EBP-7C],5A              ; 5A加入中间数第17个
    00421305  |.  C645 85 59    MOV BYTE PTR SS:[EBP-7B],59       ; 59加入中间数第18个
    00421309  |.  C745 CC 18000>MOV DWORD PTR SS:[EBP-34],18
    00421310  |.  66:C745 EC 08>MOV WORD PTR SS:[EBP-14],8
    00421316  |.  837D CC 28    CMP DWORD PTR SS:[EBP-34],28
    0042131A  |.  7D 4A         JGE SHORT zt.00421366

      走出第二个循环来到第三个循环。

    0042131C  |> /8B55 CC       /MOV EDX,DWORD PTR SS:[EBP-34]           ;  [ebp-34]=18 计数器
    0042131F  |. |0FBE8415 5CFF>|MOVSX EAX,BYTE PTR SS:[EBP+EDX-A4]      ;  中间数第一位入EAX=74(逐位取数)
    00421327  |. |C1E0 04       |SHL EAX,4                               ;  逻辑左移4位
    0042132A  |. |8B55 CC       |MOV EDX,DWORD PTR SS:[EBP-34]
    0042132D  |. |0FBE8C15 5DFF>|MOVSX ECX,BYTE PTR SS:[EBP+EDX-A3]      ;  中间数第2位入ECX=78(逐位取数)
    00421335  |. |D1F9          |SAR ECX,1                               ;  算术右移1位
    00421337  |. |33C1          |XOR EAX,ECX                             ;  EAX=77C
    00421339  |. |50            |PUSH EAX                                
    0042133A  |. |E8 59000000   |CALL zt.00421398                        
    0042133F  |. |59            |POP ECX
    00421340  |. |B9 1A000000   |MOV ECX,1A
    00421345  |. |99            |CDQ
    00421346  |. |F7F9          |IDIV ECX                                ;  EAX=49 EDX=12
    00421348  |. |83C2 41       |ADD EDX,41                              ;  EDX=12+41=53
    0042134B  |. |8B45 CC       |MOV EAX,DWORD PTR SS:[EBP-34]
    0042134E  |. |0FBE4405 A0   |MOVSX EAX,BYTE PTR SS:[EBP+EAX-60]      ;  取第25位假码(逐位比较注册码)
    00421353  |. |3BD0          |CMP EDX,EAX
    00421355     |74 06         JE SHORT zt.0042135D
    00421357  |. |C645 DB 00    |MOV BYTE PTR SS:[EBP-25],0
    0042135B  |. |EB 09         |JMP SHORT zt.00421366
    0042135D  |> |FF45 CC       |INC DWORD PTR SS:[EBP-34]
    00421360  |. |837D CC 28    |CMP DWORD PTR SS:[EBP-34],28
    00421364  |.^\7C B6         \JL SHORT zt.0042131C          ; [ebp-34]小于28继续循环

     通过第三个循环计算出44位注册码中的16个数(53 59 4B 45 54 59 55 45 41 52 52 4D 48 4B 4A 50),第25位到第40位。

    00421366  |> \0FBE55 AA     MOVSX EDX,BYTE PTR SS:[EBP-56]           ;  取假码11位入EDX
    0042136A  |.  83FA 59       CMP EDX,59                               ;  注册码第11位=59
    0042136D      74 04         JE SHORT zt.00421373
    0042136F  |.  C645 DB 00    MOV BYTE PTR SS:[EBP-25],0
    00421373  |>  8A45 DB       MOV AL,BYTE PTR SS:[EBP-25]
    00421376  |.  50            PUSH EAX
    00421377  |.  FF4D F8       DEC DWORD PTR SS:[EBP-8]
    0042137A  |.  8D45 08       LEA EAX,DWORD PTR SS:[EBP+8]             ;  取假码地址入EAX
    0042137D  |.  BA 02000000   MOV EDX,2
    00421382  |.  E8 ED240D00   CALL zt.004F3874
    00421387  |.  58            POP EAX
    00421388  |.  8B55 DC       MOV EDX,DWORD PTR SS:[EBP-24]
    0042138B  |.  64:8915 00000>MOV DWORD PTR FS:[0],EDX
    00421392  |>  5F            POP EDI
    00421393  |.  5E            POP ESI
    00421394  |.  8BE5          MOV ESP,EBP
    00421396  |.  5D            POP EBP
    00421397  \.  C3            RETN                                     ; 返回到 004229CC

    走完 004229C7处 CALL zt.004210F0  返回到下面:

    004229C7  |.  E8 24E7FFFF   CALL zt.004210F0                        
    004229CC  |.  59            POP ECX                 ; 返回到此
    004229CD  |.  8B0D FCAE5100 MOV ECX,DWORD PTR DS:[51AEFC]            
    004229D3  |.  8B11          MOV EDX,DWORD PTR DS:[ECX]
    004229D5  |.  8882 E4030000 MOV BYTE PTR DS:[EDX+3E4],AL
       --------------中间省略------------------
    00422A48  |.  E8 2BF7FDFF   CALL zt.00402178
    00422A4D  |.  0FBE50 17     MOVSX EDX,BYTE PTR DS:[EAX+17]           ; 取假码第24位入EDX
    00422A51  |.  83FA 30       CMP EDX,30
    00422A54  |.  7C 16         JL SHORT zt.00422A6C
    00422A56  |.  8B45 A4       MOV EAX,DWORD PTR SS:[EBP-5C]
    00422A59  |.  05 20030000   ADD EAX,320
    00422A5E  |.  E8 15F7FDFF   CALL zt.00402178
    00422A63  |.  0FBE50 17     MOVSX EDX,BYTE PTR DS:[EAX+17]      ; 取假码第24位入EDX
    00422A67  |.  83FA 39       CMP EDX,39
    00422A6A      7E 0F         JLE SHORT zt.00422A7B

      注册码第24位是0-9(十进制)之间的任意数
     一路往下走就到了"register successfully!\nthank you."

    00422BDE  |.  FF51 FC       CALL NEAR DWORD PTR DS:[ECX-4]
    00422BE1  |.  66:C745 B8 5C>MOV WORD PTR SS:[EBP-48],5C
    00422BE7  |>  66:C745 B8 74>MOV WORD PTR SS:[EBP-48],74
    00422BED  |.  BA A8275100   MOV EDX,zt.005127A8                      ;  register successfully!\nthank you.

    三、追码总结

    1.用户名要3位以上,与注册码无关。
    2.注册码位数是44位(ASCII字符)。
    3.注册码第1位、第3到10位(参与不固定注册码运算)、第20到23位可以取任意字符。
    4.注册码第2位、第41到44位是固定字符:0 P 2 I 1
    5.注册码第24位是0-9(十进制)之间的任意字符
    6.第2位〔常数23(h)替换〕到10位注册码与常数组(1z1h+2a0n-0g8y*9a1n|)
      通过循环逐位运算得到注册码第12到19位注册码。
    7.第2位〔常数23(h)替换〕到19位注册码通过循环逐位运算得到一组中间数16个,
      再加上固定数5A 59, 中间数组共计有18个。
    8.18个中间数通过循环逐位运算得到第25位到第40位注册码。

    我的用户名:wzwgp
      注册码:107A31682BYEAMYPGQW56787SYKETYUEARRMHKJPP2I1

    注册信息保存在注册表:HKEY_USERS\S-1-5-21-1123561945-492894223-1060284298-1002\Software\XTZY\Pic2Ico
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-2-26 08:32
  • 签到天数: 19 天

    [LV.4]偶尔看看III

     楼主| 发表于 2006-6-7 11:15:53 | 显示全部楼层
    【破文标题】申请加入破文之三
    【破文作者】wzwgp
    【作者邮箱】[email protected]
    【破解软件】Flash ScreenSaver Maker 3.356  
    【下载地址】http://www.onlinedown.net/soft/8294.htm
    【破解平台】WinXP
    【软件类别】国外软件/共享版/桌面制作
    【保护方式】UPX、用户名、注册码
    【作者声明】菜鸟初学Crack,申请加入PYG,只是感兴趣,消遣业余时间,错误之处敬请诸位前辈不吝赐教。
    【破解工具】OllyDBD、PEiD
    【软件介绍】是一个非常容易使用的Flash屏幕保护制作工具,程序可以帮助你快速的将Flash动画和MP3,WAV,Mid等文件制作成专业的Windows屏幕保护程序,不需要专业的技巧,你只需要选择需要制作的Flash动画和MP3,WAV或者Mid音频文件就可以了!
    【破解过程】

    一、脱壳

    PEiD查壳:UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo

    1.用脱壳机。
    2.手脱:F8+ESP定律+F8 到达OEP,没有自效验。
     脱壳后PEiD查:Borland Delphi 6.0 - 7.0

    二、追码

    OD 载入程序查找字串参考,找到:“register succeed, enjoy!”双击来到:004B7BB8处,向上在004B791B处下断,F9运行程序。在注册框里填用户名:wzwgpa(大于5、小于等于40) 注册码:123-4567-891(固定格式) 点“OK” 

    004B791B    55              PUSH EBP                              ; 断下
    004B791C    68 3C7C4B00     PUSH tk.004B7C3C
    004B7921    64:FF30         PUSH DWORD PTR FS:[EAX]
    004B7924    64:8920         MOV DWORD PTR FS:[EAX],ESP
    004B7927    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]
    004B792A    8B80 2C030000   MOV EAX,DWORD PTR DS:[EAX+32C]
    004B7930    33D2            XOR EDX,EDX
    004B7932    E8 F1F0F7FF     CALL tk.00436A28
    004B7937    8B0D 301F4C00   MOV ECX,DWORD PTR DS:[4C1F30]         
    004B793D    8B09            MOV ECX,DWORD PTR DS:[ECX]            ; 程序名Flash ScreenSaver Maker入ECX
    004B793F    8B15 B41D4C00   MOV EDX,DWORD PTR DS:[4C1DB4]         
    004B7945    8B12            MOV EDX,DWORD PTR DS:[EDX]            ; 用户名地址入EDX
    004B7947    8D45 C4         LEA EAX,DWORD PTR SS:[EBP-3C]
    004B794A    E8 BDD1F4FF     CALL tk.00404B0C                      ; 连接用户名与程序名
    004B794F    8B45 C4         MOV EAX,DWORD PTR SS:[EBP-3C]         ; 连接后的地址存入EAX
    004B7952    8D55 C8         LEA EDX,DWORD PTR SS:[EBP-38]
    004B7955    E8 8AEFFFFF     CALL tk.004B68E4                      ; MD5加密连接后的用户名与程序名
    004B795A    8D45 C8         LEA EAX,DWORD PTR SS:[EBP-38]
    004B795D    8D55 F8         LEA EDX,DWORD PTR SS:[EBP-8]
    004B7960    E8 F3EFFFFF     CALL tk.004B6958                      ; 依据(0123456789abcdef)转换MD5加密结果
    004B7965    E9 AD000000     JMP tk.004B7A17                       ; 跳到4B7A17处(第1次向下跳)
    004B796A    33C0            XOR EAX,EAX                           ; 4B7AA7处回跳到此
    004B796C    55              PUSH EBP
    004B796D    68 B0794B00     PUSH tk.004B79B0
    004B7972    64:FF30         PUSH DWORD PTR FS:[EAX]
    004B7975    64:8920         MOV DWORD PTR FS:[EAX],ESP
    004B7978    8D45 C0         LEA EAX,DWORD PTR SS:[EBP-40]
    004B797B    8B55 F4         MOV EDX,DWORD PTR SS:[EBP-C]
    004B797E    8A12            MOV DL,BYTE PTR DS:[EDX]              ; 假码第4位入DL
    004B7980    E8 63D0F4FF     CALL tk.004049E8           ; 假码第4位不是0…9将出错
    004B7985    8B45 C0         MOV EAX,DWORD PTR SS:[EBP-40]
    004B7988    E8 5F15F5FF     CALL tk.00408EEC                      ; 取表(见后附表)
    004B798D    8D0440          LEA EAX,DWORD PTR DS:[EAX+EAX*2]      ; 假码第4位入EAX
    004B7990    8B15 241B4C00   MOV EDX,DWORD PTR DS:[4C1B24]         ; 表地址入EDX
    004B7996    8D34C2          LEA ESI,DWORD PTR DS:[EDX+EAX*8]      ; 根据假码第4位的值查表
    004B7999    8D7D D8         LEA EDI,DWORD PTR SS:[EBP-28]
    004B799C    B9 06000000     MOV ECX,6
    004B79A1    F3:A5           REP MOVS DWORD PTR ES:[EDI],DWORD PTR>; 查表得到的6个定位值串传送到堆栈
    004B79A3    33C0            XOR EAX,EAX
    004B79A5    5A              POP EDX
    004B79A6    59              POP ECX
    004B79A7    59              POP ECX
    004B79A8    64:8910         MOV DWORD PTR FS:[EAX],EDX
    004B79AB    E9 FC000000     JMP tk.004B7AAC                       ; 跳到4B7AAC处(第2次向下跳)
    004B79B0  ^ E9 F7C4F4FF     JMP tk.00403EAC
    004B79B5    6A 10           PUSH 10
    004B79B7    68 4C7C4B00     PUSH tk.004B7C4C                      ; error
    004B79BC    68 547C4B00     PUSH tk.004B7C54             ; register failed, please check user name and serial number.
    004B79C1    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]
    004B79C4    E8 7704FBFF     CALL tk.00467E40
    004B79C9    50              PUSH EAX
    004B79CA    E8 45FAF4FF     CALL <JMP.&USER32.MessageBoxA>
    004B79CF    A1 B41D4C00     MOV EAX,DWORD PTR DS:[4C1DB4]
    004B79D4    E8 27CEF4FF     CALL tk.00404800
    004B79D9    A1 3C1D4C00     MOV EAX,DWORD PTR DS:[4C1D3C]
    004B79DE    E8 1DCEF4FF     CALL tk.00404800
    004B79E3    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]
    004B79E6    8B80 FC020000   MOV EAX,DWORD PTR DS:[EAX+2FC]
    004B79EC    66:BE B5FF      MOV SI,0FFB5
    004B79F0    E8 D3C1F4FF     CALL tk.00403BC8
    004B79F5    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]
    004B79F8    8B80 FC020000   MOV EAX,DWORD PTR DS:[EAX+2FC]
    004B79FE    E8 F5E3F9FF     CALL tk.00455DF8
    004B7A03    E8 0CC8F4FF     CALL tk.00404214
    004B7A08    E9 07020000     JMP tk.004B7C14
    004B7A0D    E8 02C8F4FF     CALL tk.00404214
    004B7A12    E9 95000000     JMP tk.004B7AAC
    004B7A17    8D45 F4         LEA EAX,DWORD PTR SS:[EBP-C]          ; 4B7965处跳到此
    004B7A1A    BA 06000000     MOV EDX,6
    004B7A1F    E8 28D4F4FF     CALL tk.00404E4C
    004B7A24    8D45 F4         LEA EAX,DWORD PTR SS:[EBP-C]
    004B7A27    E8 ECD2F4FF     CALL tk.00404D18                     
    004B7A2C    8B15 3C1D4C00   MOV EDX,DWORD PTR DS:[4C1D3C]         
    004B7A32    8B12            MOV EDX,DWORD PTR DS:[EDX]            ; 假码地址入EDX
    004B7A34    8A52 03         MOV DL,BYTE PTR DS:[EDX+3]            ; 取4位假码
    004B7A37    8810            MOV BYTE PTR DS:[EAX],DL
    004B7A39    8D45 F4         LEA EAX,DWORD PTR SS:[EBP-C]
    004B7A3C    E8 D7D2F4FF     CALL tk.00404D18                     
    004B7A41    8B15 3C1D4C00   MOV EDX,DWORD PTR DS:[4C1D3C]         
    004B7A47    8B12            MOV EDX,DWORD PTR DS:[EDX]
    004B7A49    8A52 01         MOV DL,BYTE PTR DS:[EDX+1]            ; 取第2位假码
    004B7A4C    8850 01         MOV BYTE PTR DS:[EAX+1],DL
    004B7A4F    8D45 F4         LEA EAX,DWORD PTR SS:[EBP-C]
    004B7A52    E8 C1D2F4FF     CALL tk.00404D18
    004B7A57    8B15 3C1D4C00   MOV EDX,DWORD PTR DS:[4C1D3C]         
    004B7A5D    8B12            MOV EDX,DWORD PTR DS:[EDX]
    004B7A5F    8A52 02         MOV DL,BYTE PTR DS:[EDX+2]            ; 取假码第3位
    004B7A62    8850 02         MOV BYTE PTR DS:[EAX+2],DL
    004B7A65    8D45 F4         LEA EAX,DWORD PTR SS:[EBP-C]
    004B7A68    E8 ABD2F4FF     CALL tk.00404D18
    004B7A6D    8B15 3C1D4C00   MOV EDX,DWORD PTR DS:[4C1D3C]         
    004B7A73    8B12            MOV EDX,DWORD PTR DS:[EDX]
    004B7A75    8A52 05         MOV DL,BYTE PTR DS:[EDX+5]            ; 取假码第6位
    004B7A78    8850 03         MOV BYTE PTR DS:[EAX+3],DL
    004B7A7B    8D45 F4         LEA EAX,DWORD PTR SS:[EBP-C]
    004B7A7E    E8 95D2F4FF     CALL tk.00404D18
    004B7A83    8B15 3C1D4C00   MOV EDX,DWORD PTR DS:[4C1D3C]         
    004B7A89    8B12            MOV EDX,DWORD PTR DS:[EDX]
    004B7A8B    8A52 06         MOV DL,BYTE PTR DS:[EDX+6]            ; 取假码第7位
    004B7A8E    8850 04         MOV BYTE PTR DS:[EAX+4],DL
    004B7A91    8D45 F4         LEA EAX,DWORD PTR SS:[EBP-C]
    004B7A94    E8 7FD2F4FF     CALL tk.00404D18
    004B7A99    8B15 3C1D4C00   MOV EDX,DWORD PTR DS:[4C1D3C]         
    004B7A9F    8B12            MOV EDX,DWORD PTR DS:[EDX]
    004B7AA1    8A52 08         MOV DL,BYTE PTR DS:[EDX+8]            ; 取假码第9位
    004B7AA4    8850 05         MOV BYTE PTR DS:[EAX+5],DL
    004B7AA7  ^ E9 BEFEFFFF     JMP tk.004B796A                       ; 回跳到4B796A处
    004B7AAC    BA 02000000     MOV EDX,2                             ; 4B7A12处跳到此
    004B7AB1    8D45 DC         LEA EAX,DWORD PTR SS:[EBP-24]
    004B7AB4    8B4D F4         MOV ECX,DWORD PTR SS:[EBP-C]          ; [EBP-C]=取出的6个假码地址
    004B7AB7    8A4C11 FF       MOV CL,BYTE PTR DS:[ECX+EDX-1]        ; 逐个取选出的6个假码
    004B7ABB    8B18            MOV EBX,DWORD PTR DS:[EAX]            ; [EAX]=查表后的定位值
    004B7ABD    8B75 F8         MOV ESI,DWORD PTR SS:[EBP-8]          ; [EBP-8]=转换后的MD5加密结果
    004B7AC0    3A4C1E FF       CMP CL,BYTE PTR DS:[ESI+EBX-1]        ; 比较假码与定位值指向的MD5加密字符
    004B7AC4    75 53           JZ SHORT tk.004B7B19                  ; 相等跳到4B7B19处取下一个
    004B7AC6    6A 10           PUSH 10
    004B7AC8    68 4C7C4B00     PUSH tk.004B7C4C                      ; error
    004B7ACD    68 547C4B00     PUSH tk.004B7C54             ; register failed, please check user name and serial number.
    004B7AD2    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]
    004B7AD5    E8 6603FBFF     CALL tk.00467E40
    004B7ADA    50              PUSH EAX
    004B7ADB    E8 34F9F4FF     CALL <JMP.&USER32.MessageBoxA>
    004B7AE0    A1 B41D4C00     MOV EAX,DWORD PTR DS:[4C1DB4]
    004B7AE5    E8 16CDF4FF     CALL tk.00404800
    004B7AEA    A1 3C1D4C00     MOV EAX,DWORD PTR DS:[4C1D3C]
    004B7AEF    E8 0CCDF4FF     CALL tk.00404800
    004B7AF4    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]
    004B7AF7    8B80 FC020000   MOV EAX,DWORD PTR DS:[EAX+2FC]
    004B7AFD    66:BE B5FF      MOV SI,0FFB5
    004B7B01    E8 C2C0F4FF     CALL tk.00403BC8
    004B7B06    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]
    004B7B09    8B80 FC020000   MOV EAX,DWORD PTR DS:[EAX+2FC]
    004B7B0F    E8 E4E2F9FF     CALL tk.00455DF8
    004B7B14    E9 FB000000     JMP tk.004B7C14
    004B7B19    42              INC EDX                               ; 4B7AC4处跳来 EDX=计数器
    004B7B1A    83C0 04         ADD EAX,4
    004B7B1D    83FA 07         CMP EDX,7                             ; 取完选出的假码没有?
    004B7B20  ^ 75 92           JNZ SHORT tk.004B7AB4                 ; 未取完跳回去再取
    004B7B22    B2 01           MOV DL,1
    004B7B24    A1 A0AD4300     MOV EAX,DWORD PTR DS:[43ADA0]
    004B7B29    E8 7233F8FF     CALL tk.0043AEA0
    004B7B2E    8945 F0         MOV DWORD PTR SS:[EBP-10],EAX
    004B7B31    33C0            XOR EAX,EAX
    004B7B33    55              PUSH EBP
    004B7B34    68 AA7B4B00     PUSH tk.004B7BAA
    004B7B39    64:FF30         PUSH DWORD PTR FS:[EAX]
    004B7B3C    64:8920         MOV DWORD PTR FS:[EAX],ESP
    004B7B3F    BA 02000080     MOV EDX,80000002
    004B7B44    8B45 F0         MOV EAX,DWORD PTR SS:[EBP-10]
    004B7B47    E8 F433F8FF     CALL tk.0043AF40
    004B7B4C    8B15 6C1B4C00   MOV EDX,DWORD PTR DS:[4C1B6C]         
    004B7B52    8B12            MOV EDX,DWORD PTR DS:[EDX]
    004B7B54    B1 01           MOV CL,1
    004B7B56    8B45 F0         MOV EAX,DWORD PTR SS:[EBP-10]
    004B7B59    E8 2235F8FF     CALL tk.0043B080
    004B7B5E    84C0            TEST AL,AL
    004B7B60    74 32           JE SHORT tk.004B7B94
    004B7B62    8B0D B41D4C00   MOV ECX,DWORD PTR DS:[4C1DB4]         
    004B7B68    8B09            MOV ECX,DWORD PTR DS:[ECX]
    004B7B6A    BA 987C4B00     MOV EDX,tk.004B7C98                  
    004B7B6F    8B45 F0         MOV EAX,DWORD PTR SS:[EBP-10]
    004B7B72    E8 A536F8FF     CALL tk.0043B21C
    004B7B77    8B0D 3C1D4C00   MOV ECX,DWORD PTR DS:[4C1D3C]         
    004B7B7D    8B09            MOV ECX,DWORD PTR DS:[ECX]
    004B7B7F    BA AC7C4B00     MOV EDX,tk.004B7CAC                  
    004B7B84    8B45 F0         MOV EAX,DWORD PTR SS:[EBP-10]
    004B7B87    E8 9036F8FF     CALL tk.0043B21C
    004B7B8C    8B45 F0         MOV EAX,DWORD PTR SS:[EBP-10]
    004B7B8F    E8 7C33F8FF     CALL tk.0043AF10
    004B7B94    33C0            XOR EAX,EAX
    004B7B96    5A              POP EDX
    004B7B97    59              POP ECX
    004B7B98    59              POP ECX
    004B7B99    64:8910         MOV DWORD PTR FS:[EAX],EDX
    004B7B9C    68 B17B4B00     PUSH tk.004B7BB1
    004B7BA1    8D45 F0         LEA EAX,DWORD PTR SS:[EBP-10]
    004B7BA4    E8 B366F5FF     CALL tk.0040E25C
    004B7BA9    C3              RETN                                  ; 转到004B7BB1处
    004B7BAA  ^ E9 B1C5F4FF     JMP tk.00404160
    004B7BAF  ^ EB F0           JMP SHORT tk.004B7BA1
    004B7BB1    6A 40           PUSH 40
    004B7BB3    68 BC7C4B00     PUSH tk.004B7CBC                      ; succeed
    004B7BB8    68 C47C4B00     PUSH tk.004B7CC4                      ; register succeed, enjoy!

    定位表(想当然起的名称):

    根据注册码第4位数值得到指向MD5加密字符的定位值

    004B375B    8910            MOV DWORD PTR DS:[EAX],EDX   <-------0
    004B375D    C740 04 0500000>MOV DWORD PTR DS:[EAX+4],5      
    004B3764    C740 08 1F00000>MOV DWORD PTR DS:[EAX+8],1F
    004B376B    C740 0C 1500000>MOV DWORD PTR DS:[EAX+C],15
    004B3772    C740 10 1300000>MOV DWORD PTR DS:[EAX+10],13
    004B3779    C740 14 0300000>MOV DWORD PTR DS:[EAX+14],3
    004B3780    C740 18 0100000>MOV DWORD PTR DS:[EAX+18],1     <-------1
    004B3787    C740 1C 0F00000>MOV DWORD PTR DS:[EAX+1C],0F
    004B378E    C740 20 0300000>MOV DWORD PTR DS:[EAX+20],3
    004B3795    C740 24 0200000>MOV DWORD PTR DS:[EAX+24],2
    004B379C    C740 28 1300000>MOV DWORD PTR DS:[EAX+28],13
    004B37A3    C740 2C 1E00000>MOV DWORD PTR DS:[EAX+2C],1E
    004B37AA    C740 30 0200000>MOV DWORD PTR DS:[EAX+30],2     <-------2
    004B37B1    C740 34 1900000>MOV DWORD PTR DS:[EAX+34],19
    004B37B8    C740 38 0300000>MOV DWORD PTR DS:[EAX+38],3
    004B37BF    C740 3C 1500000>MOV DWORD PTR DS:[EAX+3C],15
    004B37C6    C740 40 0900000>MOV DWORD PTR DS:[EAX+40],9
    004B37CD    C740 44 0D00000>MOV DWORD PTR DS:[EAX+44],0D
    004B37D4    C740 48 0300000>MOV DWORD PTR DS:[EAX+48],3     <-------3
    004B37DB    C740 4C 1600000>MOV DWORD PTR DS:[EAX+4C],16
    004B37E2    C740 50 0E00000>MOV DWORD PTR DS:[EAX+50],0E
    004B37E9    C740 54 1200000>MOV DWORD PTR DS:[EAX+54],12
    004B37F0    C740 58 1300000>MOV DWORD PTR DS:[EAX+58],13
    004B37F7    C740 5C 1700000>MOV DWORD PTR DS:[EAX+5C],17
    004B37FE    C740 60 0400000>MOV DWORD PTR DS:[EAX+60],4     <-------4
    004B3805    C740 64 1000000>MOV DWORD PTR DS:[EAX+64],10
    004B380C    C740 68 0100000>MOV DWORD PTR DS:[EAX+68],1
    004B3813    C740 6C 1600000>MOV DWORD PTR DS:[EAX+6C],16
    004B381A    C740 70 0900000>MOV DWORD PTR DS:[EAX+70],9
    004B3821    C740 74 1D00000>MOV DWORD PTR DS:[EAX+74],1D
    004B3828    C740 78 0500000>MOV DWORD PTR DS:[EAX+78],5     <-------5
    004B382F    C740 7C 1E00000>MOV DWORD PTR DS:[EAX+7C],1E
    004B3836    C780 80000000 0>MOV DWORD PTR DS:[EAX+80],1
    004B3840    C780 84000000 1>MOV DWORD PTR DS:[EAX+84],17
    004B384A    C780 88000000 0>MOV DWORD PTR DS:[EAX+88],8
    004B3854    C780 8C000000 0>MOV DWORD PTR DS:[EAX+8C],6     
    004B385E    C780 90000000 0>MOV DWORD PTR DS:[EAX+90],6     <-------6
    004B3868    C780 94000000 0>MOV DWORD PTR DS:[EAX+94],7
    004B3872    C780 98000000 1>MOV DWORD PTR DS:[EAX+98],18
    004B387C    C780 9C000000 0>MOV DWORD PTR DS:[EAX+9C],0B
    004B3886    C780 A0000000 1>MOV DWORD PTR DS:[EAX+A0],1D
    004B3890    C780 A4000000 1>MOV DWORD PTR DS:[EAX+A4],15
    004B389A    C780 A8000000 0>MOV DWORD PTR DS:[EAX+A8],7     <-------7
    004B38A4    C780 AC000000 1>MOV DWORD PTR DS:[EAX+AC],18
    004B38AE    C780 B0000000 0>MOV DWORD PTR DS:[EAX+B0],3
    004B38B8    C780 B4000000 0>MOV DWORD PTR DS:[EAX+B4],2
    004B38C2    C780 B8000000 1>MOV DWORD PTR DS:[EAX+B8],10
    004B38CC    C780 BC000000 1>MOV DWORD PTR DS:[EAX+BC],17
    004B38D6    C780 C0000000 0>MOV DWORD PTR DS:[EAX+C0],8     <-------8
    004B38E0    C780 C4000000 0>MOV DWORD PTR DS:[EAX+C4],0F
    004B38EA    C780 C8000000 0>MOV DWORD PTR DS:[EAX+C8],0B
    004B38F4    C780 CC000000 1>MOV DWORD PTR DS:[EAX+CC],15
    004B38FE    C780 D0000000 0>MOV DWORD PTR DS:[EAX+D0],0C
    004B3908    C780 D4000000 1>MOV DWORD PTR DS:[EAX+D4],16
    004B3912    C780 D8000000 0>MOV DWORD PTR DS:[EAX+D8],9     <-------9
    004B391C    C780 DC000000 1>MOV DWORD PTR DS:[EAX+DC],16
    004B3926    C780 E0000000 0>MOV DWORD PTR DS:[EAX+E0],0B
    004B3930    C780 E4000000 2>MOV DWORD PTR DS:[EAX+E4],20
    004B393A    C780 E8000000 0>MOV DWORD PTR DS:[EAX+E8],7
    004B3944    C780 EC000000 0>MOV DWORD PTR DS:[EAX+EC],6


    三、追码分析

    1.用户名、注册码输入注册框时,非数字字符程序自动转成大写,用户名位数大于5、小于等于40,注册码:***-****-***(固定格式)
    2.用户名与程序名连接(含2个空格),ND5加密
     WZWGPA --> WZWGPAFlash ScreenSaver Maker --> MD5 --> ab88f3f20059220e0a05494a2cfb6877
    3.注册码第4位必须是0…9之间的数,根据注册码第4位数值查表得到指向MD5加密字符的定位值。
     1234567891 --> 4 --> 10、1、16、9、1D --> e、a、9、0、6
                16、1、22、9、29
    4.e、a、9、0、6 成为注册码中的第2、3、6、7、9位。


    我的用户名:wzwgpa
        注册码:*ea-4*90-*6* (*为任意数)
    注册信息保存在注册表:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\ShellSaver
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-2-26 08:32
  • 签到天数: 19 天

    [LV.4]偶尔看看III

     楼主| 发表于 2006-6-7 11:18:08 | 显示全部楼层
    其中第二、第三篇已在<初学者乐园>发过,不知算不算,如不算,继续努力.
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2024-12-1 11:04
  • 签到天数: 12 天

    [LV.3]偶尔看看II

    发表于 2006-6-20 07:19:53 | 显示全部楼层
    原帖由 wzwgp 于 2006-6-7 11:18 发表
    其中第二、第三篇已在<初学者乐园>发过,不知算不算,如不算,继续努力.



    再来2篇不同的就过(重新开帖)!
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2018-5-6 16:27
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    发表于 2006-6-20 20:18:39 | 显示全部楼层
    原帖由 飘云 于 2006-6-20 07:19 发表



    再来2篇不同的就过(重新开帖)!


    呵呵...预祝兄弟!

    猫今天也分析了一篇,不知道这个软件发布的时间是什么时候.可行的话,就发上来!

    HoHo~~~ :victory:
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表