首页
社区
课程
招聘
[旧帖] [求助]keymake使用的几点困惑 0.00雪花
发表于: 2007-11-3 20:39 5070

[旧帖] [求助]keymake使用的几点困惑 0.00雪花

2007-11-3 20:39
5070
调试某软件,已经得到注册码,计算部分也已查明。由于不懂汇编,算法看不懂。故想用keymake编制注册机。因初次使用keymake软件,

有些问题在说明中未提及,不知如何编制。问题有:
    1. 说明书没有介绍CALL调用,子程序中下面一句是否照抄?
0068EEB7  |.  64:A1 00000000     mov     eax, dword ptr fs:[0]
    2. 像下面这些ASCII字符串,该如何修改?
0068EF35  |.  68 3C76AF00        |push    00AF763C                            ;  ASCII "%02X"
00409DF8  |.  C745 0C 7021AB00   mov     dword ptr [ebp+C], 00AB2170          ;  ASCII "AuthCode"
    3. 下面动态调用子程序该如何处理?
0068EF1E  |.  FF52 04            call    dword ptr [edx+4]                    ;  zwcad.0068F760
0068EF3B  |.  FFD3               |call    ebx
    第一个在调试时可以按出现的地址找到0068EF1E子程序,但在keymake里这里如何连接不知道。第二行在循环里,ebx值是变化的,是否要

将所有子程序都要找出并加进来?
    4. 下面这行也不知如何处理:
00409FEF  |.  68 6021AB00        push    00AB2160                                        ; |format = "%X"
    总之,问题太多。现将算法部分附后,请大侠们帮我看看。一方面看如何改成keymake用的形式,另一方面,将算法公式分析出,我也可以

换用VB来编制注册机。谢谢!

