APP资源网_中文资源在线官网_А天堂中文官网_中文在线APP资源下载网

V3.6 XP

英语八哥 V3.6

人气:1引自:中文资源APP下载网

lol成哥是谁?今天看到WE若风草莓微笑笑笑爆笑5排视频里面老听到里面老叫成哥成哥的,所以你知道lol成哥是谁?不知道小编告诉你

【软件限制】:功能限制 【作者声明】:初学Crack,只是感兴趣,没有其它目的。失误之处敬请诸位大侠赐教! 【破解工具】:TRW2000娃娃修改版、Ollydbg1.09、PEiD、W32Dasm 9.0白金版 —————————————————————————————————  【过    程】: 英语八哥.exe 无壳。 P-Code 的东东。 据说完整注册还需要一个DLL文件,我这里只是简单探讨一下其注册码的保护方式,我也没有那个DLL文件。 哎,非要碰上这个难缠的P-Code,用了我2天的宝贵时间来分析,许多的指令不知道其涵义,只能是猜测+调试了。 不明白P-Code的许多命令都要来两次,呵呵,我现在已然是晕头转向了。错误之处烦请方家指正! 点“注册”没有一点提示,于是用TRW的万能断点,简单就找到了比较的地方,但是找算法却花了20倍的时间! 我的水平很低,许多地方无法写清楚了。抱歉! 突然想起作者推崇的“黄金分割定律”,或许这个程序的算法也运用了“黄金分割比率”的某些方面呀。 向作者道歉了!佩服作者的编程功夫!真的奢望某某年之后我也能达到这个水平呀! 机器码:6004111345232619 试炼码:13572468 ————————————————————————————————— 一、调用MSVBVM60.rtcMidCharBstr取5KA089DJ的字符: 5KA089DJ应该是我硬盘的某个信息,依稀记得曾调试过的某个软件也是取这个参数。 66024808    E8 1E000000     CALL MSVBVM60.rtcMidBstr 6602480D    C9              LEAVE 6602480E    C2 0C00         RETN 0C 66024811    33C9            XOR ECX,ECX 66024813  ^ EB E2           JMP SHORT MSVBVM60.660247F7 66024815    50              PUSH EAX 66024816    66:C745 F0 0300 MOV WORD PTR SS:[EBP-10],3 6602481C    E8 7A010000     CALL MSVBVM60.6602499B 66024821    D1E0            SHL EAX,1 66024823    8945 F8         MOV DWORD PTR SS:[EBP-8],EAX 66024826    8D45 F0         LEA EAX,DWORD PTR SS:[EBP-10] 66024829  ^ EB D1           JMP SHORT MSVBVM60.660247FC 6602482B >  8B4424 08       MOV EAX,DWORD PTR SS:[ESP+8] 6602482F    53              PUSH EBX 66024830    56              PUSH ESI 66024831    57              PUSH EDI 66024832    8D78 FF         LEA EDI,DWORD PTR DS:[EAX-1] 66024835    85FF            TEST EDI,EDI 66024837    0F8C 91260200   JL MSVBVM60.66046ECE 6602483D    81FF FFFFFF7F   CMP EDI,7FFFFFFF 66024843    0F8F 85260200   JG MSVBVM60.66046ECE 66024849    8B4424 10       MOV EAX,DWORD PTR SS:[ESP+10] 6602484D    8BDF            MOV EBX,EDI 6602484F    85C0            TEST EAX,EAX 66024851    0F84 7E260200   JE MSVBVM60.66046ED5 66024857    8B70 FC         MOV ESI,DWORD PTR DS:[EAX-4] 6602485A    3BFE            CMP EDI,ESI 6602485C    0F87 7A260200   JA MSVBVM60.66046EDC 66024862    8B4C24 18       MOV ECX,DWORD PTR SS:[ESP+18] 66024866    66:8339 0A      CMP WORD PTR DS:[ECX],0A 6602486A    75 35           JNZ SHORT MSVBVM60.660248A1 6602486C    8179 08 0400028>CMP DWORD PTR DS:[ECX+8],80020004 66024873    75 2C           JNZ SHORT MSVBVM60.660248A1 66024875    83C8 FF         OR EAX,FFFFFFFF 66024878    66:85C0         TEST AX,AX 6602487B    74 28           JE SHORT MSVBVM60.660248A5 6602487D    2BF3            SUB ESI,EBX 6602487F    8BC6            MOV EAX,ESI 66024881    50              PUSH EAX 66024882    8B4424 14       MOV EAX,DWORD PTR SS:[ESP+14]                            ====>EAX=5KA089DJ 66024886    03D8            ADD EBX,EAX                            ====>EBX=依次取5KA089DJ字符的HEX值 66024888    53              PUSH EBX 66024889    FF15 EC190066   CALL DWORD PTR DS:[]; OLEAUT32.SysAllocStringByteLen 6602488F    8BF0            MOV ESI,EAX 66024891    85F6            TEST ESI,ESI 66024893    0F84 51260200   JE MSVBVM60.66046EEA 66024899    8BC6            MOV EAX,ESI 6602489B    5F              POP EDI 6602489C    5E              POP ESI 6602489D    5B              POP EBX 6602489E    C2 0C00         RETN 0C ————————————————————————————————— 比较取的字符是否是数字: 77A32A0E    F3:66:A7        REPE CMPS WORD PTR ES:[EDI],WORD PTR DS:>                            ====>比较所取的字符是否是数字。每个字符都比较2次,呵呵。 6610344F    E8 03CDFFFF     CALL MSVBVM60.__vbaBoolVarNull                            ====>晕,再比较一次 取硬盘参数5KA089DJ。如果是数字则直接保留;是字母则取其字符的HEX值的10进制值并加上其所在的位数。 5KA089DJ得出577680897582     呵呵,这个答案是猜测的,抱歉没能找到转换的地方。 ————————————————————————————————— 调用OLEAUT32.VarBstrCat 连接所得出的字符: 66025324 >  55               PUSH EBP 66025325    8BEC             MOV EBP,ESP 66025327    8D45 08          LEA EAX,DWORD PTR SS:[EBP+8] 6602532A    50               PUSH EAX 6602532B    FF75 08          PUSH DWORD PTR SS:[EBP+8] 6602532E    FF75 0C          PUSH DWORD PTR SS:[EBP+C] 66025331    FF15 6CFE1066    CALL DWORD PTR DS:[6610FE6C]; OLEAUT32.VarBstrCat 66025337    85C0             TEST EAX,EAX 66025339    0F8C D11A0200    JL MSVBVM60.66046E10 6602533F    8B45 08          MOV EAX,DWORD PTR SS:[EBP+8]                             ====>5KA089DJ最后得出 EAX=577680897582 66025342    5D               POP EBP 66025343    C2 0800          RETN 8 ————————————————————————————————— 下面再取577680897582: 66024882    8B4424 14       MOV EAX,DWORD PTR SS:[ESP+14]                            ====>EAX=577680897582 66024886    03D8            ADD EBX,EAX                       1、  ====>EBX=897582       从第7位取577680897582                       2、  ====>EBX=7680897582   从第3位取577680897582 66024888    53              PUSH EBX 66024889    FF15 EC190066   CALL DWORD PTR DS:[] ; OLEAUT32.SysAllocStringByteLen 6602488F    8BF0            MOV ESI,EAX 66024891    85F6            TEST ESI,ESI 66024893    0F84 51260200   JE MSVBVM60.66046EEA 66024899    8BC6            MOV EAX,ESI                       1、  ====>897   取897582的前3位                       2、  ====>768   取7680897582的前3位 6602489B    5F              POP EDI 6602489C    5E              POP ESI 6602489D    5B              POP EBX 6602489E    C2 0C00         RETN 0C 66024A2A    8B41 FC          MOV EAX,DWORD PTR DS:[ECX-4] 66024A2D    2BC2             SUB EAX,EDX 66024A2F    52               PUSH EDX 66024A30    03C1             ADD EAX,ECX 66024A32    50               PUSH EAX                       3、  ====>EAX=582                       4、  ====>EAX=768582 66024A33    FF15 EC190066    CALL DWORD PTR DS:[]           ; OLEAUT32.SysAllocStringByteLen 66024A39    8BF0             MOV ESI,EAX 66024A3B    85F6             TEST ESI,ESI 66024A3D    0F84 84240200    JE MSVBVM60.66046EC7 66024A43    8BC6             MOV EAX,ESI 66024A45    5E               POP ESI 66024A46    C2 0800          RETN 8 ————————————————————————————————— 对上面所取的字符进行连接: 66105616    FFD3             CALL EBX    ; MSVBVM60.__vbaVarAdd 66105618    57               PUSH EDI 66105619    33C0             XOR EAX,EAX 6610561B    8A46 02          MOV AL,BYTE PTR DS:[ESI+2] 6610561E    83C6 03          ADD ESI,3 66105621    FF2485 58EA0F66  JMP DWORD PTR DS:[EAX*4+660FEA58] 跟进MSVBVM60.__vbaVarAdd: 77A2F04D >/$  55             PUSH EBP 77A2F04E  |.  8BEC           MOV EBP,ESP 77A2F050  |.  53             PUSH EBX 77A2F051  |.  56             PUSH ESI 77A2F052  |.  8B75 08        MOV ESI,DWORD PTR SS:[EBP+8] 77A2F055  |.  57             PUSH EDI 77A2F056  |.  85F6           TEST ESI,ESI 77A2F058  |.  75 2E          JNZ SHORT OLEAUT32.77A2F088 77A2F05A  |.  33DB           XOR EBX,EBX 77A2F05C  |>  8B45 0C        MOV EAX,DWORD PTR SS:[EBP+C] 77A2F05F  |.  85C0           TEST EAX,EAX 77A2F061  |.  75 2A          JNZ SHORT OLEAUT32.77A2F08D 77A2F063  |.  2145 08        AND DWORD PTR SS:[EBP+8],EAX 77A2F066  |>  8B45 08        MOV EAX,DWORD PTR SS:[EBP+8] 77A2F069  |.  03C3           ADD EAX,EBX 77A2F06B  |.  50             PUSH EAX 77A2F06C  |.  6A 00          PUSH 0 77A2F06E  |.  E8 194EF8FF    CALL OLEAUT32.SysAllocStringByteLen 77A2F073  |.  8B4D 10        MOV ECX,DWORD PTR SS:[EBP+10] 77A2F076  |.  85C0           TEST EAX,EAX 77A2F078  |.  8901           MOV DWORD PTR DS:[ECX],EAX 77A2F07A  |.  75 19          JNZ SHORT OLEAUT32.77A2F095 77A2F07C  |.  B8 0E000780    MOV EAX,8007000E 77A2F081  |>  5F             POP EDI 77A2F082  |.  5E             POP ESI 77A2F083  |.  5B             POP EBX 77A2F084  |.  5D             POP EBP 77A2F085  |.  C2 0C00        RETN 0C 577680897582重新连接的结果为:577897768582  然后再分别取前6位、后6位运算。 ————————————————————————————————— 分别取768582、577897与程序给的654321相加: 77A2F546    E8 B420F8FF     CALL OLEAUT32.VariantChangeTypeEx 77A2F54B    85C0            TEST EAX,EAX 77A2F54D    8945 08         MOV DWORD PTR SS:[EBP+8],EAX 77A2F550  ^ 0F8C ADFDFFFF   JL OLEAUT32.77A2F303 77A2F556    DD45 E0         FLD QWORD PTR SS:[EBP-20]                            ====>SS:[EBP-20]=654321.0000000000    程序自给 77A2F559    DC45 F0         FADD QWORD PTR SS:[EBP-10]                         1、====>ST=654321.0000000000 + 768582.0000000000=1422903.0000000000000                         2、====>ST=654321.0000000000 + 577897.0000000000=701353.00000000000000 77A2F55C    DD55 F8         FST QWORD PTR SS:[EBP-8] 77A2F55F    8B4D FC         MOV ECX,DWORD PTR SS:[EBP-4] 77A2F562    B8 0000F07F     MOV EAX,7FF00000 77A2F567    23C8            AND ECX,EAX 77A2F569    6A 05           PUSH 5 77A2F56B    3BC8            CMP ECX,EAX 77A2F56D    5B              POP EBX 77A2F56E    0F85 E0000000   JNZ OLEAUT32.77A2F654 77A2F574    DDD8            FSTP ST 77A2F576    DBE2            FCLEX 77A2F578    C745 08 0A00028>MOV DWORD PTR SS:[EBP+8],8002000A 77A2F57F  ^ E9 9FFDFFFF     JMP OLEAUT32.77A2F323 ————————————————————————————————— 将1422903和701053转换成UNICODE格式: 661034CF    E8 FA15FEFF     CALL MSVBVM60.__vbaStrI4 661034D4    50              PUSH EAX                         1、====>EAX=1422903                         2、====>EAX=701353 661034D5    33C0            XOR EAX,EAX 661034D7    8A06            MOV AL,BYTE PTR DS:[ESI] 661034D9    46              INC ESI 661034DA    FF2485 58EA0F66 JMP DWORD PTR DS:[EAX*4+660FEA58] —————————————————————————————————  将1422903和701053 连接起来: 660FE996    E8 8969F2FF     CALL MSVBVM60.__vbaStrCat 660FE99B    50              PUSH EAX 660FE99C    33C0            XOR EAX,EAX 660FE99E    8A06            MOV AL,BYTE PTR DS:[ESI] 660FE9A0    46              INC ESI 660FE9A1    FF2485 58EA0F66 JMP DWORD PTR DS:[EAX*4+660FEA58] 66025324 >  55              PUSH EBP 66025325    8BEC            MOV EBP,ESP 66025327    8D45 08         LEA EAX,DWORD PTR SS:[EBP+8] 6602532A    50              PUSH EAX 6602532B    FF75 08         PUSH DWORD PTR SS:[EBP+8] 6602532E    FF75 0C         PUSH DWORD PTR SS:[EBP+C] 66025331    FF15 6CFE1066   CALL DWORD PTR DS:[6610FE6C]; OLEAUT32.VarBstrCat 66025337    85C0            TEST EAX,EAX 66025339    0F8C D11A0200   JL MSVBVM60.66046E10 6602533F    8B45 08         MOV EAX,DWORD PTR SS:[EBP+8]                            ====>EAX=1422903701053 66025342    5D              POP EBP 66025343    C2 0800         RETN 8 ————————————————————————————————— 取1422903701053的前8位14229037的16进制值: 66103650    E8 7150FEFF     CALL MSVBVM60.__vbaI4ErrVar 66103655    50              PUSH EAX                            ====>EAX=00D91E2D(H)=14229037(D) 66103656    33C0            XOR EAX,EAX 66103658    8A06            MOV AL,BYTE PTR DS:[ESI] 6610365A    46              INC ESI 6610365B    FF2485 58EA0F66 JMP DWORD PTR DS:[EAX*4+660FEA58] 00D91E2D就是运算注册码的核心参数!!! ————————————————————————————————— 用14229037生成软件上所显示的机器码: 呵呵,我实在是太累了,这一步无法详细跟踪了,最后再给个简单的求逆方式。^O^^O^ 66103675    E8 6315FEFF     CALL MSVBVM60.rtBstrFromErrVar 6610367A    50              PUSH EAX                            ====>EAX=140069162    很象我的机器码的某些位呀^O^^O^ 6610367B    33C0            XOR EAX,EAX 6610367D    8A06            MOV AL,BYTE PTR DS:[ESI] 6610367F    46              INC ESI 66103680    FF2485 58EA0F66 JMP DWORD PTR DS:[EAX*4+660FEA58] 660F99F0    57              PUSH EDI 660F99F1    56              PUSH ESI 660F99F2    8B73 FC         MOV ESI,DWORD PTR DS:[EBX-4] 660F99F5    D1EE            SHR ESI,1 660F99F7    56              PUSH ESI 660F99F8    6A 00           PUSH 0 660F99FA    FF15 E8190066   CALL DWORD PTR DS:[] ; OLEAUT32.SysAllocStringLen 660F9A00    8BF8            MOV EDI,EAX ........... ....... 660F9A27    41              INC ECX 660F9A28    4A              DEC EDX 660F9A29    66:8930         MOV WORD PTR DS:[EAX],SI 660F9A2C  ^ 75 F3           JNZ SHORT MSVBVM60.660F9A21 660F9A2E    8BC7            MOV EAX,EDI 660F9A30    5E              POP ESI 660F9A31    5F              POP EDI 660F9A32  ^ EB B8           JMP SHORT MSVBVM60.660F99EC ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ====>下面是填入试炼码后拦截的关键部分: —————————————————————————————————  分别取试炼码13572468和核心参数14229037。并转换成UNICODE格式: 6601B79B    FFD6            CALL ESI 6601B79D    837D 0C FF      CMP DWORD PTR SS:[EBP+C],-1 6601B7A1    8BF8            MOV EDI,EAX 6601B7A3    75 01           JNZ SHORT MSVBVM60.6601B7A6 6601B7A5    4F              DEC EDI 6601B7A6    57              PUSH EDI 6601B7A7    53              PUSH EBX 6601B7A8    FF15 E8190066   CALL DWORD PTR DS:[]; OLEAUT32.SysAllocStringLen 6601B7AE    3BC3            CMP EAX,EBX 6601B7B0    8945 FC         MOV DWORD PTR SS:,EAX                            ====>[EBP-4]=EAX=14229037      机器码生成的核心参数 6601B7B3    0F84 E9F90100   JE MSVBVM60.6603B1A2 6601B7B9    47              INC EDI 6601B7BA    57              PUSH EDI 6601B7BB    50              PUSH EAX 6601B7BC    FF75 0C         PUSH DWORD PTR SS:[EBP+C] 6601B7BF    FF75 08         PUSH DWORD PTR SS:[EBP+8]                            ====>[EBP+8]=13572468          试炼码 6601B7C2    53              PUSH EBX 6601B7C3    53              PUSH EBX 6601B7C4    FFD6            CALL ESI                            ====>将试炼码和14229037转换成UNICODE格式 6601B7C6    8B45 FC         MOV EAX,DWORD PTR SS:[EBP-4]                     1、    ====>EAX=1357248                     2、    ====>EAX=14229037   6601B7C9    5F              POP EDI 6601B7CA    5E              POP ESI 6601B7CB    5B              POP EBX 6601B7CC    C9              LEAVE 6601B7CD    C2 0800         RETN 8 —————————————————————————————————  下面是调用 MSVBVM60.__vbaI4Str 取14229037的16进制值 66103597    E8 BB1FFEFF      CALL MSVBVM60.__vbaI4Str                             ====>取14229037的16进制值00D91E2D 6610359C    50               PUSH EAX                             ====>EAX=00D91E2D 6610359D    33C0             XOR EAX,EAX 6610359F    8A06             MOV AL,BYTE PTR DS:[ESI] 661035A1    46               INC ESI 661035A2    FF2485 58EA0F66  JMP DWORD PTR DS:[EAX*4+660FEA58] ————————————————————————————————— 下面是对00D91E2D进行简单的 除2 运算,取得商: 6610533B    59               POP ECX 6610533C    58               POP EAX 6610533D    99               CDQ 6610533E    F7F9             IDIV ECX                             ====>EAX=00D91E2D / 2=006C8F16(H)=7114518(D) 66105340    50               PUSH EAX 66105341    33C0             XOR EAX,EAX 66105343    8A06             MOV AL,BYTE PTR DS:[ESI] 66105345    46               INC ESI 66105346    FF2485 58EA0F66  JMP DWORD PTR DS:[EAX*4+660FEA58] —————————————————————————————————  下面是取商006C8F16的10进制值: 661034CF    E8 FA15FEFF      CALL MSVBVM60.__vbaStrI4 661034D4    50               PUSH EAX                             ====>EAX=7114518 661034D5    33C0             XOR EAX,EAX 661034D7    8A06             MOV AL,BYTE PTR DS:[ESI] 661034D9    46               INC ESI 661034DA    FF2485 58EA0F66  JMP DWORD PTR DS:[EAX*4+660FEA58] —————————————————————————————————  下面是调用 rtcStrReverse 命令将7114518倒序排列:^O^^O^ 660F9A00    8BF8             MOV EDI,EAX                             ====>EDI=EAX=7114518 660F9A02    85FF             TEST EDI,EDI 660F9A04    75 07            JNZ SHORT MSVBVM60.660F9A0D 660F9A06    6A 0E            PUSH 0E 660F9A08    E8 85BBF2FF      CALL MSVBVM60.66025592 660F9A0D    66:832477 00     AND WORD PTR DS:[EDI+ESI*2],0 660F9A12    8D0477           LEA EAX,DWORD PTR DS:[EDI+ESI*2] 660F9A15    8BD6             MOV EDX,ESI 660F9A17    4E               DEC ESI 660F9A18    85D2             TEST EDX,EDX 660F9A1A    8BCB             MOV ECX,EBX 660F9A1C    76 10            JBE SHORT MSVBVM60.660F9A2E 660F9A1E    8D56 01          LEA EDX,DWORD PTR DS:[ESI+1] 660F9A21    66:8B31          MOV SI,WORD PTR DS:[ECX] 660F9A24    48               DEC EAX 660F9A25    48               DEC EAX 660F9A26    41               INC ECX 660F9A27    41               INC ECX 660F9A28    4A               DEC EDX 660F9A29    66:8930          MOV WORD PTR DS:[EAX],SI 660F9A2C  ^ 75 F3            JNZ SHORT MSVBVM60.660F9A21 660F9A2E    8BC7             MOV EAX,EDI                             ====>EAX=8154117       倒序排列的结果!注意!! 660F9A30    5E               POP ESI 660F9A31    5F               POP EDI 660F9A32  ^ EB B8            JMP SHORT MSVBVM60.660F99EC —————————————————————————————————  下面是调用 MSVBVM60.__vbaLenBstr 命令取8154117的长度: 661071D4    E8 F2D6F1FF      CALL MSVBVM60.__vbaLenBstr 661071D9    50               PUSH EAX                             ====>EAX=7    以此长度取下面的试炼码进行比较! 661071DA    33C0             XOR EAX,EAX 661071DC    8A06             MOV AL,BYTE PTR DS:[ESI] 661071DE    46               INC ESI —————————————————————————————————  下面是调用 MSVBVM60.rtcLeftVar 命令取试炼码的前7位字符: 660248EE >  55               PUSH EBP 660248EF    8BEC             MOV EBP,ESP 660248F1    83EC 10          SUB ESP,10 660248F4    8B45 10          MOV EAX,DWORD PTR SS:[EBP+10] 660248F7    56               PUSH ESI 660248F8    03C0             ADD EAX,EAX 660248FA    57               PUSH EDI 660248FB    50               PUSH EAX 660248FC    8D45 F0          LEA EAX,DWORD PTR SS:[EBP-10] 660248FF    FF75 0C          PUSH DWORD PTR SS:[EBP+C] 66024902    50               PUSH EAX 66024903    E8 11000000      CALL MSVBVM60.rtcLeftVar 66024908    8BF0             MOV ESI,EAX 6602490A    8B45 08          MOV EAX,DWORD PTR SS:[EBP+8] 6602490D    8BF8             MOV EDI,EAX 6602490F    A5               MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI] 66024910    A5               MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI] 66024911    A5               MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI] 66024912    A5               MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI] 66024913    5F               POP EDI 66024914    5E               POP ESI 66024915    C9               LEAVE 66024916    C2 0C00          RETN 0C 66024919 >  55               PUSH EBP 6602491A    8BEC             MOV EBP,ESP 6602491C    83EC 10          SUB ESP,10 6602491F    56               PUSH ESI 66024920    57               PUSH EDI 66024921    FF35 B0FE1066    PUSH DWORD PTR DS:[6610FEB0] 66024927    FF15 AC100066    CALL DWORD PTR DS:[] 6602492D    8D70 50          LEA ESI,DWORD PTR DS:[EAX+50] 66024930    56               PUSH ESI 66024931    FF75 0C          PUSH DWORD PTR SS:[EBP+C] 66024934    E8 37000000      CALL MSVBVM60.66024970 66024939    83F8 FF          CMP EAX,-1 6602493C    0F84 52250200    JE MSVBVM60.66046E94 66024942    FF75 10          PUSH DWORD PTR SS:[EBP+10] 66024945    50               PUSH EAX                             ====>EAX=13572468           试炼码 66024946    E8 18FEFFFF      CALL MSVBVM60.rtcLeftBstr                             ====>取试炼码的前7位! 6602494B    66:833E 08       CMP WORD PTR DS:[ESI],8 6602494F    8945 F8          MOV DWORD PTR SS:[EBP-8],EAX                             ====>[EBP-8]=EAX=1357246    试炼码的前7位 66024952    66:C745 F0 0800  MOV WORD PTR SS:[EBP-10],8 66024958    0F84 24250200    JE MSVBVM60.66046E82 6602495E    8B45 08          MOV EAX,DWORD PTR SS:[EBP+8] 66024961    8D75 F0          LEA ESI,DWORD PTR SS:[EBP-10] 66024964    8BF8             MOV EDI,EAX 66024966    A5               MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI] 66024967    A5               MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI] 66024968    A5               MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI] 66024969    A5               MOVS DWORD PTR ES:[EDI],DWORD PTR DS:[ESI] 6602496A    5F               POP EDI 6602496B    5E               POP ESI 6602496C    C9               LEAVE 6602496D    C2 0C00          RETN 0C —————————————————————————————————  下面是调用 OLEAUT32.VarCmp 进行比较了:^O^^O^^O^^O^ 66100055    FF15 60FE1066    CALL DWORD PTR DS:[6610FE60] ; OLEAUT32.VarCmp 6610005B    8945 08          MOV DWORD PTR SS:[EBP+8],EAX 6610005E    8B75 08          MOV ESI,DWORD PTR SS:[EBP+8] 66100061    85F6             TEST ESI,ESI 66100063    0F8C E9780000    JL MSVBVM60.66107952                             ====>不跳则OVER!     呵呵,可惜无法爆破了。 66100069    8D46 FF          LEA EAX,DWORD PTR DS:[ESI-1] 6610006C    5F               POP EDI 6610006D    5E               POP ESI 6610006E    5B               POP EBX 6610006F    C9               LEAVE 66100070    C2 0C00          RETN 0C 跟进OLEAUT32.VarCmp: 77A329D3  |.  8B75 08        MOV ESI,DWORD PTR SS:[EBP+8]                             ====>ESI=1357246            试炼码的前7位! 77A329D6  |.  57             PUSH EDI 77A329D7  |.  85F6           TEST ESI,ESI 77A329D9  |.  75 4C          JNZ SHORT OLEAUT32.77A32A27 77A329DB  |.  2175 FC        AND DWORD PTR SS:[EBP-4],ESI 77A329DE  |>  8B4D 0C        MOV ECX,DWORD PTR SS:[EBP+C]                             ====>ECX=8154117    呵呵,这就是我的注册码了!      77A329E1  |.  85C9           TEST ECX,ECX 77A329E3  |.  75 4A          JNZ SHORT OLEAUT32.77A32A2F 77A329E5  |.  33DB           XOR EBX,EBX 77A329E7  |>  395D FC        CMP DWORD PTR SS:[EBP-4],EBX 77A329EA  |.  8B55 FC        MOV EDX,DWORD PTR SS:[EBP-4] 77A329ED  |.  72 02          JB SHORT OLEAUT32.77A329F1 77A329EF  |.  8BD3           MOV EDX,EBX 77A329F1  |>  8B45 10        MOV EAX,DWORD PTR SS:[EBP+10] 77A329F4  |.  85C0           TEST EAX,EAX 77A329F6  |.  75 5B          JNZ SHORT OLEAUT32.77A32A53 77A329F8  |.  85D2           TEST EDX,EDX 77A329FA  |.  74 60          JE SHORT OLEAUT32.77A32A5C 77A329FC  |.  8BC2           MOV EAX,EDX 77A329FE  |.  D1E8           SHR EAX,1 77A32A00  |.  8945 10        MOV DWORD PTR SS:[EBP+10],EAX 77A32A03  |.  8B7D 0C        MOV EDI,DWORD PTR SS:[EBP+C] 77A32A06  |.  8B75 08        MOV ESI,DWORD PTR SS:[EBP+8] 77A32A09  |.  8B4D 10        MOV ECX,DWORD PTR SS:[EBP+10] 77A32A0C  |.  33C0           XOR EAX,EAX 77A32A0E  |.  F3:66:A7       REPE CMPS WORD PTR ES:[EDI],WORD PTR DS:[ESI]                             ====>逐位比较!有一个不同就OVER了! 77A32A11  |.  74 05          JE SHORT OLEAUT32.77A32A18                             ====>不跳则OVER! 77A32A13  |.  1BC0           SBB EAX,EAX 77A32A15  |.  83D8 FF        SBB EAX,-1 77A32A18  |>  85C0           TEST EAX,EAX 77A32A1A  |.  7F 45          JG SHORT OLEAUT32.77A32A61 77A32A1C  |.  7D 16          JGE SHORT OLEAUT32.77A32A34 77A32A1E  |.  33C0           XOR EAX,EAX 77A32A20  |>  5F             POP EDI 77A32A21  |.  5E             POP ESI 77A32A22  |.  5B             POP EBX 77A32A23  |.  C9             LEAVE 77A32A24  |.  C2 1000        RETN 10 ————————————————————————————————— 【算 法  总 结】: 这应该是我跟踪过的最麻烦的P-Code程序了。 程序首先取我的硬盘某个参数5KA089DJ生成运算注册码的核心参数14229037,再用14229037生成显示出来的机器码。 呵呵,我学习 SIMONYAN 大侠的教材简单猜测一下过程,感谢 SIMONYAN 大侠! 1、我的机器码是6004111345232619  取机器码的前5位60041 和后4位 2619 2、分别倒序排列:60041->14006   2619->9162 3、将这2部分连接起来:140069162 4、140069162-125840125=14229037 (125840125应该是固定参数)这样就得出了我上面的核心参数了。 5、14229037 / 2=7114518  (取商)    6、7114518 倒序排列:8154117      这个就是我的注册码了! 当然,这个求逆过程有些是我的猜测,并不一定是完全正确的。 以前有人说过其注册码是10位的,但是我分析的这个3.6版却没有这个限制,或许程序还有其它的暗桩。 限于我的水平太低,只能分析到这一步了,欢迎老师们指教!^O^^O^^O^^O^ ————————————————————————————————— 【注册信息保存】: REGEDIT4 [HKEY_CURRENT_USER\Software\VB and VBA Program Settings\bogo\enbogo] englishbogo"="7114518" —————————————————————————————————  【整        理】: 机器码:6004111345232619 注册码:8154117 —————————————————————————————————

专题文集:破解文章 windows
引用标题:《V3.6 XP》
来源地址:https://www.xjanfang.cn/news/tpart-21868.html