00409F1A  |.  8D85 C4F5FFFF      lea     eax, dword ptr [ebp-A3C]                      ; eax=机器码
00409F20  |.  8D4D EC            lea     ecx, dword ptr [ebp-14]
00409F23  |.  50                 push    eax
00409F24  |.  E8 EBA45600        call    <jmp.&MFC42.#537_CString::CString>
00409F29  |.  8D45 E4            lea     eax, dword ptr [ebp-1C]
00409F2C  |.  6A 08              push    8
00409F2E  |.  50                 push    eax
00409F2F  |.  8D4D EC            lea     ecx, dword ptr [ebp-14]
00409F32  |.  8975 FC            mov     dword ptr [ebp-4], esi
00409F35  |.  E8 B8A55600        call    <jmp.&MFC42.#4129_CString::Left>
00409F3A  |.  6A 04              push    4
00409F3C  |.  8D45 E0            lea     eax, dword ptr [ebp-20]
00409F3F  |.  6A 08              push    8
00409F41  |.  50                 push    eax
00409F42  |.  8D4D EC            lea     ecx, dword ptr [ebp-14]
00409F45  |.  C645 FC 01         mov     byte ptr [ebp-4], 1
00409F49  |.  E8 9EA55600        call    <jmp.&MFC42.#4278_CString::Mid>
00409F4E  |.  8D85 C4F1FFFF      lea     eax, dword ptr [ebp-E3C]
00409F54  |.  C645 FC 02         mov     byte ptr [ebp-4], 2
00409F58  |.  50                 push    eax
00409F59  |.  FF75 E4            push    dword ptr [ebp-1C]
00409F5C  |.  FF75 10            push    dword ptr [ebp+10]
00409F5F  |.  E8 4C4F2800        call    0068EEB0
00409F64  |.  80A5 C8F1FFFF 00   and     byte ptr [ebp-E38], 0
00409F6B  |.  83C4 0C            add     esp, 0C
00409F6E  |.  8D85 C4F1FFFF      lea     eax, dword ptr [ebp-E3C]
00409F74  |.  8D4D E8            lea     ecx, dword ptr [ebp-18]
00409F77  |.  50                 push    eax
00409F78  |.  E8 97A45600        call    <jmp.&MFC42.#537_CString::CString>
00409F7D  |.  8D45 E0            lea     eax, dword ptr [ebp-20]
00409F80  |.  8D4D E8            lea     ecx, dword ptr [ebp-18]
00409F83  |.  50                 push    eax
00409F84  |.  C645 FC 03         mov     byte ptr [ebp-4], 3
00409F88  |.  E8 59A55600        call    <jmp.&MFC42.#939_CString::operator+=>
00409F8D  |.  8D85 C4F9FFFF      lea     eax, dword ptr [ebp-63C]
00409F93  |.  50                 push    eax
00409F94  |.  FF75 E8            push    dword ptr [ebp-18]
00409F97  |.  FF75 10            push    dword ptr [ebp+10]
00409F9A  |.  E8 114F2800        call    0068EEB0                                       ; 加密算法
00409F9F  |.  80A5 CCF9FFFF 00   and     byte ptr [ebp-634], 0
00409FA6  |.  83C4 0C            add     esp, 0C
00409FA9  |.  8D4D E8            lea     ecx, dword ptr [ebp-18]
00409FAC  |.  C645 FC 02         mov     byte ptr [ebp-4], 2
00409FB0  |.  E8 53A45600        call    <jmp.&MFC42.#800_CString::~CString>
00409FB5  |.  8D4D E0            lea     ecx, dword ptr [ebp-20]
00409FB8  |.  C645 FC 01         mov     byte ptr [ebp-4], 1
00409FBC  |.  E8 47A45600        call    <jmp.&MFC42.#800_CString::~CString>
00409FC1  |.  8065 FC 00         and     byte ptr [ebp-4], 0
00409FC5  |.  8D4D E4            lea     ecx, dword ptr [ebp-1C]
00409FC8  |.  E8 3BA45600        call    <jmp.&MFC42.#800_CString::~CString>
00409FCD  |.  834D FC FF         or      dword ptr [ebp-4], FFFFFFFF
00409FD1  |.  8D4D EC            lea     ecx, dword ptr [ebp-14]
00409FD4  |.  E8 2FA45600        call    <jmp.&MFC42.#800_CString::~CString>
00409FD9  |.  EB 47              jmp     short 0040A022
00409FDB  |>  A1 08C0B000        mov     eax, dword ptr [B0C008]
00409FE0  |.  3BC6               cmp     eax, esi
00409FE2  |.^ 0F84 34FEFFFF      je      00409E1C
00409FE8  |.  50                 push    eax                                             ; /<%X> => 0
00409FE9  |.  8D85 C4FEFFFF      lea     eax, dword ptr [ebp-13C]                        ; |
00409FEF  |.  68 6021AB00        push    00AB2160                                        ; |format = "%X"
00409FF4  |.  50                 push    eax                                             ; |s
00409FF5  |.  FF15 4C629C00      call    dword ptr [<&MSVCRT.sprintf>]                   ; \sprintf
00409FFB  |.  8D85 C4F9FFFF      lea     eax, dword ptr [ebp-63C]
0040A001  |.  80A5 CCFEFFFF 00   and     byte ptr [ebp-134], 0
0040A008  |.  50                 push    eax
0040A009  |.  8D85 C4FEFFFF      lea     eax, dword ptr [ebp-13C]
0040A00F  |.  50                 push    eax
0040A010  |.  FF75 10            push    dword ptr [ebp+10]
0040A013  |.  E8 984E2800        call    0068EEB0                                        ; 加密算法
0040A018  |.  83C4 18            add     esp, 18
0040A01B  |.  80A5 CCF9FFFF 00   and     byte ptr [ebp-634], 0
0040A022  |>  8B3D 20629C00      mov     edi, dword ptr [<&MSVCRT._strlwr>]              ;  msvcrt._strlwr
0040A028  |.  8D85 C4F9FFFF      lea     eax, dword ptr [ebp-63C]                        ; eax=注册码
------------------------------------------------------------------
0068EEB0  /$  6A FF              push    -1
0068EEB2  |.  68 00DE9A00        push    009ADE00                             ;  SE 处理程序安装
0068EEB7  |.  64:A1 00000000     mov     eax, dword ptr fs:[0]
0068EEBD  |.  50                 push    eax
0068EEBE  |.  64:8925 00000000   mov     dword ptr fs:[0], esp
0068EEC5  |.  83EC 18            sub     esp, 18
0068EEC8  |.  53                 push    ebx
0068EEC9  |.  55                 push    ebp
0068EECA  |.  56                 push    esi
0068EECB  |.  57                 push    edi
0068EECC  |.  6A 08              push    8
0068EECE  |.  C74424 20 18000000 mov     dword ptr [esp+20], 18
0068EED6  |.  C74424 1C ECB4A000 mov     dword ptr [esp+1C], 00A0B4EC
0068EEDE  |.  C74424 24 08000000 mov     dword ptr [esp+24], 8
0068EEE6  |.  E8 15542E00        call    <jmp.&MFC42.#823_operator new>
0068EEEB  |.  8BE8               mov     ebp, eax
0068EEED  |.  83C4 04            add     esp, 4
0068EEF0  |.  896C24 24          mov     dword ptr [esp+24], ebp
0068EEF4  |.  8B4424 38          mov     eax, dword ptr [esp+38]              ; eax=固定字符串24位
0068EEF8  |.  8D4C24 10          lea     ecx, dword ptr [esp+10]
0068EEFC  |.  50                 push    eax
0068EEFD  |.  33F6               xor     esi, esi
0068EEFF  |.  51                 push    ecx
0068EF00  |.  8D4C24 20          lea     ecx, dword ptr [esp+20]
0068EF04  |.  897424 38          mov     dword ptr [esp+38], esi
0068EF08  |.  E8 E3000000        call    0068EFF0
0068EF0D  |.  8B4C24 14          mov     ecx, dword ptr [esp+14]
0068EF11  |.  8B4424 3C          mov     eax, dword ptr [esp+3C]              ; eax=8位字符串
0068EF15  |.  55                 push    ebp
0068EF16  |.  50                 push    eax
0068EF17  |.  8B11               mov     edx, dword ptr [ecx]
0068EF19  |.  C64424 38 01       mov     byte ptr [esp+38], 1
0068EF1E  |.  FF52 04            call    dword ptr [edx+4]                    ;  zwcad.0068F760
0068EF21  |.  8B7C24 40          mov     edi, dword ptr [esp+40]
0068EF25  |.  8B1D 4C629C00      mov     ebx, dword ptr [<&MSVCRT.sprintf>]   ;  msvcrt.sprintf
0068EF2B  |>  33C9               /xor     ecx, ecx
0068EF2D  |.  8D5424 38          |lea     edx, dword ptr [esp+38]
0068EF31  |.  8A0C2E             |mov     cl, byte ptr [esi+ebp]
0068EF34  |.  51                 |push    ecx
0068EF35  |.  68 3C76AF00        |push    00AF763C                            ;  ASCII "%02X"
0068EF3A  |.  52                 |push    edx
0068EF3B  |.  FFD3               |call    ebx
0068EF3D  |.  8A4424 44          |mov     al, byte ptr [esp+44]
0068EF41  |.  8A4C24 45          |mov     cl, byte ptr [esp+45]
0068EF45  |.  83C4 0C            |add     esp, 0C
0068EF48  |.  8807               |mov     byte ptr [edi], al
0068EF4A  |.  884F 01            |mov     byte ptr [edi+1], cl
0068EF4D  |.  46                 |inc     esi
0068EF4E  |.  83C7 02            |add     edi, 2
0068EF51  |.  83FE 08            |cmp     esi, 8
0068EF54  |.^ 72 D5              \jb      short 0068EF2B
0068EF56  |.  8B5424 40          mov     edx, dword ptr [esp+40]
0068EF5A  |.  8A4424 10          mov     al, byte ptr [esp+10]
0068EF5E  |.  84C0               test    al, al
0068EF60  |.  C642 10 00         mov     byte ptr [edx+10], 0                 ; edx=16位字符串
0068EF64  |.  C64424 30 00       mov     byte ptr [esp+30], 0
0068EF69  |.  74 0E              je      short 0068EF79
0068EF6B  |.  8B4C24 14          mov     ecx, dword ptr [esp+14]
0068EF6F  |.  85C9               test    ecx, ecx
0068EF71  |.  74 06              je      short 0068EF79
0068EF73  |.  8B01               mov     eax, dword ptr [ecx]
0068EF75  |.  6A 01              push    1
0068EF77  |.  FF10               call    dword ptr [eax]                      ;  zwcad.0068F2A0
0068EF79  |>  8BD5               mov     edx, ebp
0068EF7B  |.  33C9               xor     ecx, ecx
0068EF7D  |.  55                 push    ebp                                  ; /block
0068EF7E  |.  890A               mov     dword ptr [edx], ecx                 ; |
0068EF80  |.  894A 04            mov     dword ptr [edx+4], ecx               ; |
0068EF83  |.  E8 66532E00        call    <jmp.&MFC42.#825_operator delete>    ; \free
0068EF88  |.  8B4C24 2C          mov     ecx, dword ptr [esp+2C]
0068EF8C  |.  83C4 04            add     esp, 4
0068EF8F  |.  B0 01              mov     al, 1
0068EF91  |.  64:890D 00000000   mov     dword ptr fs:[0], ecx
0068EF98  |.  5F                 pop     edi
0068EF99  |.  5E                 pop     esi
0068EF9A  |.  5D                 pop     ebp
0068EF9B  |.  5B                 pop     ebx
0068EF9C  |.  83C4 24            add     esp, 24
0068EF9F  \.  C3                 retn
--------------------------------------------------------------
0068EFF0  /$  6A FF                push    -1
0068EFF2  |.  68 39DE9A00          push    009ADE39                             ;  SE 处理程序安装
0068EFF7  |.  64:A1 00000000       mov     eax, dword ptr fs:[0]
0068EFFD  |.  50                   push    eax
0068EFFE  |.  64:8925 00000000     mov     dword ptr fs:[0], esp
0068F005  |.  51                   push    ecx
0068F006  |.  56                   push    esi
0068F007  |.  6A 20                push    20
0068F009  |.  C74424 08 00000000   mov     dword ptr [esp+8], 0
0068F011  |.  E8 EA522E00          call    <jmp.&MFC42.#823_operator new>
0068F016  |.  8BF0                 mov     esi, eax
0068F018  |.  83C4 04              add     esp, 4
0068F01B  |.  897424 04            mov     dword ptr [esp+4], esi
0068F01F  |.  85F6                 test    esi, esi
0068F021  |.  C74424 10 00000000   mov     dword ptr [esp+10], 0
0068F029  |.  74 72                je      short 0068F09D
0068F02B  |.  57                   push    edi
0068F02C  |.  C706 0CB5A000        mov     dword ptr [esi], 00A0B50C
0068F032  |.  6A 08                push    8
0068F034  |.  C64424 18 01         mov     byte ptr [esp+18], 1
0068F039  |.  C746 04 08000000     mov     dword ptr [esi+4], 8
0068F040  |.  E8 BB522E00          call    <jmp.&MFC42.#823_operator new>
0068F045  |.  8B7C24 24            mov     edi, dword ptr [esp+24]
0068F049  |.  8946 08              mov     dword ptr [esi+8], eax
0068F04C  |.  8BCF                 mov     ecx, edi
0068F04E  |.  83C4 04              add     esp, 4
0068F051  |.  8B11                 mov     edx, dword ptr [ecx]
0068F053  |.  8910                 mov     dword ptr [eax], edx
0068F055  |.  8B49 04              mov     ecx, dword ptr [ecx+4]
0068F058  |.  8948 04              mov     dword ptr [eax+4], ecx
0068F05B  |.  8D57 08              lea     edx, dword ptr [edi+8]
0068F05E  |.  6A 00                push    0                                    ; /Arg2 = 00000000
0068F060  |.  52                   push    edx                                  ; |Arg1
0068F061  |.  8D4E 0C              lea     ecx, dword ptr [esi+C]               ; |
0068F064  |.  C64424 1C 02         mov     byte ptr [esp+1C], 2                 ; |
0068F069  |.  E8 72020000          call    0068F2E0                             ; \zwcad.0068F2E0
0068F06E  |.  6A 08                push    8
0068F070  |.  C64424 18 03         mov     byte ptr [esp+18], 3
0068F075  |.  C746 18 08000000     mov     dword ptr [esi+18], 8
0068F07C  |.  E8 7F522E00          call    <jmp.&MFC42.#823_operator new>
0068F081  |.  83C4 04              add     esp, 4
0068F084  |.  83C7 10              add     edi, 10
0068F087  |.  8946 1C              mov     dword ptr [esi+1C], eax
0068F08A  |.  8B0F                 mov     ecx, dword ptr [edi]
0068F08C  |.  8908                 mov     dword ptr [eax], ecx
0068F08E  |.  8B57 04              mov     edx, dword ptr [edi+4]
0068F091  |.  5F                   pop     edi
0068F092  |.  8950 04              mov     dword ptr [eax+4], edx
0068F095  |.  C706 FCB4A000        mov     dword ptr [esi], 00A0B4FC
0068F09B  |.  EB 02                jmp     short 0068F09F
0068F09D  |>  33F6                 xor     esi, esi
0068F09F  |>  8B4424 18            mov     eax, dword ptr [esp+18]
0068F0A3  |.  85F6                 test    esi, esi
0068F0A5  |.  0F95C1               setne   cl
0068F0A8  |.  8808                 mov     byte ptr [eax], cl
0068F0AA  |.  8B4C24 08            mov     ecx, dword ptr [esp+8]
0068F0AE  |.  8970 04              mov     dword ptr [eax+4], esi
0068F0B1  |.  5E                   pop     esi
0068F0B2  |.  64:890D 00000000     mov     dword ptr fs:[0], ecx
0068F0B9  |.  83C4 10              add     esp, 10
0068F0BC  \.  C2 0800              retn    8
-----------------------------------------------------------------------
0068F2E0  /$  6A FF                push    -1
0068F2E2  |.  68 A3DE9A00          push    009ADEA3                             ;  SE 处理程序安装
0068F2E7  |.  64:A1 00000000       mov     eax, dword ptr fs:[0]
0068F2ED  |.  50                   push    eax
0068F2EE  |.  64:8925 00000000     mov     dword ptr fs:[0], esp
0068F2F5  |.  83EC 10              sub     esp, 10
0068F2F8  |.  53                   push    ebx
0068F2F9  |.  55                   push    ebp
0068F2FA  |.  8BE9                 mov     ebp, ecx
0068F2FC  |.  56                   push    esi
0068F2FD  |.  57                   push    edi
0068F2FE  |.  896C24 14            mov     dword ptr [esp+14], ebp
0068F302  |.  C745 00 0CB5A000     mov     dword ptr [ebp], 00A0B50C
0068F309  |.  68 80000000          push    80
0068F30E  |.  C74424 2C 00000000   mov     dword ptr [esp+2C], 0
0068F316  |.  C745 04 20000000     mov     dword ptr [ebp+4], 20
0068F31D  |.  E8 DE4F2E00          call    <jmp.&MFC42.#823_operator new>
0068F322  |.  8945 08              mov     dword ptr [ebp+8], eax
0068F325  |.  6A 78                push    78
0068F327  |.  C64424 30 01         mov     byte ptr [esp+30], 1
0068F32C  |.  C745 00 C4B5A000     mov     dword ptr [ebp], 00A0B5C4
0068F333  |.  E8 C84F2E00          call    <jmp.&MFC42.#823_operator new>
0068F338  |.  8BD8                 mov     ebx, eax
0068F33A  |.  BE 2CB5A000          mov     esi, 00A0B52C
0068F33F  |.  83C4 08              add     esp, 8
0068F342  |.  2BF3                 sub     esi, ebx
0068F344  |.  895C24 1C            mov     dword ptr [esp+1C], ebx
0068F348  |.  8D7B 70              lea     edi, dword ptr [ebx+70]
0068F34B  |.  8BCB                 mov     ecx, ebx
0068F34D  |.  897424 14            mov     dword ptr [esp+14], esi
0068F351  |.  C74424 10 38000000   mov     dword ptr [esp+10], 38
0068F359  |.  EB 04                jmp     short 0068F35F
0068F35B  |>  8B7424 14            /mov     esi, dword ptr [esp+14]
0068F35F  |>  33C0                  xor     eax, eax
0068F361  |.  8A040E               |mov     al, byte ptr [esi+ecx]
0068F364  |.  8B7424 30            |mov     esi, dword ptr [esp+30]
0068F368  |.  48                   |dec     eax
0068F369  |.  8BD0                 |mov     edx, eax
0068F36B  |.  83E0 07              |and     eax, 7
0068F36E  |.  C1FA 03              |sar     edx, 3
0068F371  |.  8A1432               |mov     dl, byte ptr [edx+esi]
0068F374  |.  841485 A4B5A000      |test    byte ptr [eax*4+A0B5A4], dl
0068F37B  |.  0F95C0               |setne   al
0068F37E  |.  8801                 |mov     byte ptr [ecx], al
0068F380  |.  8B4424 10            |mov     eax, dword ptr [esp+10]
0068F384  |.  41                   |inc     ecx
0068F385  |.  48                   |dec     eax
0068F386  |.  894424 10            |mov     dword ptr [esp+10], eax
0068F38A  |.^ 75 CF                \jnz     short 0068F35B
0068F38C  |.  C74424 30 00000000   mov     dword ptr [esp+30], 0
0068F394  |>  8BD7                 /mov     edx, edi
0068F396  |.  33C9                 |xor     ecx, ecx
0068F398  |.  890A                 |mov     dword ptr [edx], ecx
0068F39A  |.  894A 04              |mov     dword ptr [edx+4], ecx
0068F39D  |>  8B5424 30            |/mov     edx, dword ptr [esp+30]
0068F3A1  |.  33C0                 ||xor     eax, eax
0068F3A3  |.  8A82 64B5A000        ||mov     al, byte ptr [edx+A0B564]
0068F3A9  |.  33D2                 ||xor     edx, edx
0068F3AB  |.  03C1                 ||add     eax, ecx
0068F3AD  |.  83F9 1C              ||cmp     ecx, 1C
0068F3B0  |.  0F9DC2               ||setge   dl
0068F3B3  |.  4A                   ||dec     edx
0068F3B4  |.  8BF0                 ||mov     esi, eax
0068F3B6  |.  83E2 E4              ||and     edx, FFFFFFE4
0068F3B9  |.  83C2 38              ||add     edx, 38
0068F3BC  |.  3BC2                 ||cmp     eax, edx
0068F3BE  |.  7C 03                ||jl      short 0068F3C3
0068F3C0  |.  8D70 E4              ||lea     esi, dword ptr [eax-1C]
0068F3C3  |>  8A041E               ||mov     al, byte ptr [esi+ebx]
0068F3C6  |.  884419 38            ||mov     byte ptr [ecx+ebx+38], al
0068F3CA  |.  41                   ||inc     ecx
0068F3CB  |.  83F9 38              ||cmp     ecx, 38
0068F3CE  |.^ 7C CD                |\jl      short 0068F39D
0068F3D0  |.  33C9                 |xor     ecx, ecx
0068F3D2  |>  33D2                 |/xor     edx, edx
0068F3D4  |.  8A91 74B5A000        ||mov     dl, byte ptr [ecx+A0B574]
0068F3DA  |.  8A441A 37            ||mov     al, byte ptr [edx+ebx+37]
0068F3DE  |.  84C0                 ||test    al, al
0068F3E0  |.  74 2F                ||je      short 0068F411
0068F3E2  |.  B8 ABAAAA2A          ||mov     eax, 2AAAAAAB
0068F3E7  |.  BB 06000000          ||mov     ebx, 6
0068F3EC  |.  F7E9                 ||imul    ecx
0068F3EE  |.  8BC2                 ||mov     eax, edx
0068F3F0  |.  C1E8 1F              ||shr     eax, 1F
0068F3F3  |.  03D0                 ||add     edx, eax
0068F3F5  |.  8BC1                 ||mov     eax, ecx
0068F3F7  |.  8D343A               ||lea     esi, dword ptr [edx+edi]
0068F3FA  |.  99                   ||cdq
0068F3FB  |.  F7FB                 ||idiv    ebx
0068F3FD  |.  8A06                 ||mov     al, byte ptr [esi]
0068F3FF  |.  8B5C24 1C            ||mov     ebx, dword ptr [esp+1C]
0068F403  |.  8B1495 A4B5A000      ||mov     edx, dword ptr [edx*4+A0B5A4]
0068F40A  |.  C1FA 02              ||sar     edx, 2
0068F40D  |.  0AC2                 ||or      al, dl
0068F40F  |.  8806                 ||mov     byte ptr [esi], al
0068F411  |>  41                   ||inc     ecx
0068F412  |.  83F9 30              ||cmp     ecx, 30
0068F415  |.^ 7C BB                |\jl      short 0068F3D2
0068F417  |.  33C0                 |xor     eax, eax
0068F419  |.  8B7424 30            |mov     esi, dword ptr [esp+30]
0068F41D  |.  8A47 02              |mov     al, byte ptr [edi+2]
0068F420  |.  33C9                 |xor     ecx, ecx
0068F422  |.  8A27                 |mov     ah, byte ptr [edi]
0068F424  |.  8A4F 04              |mov     cl, byte ptr [edi+4]
0068F427  |.  C1E0 08              |shl     eax, 8
0068F42A  |.  0BC1                 |or      eax, ecx
0068F42C  |.  8B4D 08              |mov     ecx, dword ptr [ebp+8]
0068F42F  |.  33D2                 |xor     edx, edx
0068F431  |.  8A57 06              |mov     dl, byte ptr [edi+6]
0068F434  |.  C1E0 08              |shl     eax, 8
0068F437  |.  0BC2                 |or      eax, edx
0068F439  |.  33D2                 |xor     edx, edx
0068F43B  |.  8904F1               |mov     dword ptr [ecx+esi*8], eax
0068F43E  |.  8A77 01              |mov     dh, byte ptr [edi+1]
0068F441  |.  8A57 03              |mov     dl, byte ptr [edi+3]
0068F444  |.  33C0                 |xor     eax, eax
0068F446  |.  8A47 05              |mov     al, byte ptr [edi+5]
0068F449  |.  33C9                 |xor     ecx, ecx
0068F44B  |.  8A4F 07              |mov     cl, byte ptr [edi+7]
0068F44E  |.  C1E2 08              |shl     edx, 8
0068F451  |.  0BD0                 |or      edx, eax
0068F453  |.  8B45 08              |mov     eax, dword ptr [ebp+8]
0068F456  |.  C1E2 08              |shl     edx, 8
0068F459  |.  0BD1                 |or      edx, ecx
0068F45B  |.  8954F0 04            |mov     dword ptr [eax+esi*8+4], edx
0068F45F  |.  46                   |inc     esi
0068F460  |.  83FE 10              |cmp     esi, 10
0068F463  |.  897424 30            |mov     dword ptr [esp+30], esi
0068F467  |.^ 0F8C 27FFFFFF        \jl      0068F394
0068F46D  |.  837C24 34 01         cmp     dword ptr [esp+34], 1
0068F472  |.  75 36                jnz     short 0068F4AA
0068F474  |.  33C9                 xor     ecx, ecx
0068F476  |.  B8 7C000000          mov     eax, 7C
0068F47B  |>  8B55 08              /mov     edx, dword ptr [ebp+8]
0068F47E  |.  83E8 08              |sub     eax, 8
0068F481  |.  8B7C10 04            |mov     edi, dword ptr [eax+edx+4]
0068F485  |.  8B3411               |mov     esi, dword ptr [ecx+edx]
0068F488  |.  893C11               |mov     dword ptr [ecx+edx], edi
0068F48B  |.  897410 04            |mov     dword ptr [eax+edx+4], esi
0068F48F  |.  8B55 08              |mov     edx, dword ptr [ebp+8]
0068F492  |.  83C1 08              |add     ecx, 8
0068F495  |.  83F8 3C              |cmp     eax, 3C
0068F498  |.  8B7C10 08            |mov     edi, dword ptr [eax+edx+8]
0068F49C  |.  8B7411 FC            |mov     esi, dword ptr [ecx+edx-4]
0068F4A0  |.  897C11 FC            |mov     dword ptr [ecx+edx-4], edi
0068F4A4  |.  897410 08            |mov     dword ptr [eax+edx+8], esi
0068F4A8  |.^ 7F D1                \jg      short 0068F47B
0068F4AA  |>  B9 1E000000          mov     ecx, 1E
0068F4AF  |.  33C0                 xor     eax, eax
0068F4B1  |.  8BFB                 mov     edi, ebx
0068F4B3  |.  53                   push    ebx                                  ; /block
0068F4B4  |.  F3:AB                rep     stos dword ptr es:[edi]              ; |
0068F4B6  |.  E8 334E2E00          call    <jmp.&MFC42.#825_operator delete>    ; \free
0068F4BB  |.  8B4C24 24            mov     ecx, dword ptr [esp+24]
0068F4BF  |.  83C4 04              add     esp, 4
0068F4C2  |.  8BC5                 mov     eax, ebp
0068F4C4  |.  64:890D 00000000     mov     dword ptr fs:[0], ecx
0068F4CB  |.  5F                   pop     edi
0068F4CC  |.  5E                   pop     esi
0068F4CD  |.  5D                   pop     ebp
0068F4CE  |.  5B                   pop     ebx
0068F4CF  |.  83C4 1C              add     esp, 1C
0068F4D2  \.  C2 0800              retn    8
-------------------------------------------------------------
0068F2A0   .  56               push    esi
0068F2A1   .  8BF1             mov     esi, ecx
0068F2A3   .  E8 68FEFFFF      call    0068F110
0068F2A8   .  F64424 08 01     test    byte ptr [esp+8], 1
0068F2AD   .  74 09            je      short 0068F2B8
0068F2AF   .  56               push    esi                                 ; /block
0068F2B0   .  E8 39502E00      call    <jmp.&MFC42.#825_operator delete>   ; \free
0068F2B5   .  83C4 04          add     esp, 4
0068F2B8   >  8BC6             mov     eax, esi
0068F2BA   .  5E               pop     esi
0068F2BB   .  C2 0400          retn    4
------------------------------------------------------------
0068F110  /$  56                 push    esi
0068F111  |.  8BF1               mov     esi, ecx
0068F113  |.  57                 push    edi
0068F114  |.  33C0               xor     eax, eax
0068F116  |.  8B4E 18            mov     ecx, dword ptr [esi+18]
0068F119  |.  8B7E 1C            mov     edi, dword ptr [esi+1C]
0068F11C  |.  8BD1               mov     edx, ecx
0068F11E  |.  C1E9 02            shr     ecx, 2
0068F121  |.  F3:AB              rep     stos dword ptr es:[edi]
0068F123  |.  8BCA               mov     ecx, edx
0068F125  |.  83E1 03            and     ecx, 3
0068F128  |.  F3:AA              rep     stos byte ptr es:[edi]
0068F12A  |.  8B46 1C            mov     eax, dword ptr [esi+1C]
0068F12D  |.  50                 push    eax                                   ; /block
0068F12E  |.  E8 BB512E00        call    <jmp.&MFC42.#825_operator delete>     ; \free
0068F133  |.  8B4E 10            mov     ecx, dword ptr [esi+10]
0068F136  |.  8B7E 14            mov     edi, dword ptr [esi+14]
0068F139  |.  C1E1 02            shl     ecx, 2
0068F13C  |.  8BD1               mov     edx, ecx
0068F13E  |.  33C0               xor     eax, eax
0068F140  |.  C1E9 02            shr     ecx, 2
0068F143  |.  F3:AB              rep     stos dword ptr es:[edi]
0068F145  |.  8BCA               mov     ecx, edx
0068F147  |.  83E1 03            and     ecx, 3
0068F14A  |.  F3:AA              rep     stos byte ptr es:[edi]
0068F14C  |.  8B46 14            mov     eax, dword ptr [esi+14]
0068F14F  |.  50                 push    eax                                   ; /block
0068F150  |.  E8 99512E00        call    <jmp.&MFC42.#825_operator delete>     ; \free
0068F155  |.  C746 0C 0CB5A000   mov     dword ptr [esi+C], 00A0B50C
0068F15C  |.  8B4E 04            mov     ecx, dword ptr [esi+4]
0068F15F  |.  8B7E 08            mov     edi, dword ptr [esi+8]
0068F162  |.  8BD1               mov     edx, ecx
0068F164  |.  33C0               xor     eax, eax
0068F166  |.  C1E9 02            shr     ecx, 2
0068F169  |.  F3:AB              rep     stos dword ptr es:[edi]
0068F16B  |.  8BCA               mov     ecx, edx
0068F16D  |.  83E1 03            and     ecx, 3
0068F170  |.  F3:AA              rep     stos byte ptr es:[edi]
0068F172  |.  8B46 08            mov     eax, dword ptr [esi+8]
0068F175  |.  50                 push    eax                                   ; /block
0068F176  |.  E8 73512E00        call    <jmp.&MFC42.#825_operator delete>     ; \free
0068F17B  |.  83C4 0C            add     esp, 0C
0068F17E  |.  C706 0CB5A000      mov     dword ptr [esi], 00A0B50C
0068F184  |.  5F                 pop     edi
0068F185  |.  5E                 pop     esi
0068F186  \.  C3                 retn
------------------------------------------------------------------

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 207
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
部分算法已经分析出来了:
用12位机器码的前八位与24位固定字符进行某种加密计算,得到16位字符。取其前四位再附加机器码的最后四位组成新的八位字符再与24位固定字符进行同一加密计算,得到新的16位字符。取其前八位,即为注册码。但是看不懂这种加密算法,也就是用八位字符和24位字符计算,得到16位字符的那段程序(0068EEB0——0068EF9F)。主要计算部分摘抄如下:
0068EEF4  |.  8B4424 38          mov     eax, dword ptr [esp+38]              ; eax=固定字符串24位
0068EEF8  |.  8D4C24 10          lea     ecx, dword ptr [esp+10]
0068EEFC  |.  50                 push    eax
0068EEFD  |.  33F6               xor     esi, esi
0068EEFF  |.  51                 push    ecx
0068EF00  |.  8D4C24 20          lea     ecx, dword ptr [esp+20]
0068EF04  |.  897424 38          mov     dword ptr [esp+38], esi
0068EF08  |.  E8 E3000000        call    0068EFF0
0068EF0D  |.  8B4C24 14          mov     ecx, dword ptr [esp+14]
0068EF11  |.  8B4424 3C          mov     eax, dword ptr [esp+3C]              ; eax=8位字符串
0068EF15  |.  55                 push    ebp
0068EF16  |.  50                 push    eax
0068EF17  |.  8B11               mov     edx, dword ptr [ecx]
0068EF19  |.  C64424 38 01       mov     byte ptr [esp+38], 1
0068EF1E  |.  FF52 04            call    dword ptr [edx+4]                    ;  zwcad.0068F760
0068EF21  |.  8B7C24 40          mov     edi, dword ptr [esp+40]
0068EF25  |.  8B1D 4C629C00      mov     ebx, dword ptr [<&MSVCRT.sprintf>]   ;  msvcrt.sprintf
0068EF2B  |>  33C9               /xor     ecx, ecx
0068EF2D  |.  8D5424 38          |lea     edx, dword ptr [esp+38]
0068EF31  |.  8A0C2E             |mov     cl, byte ptr [esi+ebp]
0068EF34  |.  51                 |push    ecx
0068EF35  |.  68 3C76AF00        |push    00AF763C                            ;  ASCII "%02X"
0068EF3A  |.  52                 |push    edx
0068EF3B  |.  FFD3               |call    ebx
0068EF3D  |.  8A4424 44          |mov     al, byte ptr [esp+44]
0068EF41  |.  8A4C24 45          |mov     cl, byte ptr [esp+45]
0068EF45  |.  83C4 0C            |add     esp, 0C
0068EF48  |.  8807               |mov     byte ptr [edi], al
0068EF4A  |.  884F 01            |mov     byte ptr [edi+1], cl
0068EF4D  |.  46                 |inc     esi
0068EF4E  |.  83C7 02            |add     edi, 2
0068EF51  |.  83FE 08            |cmp     esi, 8
0068EF54  |.^ 72 D5              \jb      short 0068EF2B
0068EF56  |.  8B5424 40          mov     edx, dword ptr [esp+40]
0068EF5A  |.  8A4424 10          mov     al, byte ptr [esp+10]
0068EF5E  |.  84C0               test    al, al
0068EF60  |.  C642 10 00         mov     byte ptr [edx+10], 0                 ; edx=16位字符串
我实在看不出,用八位字符和24位字符是如何计算出16位字符的,只知道循环部分是从某个地址每次取两个字符放入另一地址的。还望大侠们多多指点!
2007-11-6 09:17
0
雪    币: 207
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
呵呵!看来以后有问题,还得靠自己啊!那些高手们是靠不住的!
虽然制作不出注册机,放出来免费分享,但已摸索出使用注册机功能,只不过只有自己能用了!好在还能帮助别人,只不过麻烦点!
十分鄙视冷血动物!!!
2007-11-7 09:35
0
游客
登录 | 注册 方可回帖
返回
//