吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 9900|回复: 28
收起左侧

[原创] VxxyXXX PXF to Any CXXXXXXXr 2.0 注册分析和注册机

  [复制链接]
solly 发表于 2019-3-23 01:20
本帖最后由 云在天 于 2019-6-7 13:23 编辑

    VeryPDF PDF to Any Converter 用来将 PDF 转换为 Word、Excel、Powerpoint、HTML、XML、postscript、eps、纯文本和图像 (关于 TIFF、JPEG、TGA、png、GIF、BMP 和 PPM (PPM、PPM 和 PPM) 。对于不同的目标格式, 此应用程序提供相应的转换选项。用户可以设置颜色深度、页面大小、分辨率、压缩算法等。用户还可以指定要转换的页面范围。对于加密的 PDF, 用户可以提供密码再转换该 PDF。
    试用版只有19次使用机会,安装启动该软件后,显示如下要求注册界面:

11.png

要求输入 Registration Code,也可以直接点 Try 进入试用。随便输入一个字符,界面立即变成如下这样,显示无效注册码。

22.png

看来是是在按键事件中,进行注册码的判断的,接下来退出,重新用OD载入,搜索字符串“the registration code is invalid. please enter again!”,立即就有结果:

33.png

双击进入字符串引用代码处,如下图:

44.png

汇编代码如下:

[Asm] 纯文本查看 复制代码
; 字符串位置在 00421275 处访问
00421234   > \C74424 04 FFF>mov     dword ptr [esp+4], -1                           
0042123C   .  C70424 D0FA43>mov     dword ptr [esp], 0043FAD0                       ;  border:0px solid blue;background:url(':/myimage/image/error.png');background-repeat:no-repeat;
00421243   .  FF15 C4084600 call    dword ptr [<&QtCore4._ZN7QString16fromAscii_hel>;  QtCore4._ZN7QString16fromAscii_helperEPKci
00421249   .  8945 C8       mov     dword ptr [ebp-38], eax
0042124C   .  8D75 C8       lea     esi, dword ptr [ebp-38]
0042124F   .  897424 04     mov     dword ptr [esp+4], esi
00421253   .  8B43 14       mov     eax, dword ptr [ebx+14]
00421256   .  8B40 30       mov     eax, dword ptr [eax+30]
00421259   .  890424        mov     dword ptr [esp], eax
0042125C   .  FF15 B80B4600 call    dword ptr [<&QtGui4._ZN7QWidget13setStyleSheetE>;  QtGui4._ZN7QWidget13setStyleSheetERK7QString
00421262   .  893424        mov     dword ptr [esp], esi
00421265   .  E8 F60C0100   call    00431F60
0042126A   .  8D75 C4       lea     esi, dword ptr [ebp-3C]
0042126D   .  C74424 0C 000>mov     dword ptr [esp+C], 0
00421275   .  C74424 08 4CF>mov     dword ptr [esp+8], 0043FC4C                     ;  the registration code is invalid. please enter again!
0042127D   .  C74424 04 209>mov     dword ptr [esp+4], 00439420
00421285   .  893424        mov     dword ptr [esp], esi
00421288   .  FF15 50094600 call    dword ptr [<&QtCore4._ZNK11QMetaObject2trEPKcS1>;  QtCore4._ZNK11QMetaObject2trEPKcS1_
0042128E   .  51            push    ecx
0042128F   .  897424 04     mov     dword ptr [esp+4], esi
00421293   .  8B43 14       mov     eax, dword ptr [ebx+14]
00421296   .  8B40 18       mov     eax, dword ptr [eax+18]
00421299   .  890424        mov     dword ptr [esp], eax
0042129C   .  FF15 A80C4600 call    dword ptr [<&QtGui4._ZN9QTextEdit7setTextERK7QS>;  QtGui4._ZN9QTextEdit7setTextERK7QString
004212A2   .^ E9 FCFDFFFF   jmp     004210A3



往上回溯(在00421234处有跳转过来),当 eax = 5时会跳转去显示 "the registration code is invalid. please enter again!",如下:

[Asm] 纯文本查看 复制代码
0420DFC   $  55            push    ebp
00420DFD   .  89E5          mov     ebp, esp
00420DFF   .  57            push    edi
00420E00   .  56            push    esi
00420E01   .  53            push    ebx
00420E02   .  83EC 7C       sub     esp, 7C
00420E05   .  8B5D 08       mov     ebx, dword ptr [ebp+8]
00420E08   .  8B45 0C       mov     eax, dword ptr [ebp+C]
00420E0B   .  83F8 03       cmp     eax, 3                                         
00420E0E   .  0F84 A0020000 je      004210B4
00420E14   .  85C0          test    eax, eax
00420E16   .  0F84 BC000000 je      00420ED8
00420E1C   .  83F8 05       cmp     eax, 5            ; 是否 eax=5
00420E1F   .  0F84 0F040000 je      00421234          ; 是则跳转去显示 "the registration code is invalid. please enter again!"
00420E25   .  83F8 01       cmp     eax, 1
00420E28   .  0F84 CA010000 je      00420FF8
00420E2E   .  83F8 02       cmp     eax, 2
00420E31   .  0F84 21030000 je      00421158



在OD中按CTRL+F9执行到返回,退出本函数。来到如下代码调用处,选中0042153C地址那一行,ollyice会显示是从004213B7跳转过来的。

[Asm] 纯文本查看 复制代码
0042153C   > \C74424 04 050>mov     dword ptr [esp+4], 5                            ; 设置标志 FLAG = 5
00421544   .  891C24        mov     dword ptr [esp], ebx
00421547   .  E8 B0F8FFFF   call    00420DFC                                        ; 该函数显示 the registration code is invalid. please enter again!
0042154C   .^ E9 CAFEFFFF   jmp     0042141B



再次回溯,来到004213B7处,可得到以下函数开始部分。其中004213B0处的call 004229B0返回值即是跳转条件。

[Asm] 纯文本查看 复制代码
00421344   $  55                        push    ebp
00421345   .  89E5                      mov     ebp, esp
00421347   .  57                        push    edi
00421348   .  56                        push    esi
00421349   .  53                        push    ebx
0042134A   .  83EC 5C                   sub     esp, 5C
0042134D   .  8B5D 08                   mov     ebx, dword ptr [ebp+8]
00421350   .  8D75 E0                   lea     esi, dword ptr [ebp-20]
00421353   .  8B43 14                   mov     eax, dword ptr [ebx+14]
00421356   .  8B40 2C                   mov     eax, dword ptr [eax+2C]
00421359   .  894424 04                 mov     dword ptr [esp+4], eax
0042135D   .  893424                    mov     dword ptr [esp], esi
00421360   .  FF15 480D4600             call    dword ptr [<&QtGui4._ZNK9QLineEdit4textEv>]      ;从文本编辑控件读取注册码
00421366   .  52                        push    edx
00421367   .  8B45 E0                   mov     eax, dword ptr [ebp-20]                          ;eax指向刚才输入的注册码 unicode编码16bit格式
0042136A   .  8378 08 00                cmp     dword ptr [eax+8], 0                             ;检查注册码的长度>=0
0042136E   .  0F84 DC000000             je      00421450
00421374   .  0F8E B5000000             jle     0042142F
0042137A   .  8D7D CC                   lea     edi, dword ptr [ebp-34]
0042137D   .  897424 04                 mov     dword ptr [esp+4], esi
00421381   .  893C24                    mov     dword ptr [esp], edi
00421384   .  FF15 64094600             call    dword ptr [<&QtCore4._ZNK7QString11toLocal8BitEv>] ;转换成8bit的ascii编码字符串
0042138A   .  51                        push    ecx
0042138B   .  8B45 CC                   mov     eax, dword ptr [ebp-34]                            ;eax转换后的字符串
0042138E   .  8B10                      mov     edx, dword ptr [eax]
00421390   .  4A                        dec     edx
00421391   .  0F84 05020000             je      0042159C                                           ; 检查是否转换成功
00421397   >  8B40 08                   mov     eax, dword ptr [eax+8]
0042139A   .  894424 04                 mov     dword ptr [esp+4], eax
0042139E   .  893C24                    mov     dword ptr [esp], edi
004213A1   .  FF15 5C084600             call    dword ptr [<&QtCore4._ZN10QByteArray7reallocEi>] 
004213A7   .  8B45 CC                   mov     eax, dword ptr [ebp-34]
004213AA   .  8B50 0C                   mov     edx, dword ptr [eax+C]
004213AD   >  891424                    mov     dword ptr [esp], edx    ; 检查完成后跳回至此, edx=02B8D858,保存SN的字符串(ASCII "7878787878787878787")
004213B0   .  E8 FB150000               call    004229B0                ; 注册码规则检查,如果符合规则就表示是有效的注册码
004213B5   .  84C0                      test    al, al
004213B7   .  0F84 7F010000             je      0042153C    ; 跳转去设置 FLAG=5 并显示 "the registration code is invalid. please enter again!"

;检查转换是否成功
0042159C   > \8B50 0C                   mov     edx, dword ptr [eax+C]
0042159F   .  8D48 10                   lea     ecx, dword ptr [eax+10]
004215A2   .  39CA                      cmp     edx, ecx
004215A4   .^ 0F85 EDFDFFFF             jnz     00421397
004215AA   .^ E9 FEFDFFFF               jmp     004213AD                                           ; 检查完成跳回


上面代码中 eax 中的地址指向的数据如下:
02BA8330  03 00 00 00 16 00 00 00 13 00 00 00 42 83 BA 02  
02BA8340  00 F0 37 00 38 00 37 00 38 00 37 00 38 00 37 00  
02BA8350  38 00 37 00 38 00 37 00 38 00 37 00 38 00 37 00  

转换后的数据,edx=02B8D858,转换后的SN

02B8D848  01 00 00 00 14 00 00 00 13 00 00 00 58 D8 B8 02  
02B8D858  37 38 37 38 37 38 37 38 37 38 37 38 37 38 37 38  
02B8D868  37 38 37 00 00 00 00 00 AB AB AB AB AB AB AB AB  


上面代码中几个call是QT4的调用,只有一个 call    004229B0 不是QT4的调用,在此下断,F7进入些调用,来到以下代码处:


[Asm] 纯文本查看 复制代码
004229B0   $  55                        push    ebp
004229B1   .  89E5                      mov     ebp, esp
004229B3   .  57                        push    edi
004229B4   .  56                        push    esi
004229B5   .  53                        push    ebx
004229B6   .  83EC 3C                   sub     esp, 3C
004229B9   .  8B5D 08                   mov     ebx, dword ptr [ebp+8]              ;ebx=02B8D858,保存SN的字符串(ASCII "7878787878787878787")
004229BC   .  31C0                      xor     eax, eax
004229BE   .  B9 FFFFFFFF               mov     ecx, -1                             ; ecx = 0xFFFFFFFF
004229C3   .  89DF                      mov     edi, ebx                            ;edi=02B8D858,保存SN的字符串(ASCII "7878787878787878787")
004229C5   .  F2:AE                     repne   scas byte ptr es:[edi]
004229C7   .  83F9 EE                   cmp     ecx, -12                            ;是否16个字节长度
004229CA   .  74 0C                     je      short 004229D8                      ;长度等于16字符则跳转到注册码的规则检查
004229CC   >  31C0                      xor     eax, eax                            ;长度检查错误或后面的规则检查错误则函数将返回0,注册码无效!!!
004229CE   >  83C4 3C                   add     esp, 3C
004229D1   .  5B                        pop     ebx
004229D2   .  5E                        pop     esi
004229D3   .  5F                        pop     edi
004229D4   .  C9                        leave
004229D5   .  C3                        retn




可以看到,如果注册码的长度不是16个字符,就直接 Game Over了。
退出,重新输入16个字符,再次来到这里,并跳转到 004229D8

[Asm] 纯文本查看 复制代码
004229D8   > \31F6                      xor     esi, esi                                  ; i=0, 开始第1轮判断
004229DA   .  EB 06                     jmp     short 004229E2                            ;
004229DC   >  46                        inc     esi                                       ; i++
004229DD   .  83FE 10                   cmp     esi, 10                                   ; i<16 (循环16次)
004229E0   .  74 36                     je      short 00422A18                            ; ebx保存SN的基址
004229E2   >  0FBE3C33                  movsx   edi, byte ptr [ebx+esi]                   ; edi = SN[i]
004229E6   .  89F8                      mov     eax, edi
004229E8   .  E8 ABFFFFFF               call    00422998                                  ;这个call判断是否大写字母,是返回ascii码,否返回-1
004229ED   .  40                        inc     eax                                       ;不是大写字母,则eax=0了
004229EE   .^ 75 EC                     jnz     short 004229DC                            ;不为0则继续循环判断(continue)
004229F0   .  A1 80074600               mov     eax, dword ptr [<&msvcrt.__mb_cur_max>]   
004229F5   .  8338 01                   cmp     dword ptr [eax], 1                        
004229F8   .  0F84 3E030000             je      00422D3C                                  ;去查表检查是否有效的字符                                 
004229FE   .  C74424 04 04000000        mov     dword ptr [esp+4], 4                      
00422A06   .  893C24                    mov     dword ptr [esp], edi                      
00422A09   .  E8 666C0000               call    <jmp.&msvcrt._isctype>                    ; _isctype
00422A0E   >  85C0                      test    eax, eax                                   ; 是否为字母或数字
00422A10   .^ 74 BA                     je      short 004229CC                             ; 无效字符返回无效注册码
00422A12   .  46                        inc     esi                                        ; i++;
00422A13   .  83FE 10                   cmp     esi, 10                                    ; i<16;
00422A16   .^ 75 CA                     jnz     short 004229E2                             ; 继续前面的循环
00422A18   >  0FBE03                    movsx   eax, byte ptr [ebx]                        ; 开始第2轮判断,第1个大写
00422A1B   .  E8 78FFFFFF               call    00422998
00422A20   .  40                        inc     eax
00422A21   .^ 74 A9                     je      short 004229CC                             ; 不是大写返回无效注册码
00422A23   .  0FBE43 03                 movsx   eax, byte ptr [ebx+3]                      ; 第4个大写
00422A27   .  E8 6CFFFFFF               call    00422998
00422A2C   .  40                        inc     eax
00422A2D   .^ 74 9D                     je      short 004229CC                             ; 不是大写返回无效注册码
00422A2F   .  0FBE43 04                 movsx   eax, byte ptr [ebx+4]                      ; 第5个大写
00422A33   .  E8 60FFFFFF               call    00422998
00422A38   .  40                        inc     eax
00422A39   .^ 74 91                     je      short 004229CC                             ; 不是大写返回无效注册码
00422A3B   .  0FBE43 06                 movsx   eax, byte ptr [ebx+6]                      ; 第7个大写
00422A3F   .  E8 54FFFFFF               call    00422998
00422A44   .  40                        inc     eax
00422A45   .^ 74 85                     je      short 004229CC                             ; 不是大写返回无效注册码
00422A47   .  0FBE43 08                 movsx   eax, byte ptr [ebx+8]                      ; 第9个大写
00422A4B   .  E8 48FFFFFF               call    00422998
00422A50   .  40                        inc     eax
00422A51   .^ 0F84 75FFFFFF             je      004229CC                                   ; 不是大写返回无效注册码
00422A57   .  0FBE43 09                 movsx   eax, byte ptr [ebx+9]                      ; 第10个大写
00422A5B   .  E8 38FFFFFF               call    00422998
00422A60   .  40                        inc     eax
00422A61   .^ 0F84 65FFFFFF             je      004229CC                                   ; 不是大写返回无效注册码
00422A67   .  0FBE43 0C                 movsx   eax, byte ptr [ebx+C]                      ; 第13个大写
00422A6B   .  E8 28FFFFFF               call    00422998
00422A70   .  40                        inc     eax
00422A71   .^ 0F84 55FFFFFF             je      004229CC                                   ; 不是大写返回无效注册码
00422A77   .  0FBE43 0D                 movsx   eax, byte ptr [ebx+D]                      ; 第14个大写
00422A7B   .  E8 18FFFFFF               call    00422998
00422A80   .  40                        inc     eax
00422A81   .^ 0F84 45FFFFFF             je      004229CC                                   ; 不是大写返回无效注册码
00422A87   .  8A4B 01                   mov     cl, byte ptr [ebx+1]                      ; 取第2个SN
00422A8A   .  884D DC                   mov     byte ptr [ebp-24], cl
00422A8D   .  0FBEC1                    movsx   eax, cl
00422A90   .  8945 E0                   mov     dword ptr [ebp-20], eax
00422A93   .  E8 00FFFFFF               call    00422998                                   ;是否大写字母
00422A98   .  8945 D8                   mov     dword ptr [ebp-28], eax
00422A9B   .  40                        inc     eax
00422A9C   .  75 13                     jnz     short 00422AB1
00422A9E   .  8B55 E0                   mov     edx, dword ptr [ebp-20]
00422AA1   .  891424                    mov     dword ptr [esp], edx
00422AA4   .  E8 131A0100               call    004344BC                                  ; 是否大写或数字
00422AA9   .  85C0                      test    eax, eax
00422AAB   .^ 0F84 1BFFFFFF             je      004229CC                                  ; 返回无效注册码
00422AB1   >  8A4B 02                   mov     cl, byte ptr [ebx+2]                      ; 取第3个SN
00422AB4   .  884D E4                   mov     byte ptr [ebp-1C], cl
00422AB7   .  0FBEF1                    movsx   esi, cl                                   
00422ABA   .  89F0                      mov     eax, esi
00422ABC   .  E8 D7FEFFFF               call    00422998                                   ;是否大写字母
00422AC1   .  89C7                      mov     edi, eax
00422AC3   .  83F8 FF                   cmp     eax, -1
00422AC6   .  75 10                     jnz     short 00422AD8
00422AC8   .  893424                    mov     dword ptr [esp], esi
00422ACB   .  E8 EC190100               call    004344BC                                  ; 是否大写或数字
00422AD0   .  85C0                      test    eax, eax
00422AD2   .^ 0F84 F4FEFFFF             je      004229CC
00422AD8   >  0FBE53 05                 movsx   edx, byte ptr [ebx+5]                      ; 取第6个SN
00422ADC   .  89D0                      mov     eax, edx
00422ADE   .  8955 CC                   mov     dword ptr [ebp-34], edx
00422AE1   .  E8 B2FEFFFF               call    00422998                                   ;是否大写字母
00422AE6   .  40                        inc     eax
00422AE7   .  8B55 CC                   mov     edx, dword ptr [ebp-34]
00422AEA   .  75 10                     jnz     short 00422AFC
00422AEC   .  891424                    mov     dword ptr [esp], edx
00422AEF   .  E8 C8190100               call    004344BC                                  ; 是否大写或数字
00422AF4   .  85C0                      test    eax, eax
00422AF6   .^ 0F84 D0FEFFFF             je      004229CC
00422AFC   >  0FBE53 07                 movsx   edx, byte ptr [ebx+7]                      ; 取第8个SN
00422B00   .  89D0                      mov     eax, edx
00422B02   .  8955 CC                   mov     dword ptr [ebp-34], edx
00422B05   .  E8 8EFEFFFF               call    00422998
00422B0A   .  40                        inc     eax
00422B0B   .  8B55 CC                   mov     edx, dword ptr [ebp-34]
00422B0E   .  75 10                     jnz     short 00422B20
00422B10   .  891424                    mov     dword ptr [esp], edx
00422B13   .  E8 A4190100               call    004344BC
00422B18   .  85C0                      test    eax, eax
00422B1A   .^ 0F84 ACFEFFFF             je      004229CC
00422B20   >  0FBE53 0A                 movsx   edx, byte ptr [ebx+A]                      ; 取第11个SN
00422B24   .  89D0                      mov     eax, edx
00422B26   .  8955 CC                   mov     dword ptr [ebp-34], edx
00422B29   .  E8 6AFEFFFF               call    00422998
00422B2E   .  40                        inc     eax
00422B2F   .  8B55 CC                   mov     edx, dword ptr [ebp-34]
00422B32   .  75 10                     jnz     short 00422B44
00422B34   .  891424                    mov     dword ptr [esp], edx
00422B37   .  E8 80190100               call    004344BC
00422B3C   .  85C0                      test    eax, eax
00422B3E   .^ 0F84 88FEFFFF             je      004229CC
00422B44   >  0FBE53 0B                 movsx   edx, byte ptr [ebx+B]                      ; 取第12个SN
00422B48   .  89D0                      mov     eax, edx
00422B4A   .  8955 CC                   mov     dword ptr [ebp-34], edx
00422B4D   .  E8 46FEFFFF               call    00422998
00422B52   .  40                        inc     eax
00422B53   .  8B55 CC                   mov     edx, dword ptr [ebp-34]
00422B56   .  75 10                     jnz     short 00422B68
00422B58   .  891424                    mov     dword ptr [esp], edx
00422B5B   .  E8 5C190100               call    004344BC
00422B60   .  85C0                      test    eax, eax
00422B62   .^ 0F84 64FEFFFF             je      004229CC
00422B68   >  0FBE53 0E                 movsx   edx, byte ptr [ebx+E]                      ; 取第15个SN
00422B6C   .  89D0                      mov     eax, edx
00422B6E   .  8955 CC                   mov     dword ptr [ebp-34], edx
00422B71   .  E8 22FEFFFF               call    00422998
00422B76   .  40                        inc     eax
00422B77   .  8B55 CC                   mov     edx, dword ptr [ebp-34]
00422B7A   .  75 10                     jnz     short 00422B8C
00422B7C   .  891424                    mov     dword ptr [esp], edx
00422B7F   .  E8 38190100               call    004344BC
00422B84   .  85C0                      test    eax, eax
00422B86   .^ 0F84 40FEFFFF             je      004229CC
00422B8C   >  0FBE53 0F                 movsx   edx, byte ptr [ebx+F]                      ; 取第16个SN
00422B90   .  89D0                      mov     eax, edx
00422B92   .  8955 CC                   mov     dword ptr [ebp-34], edx
00422B95   .  E8 FEFDFFFF               call    00422998
00422B9A   .  40                        inc     eax
00422B9B   .  8B55 CC                   mov     edx, dword ptr [ebp-34]
00422B9E   .  0F84 68020000             je      00422E0C                               ;第16位SN为数字跳转
00422BA4   >  837D D8 FF                cmp     dword ptr [ebp-28], -1                 ;上面跳转后,如果第16位为数字,会回跳到这里。
00422BA8   .  0F84 A2010000             je      00422D50                               ;为字母时直接跳转去取第2位SN
00422BAE   .  8B45 E0                   mov     eax, dword ptr [ebp-20]
00422BB1   .  894424 08                 mov     dword ptr [esp+8], eax
00422BB5   .  C74424 04 01000000        mov     dword ptr [esp+4], 1
00422BBD   .  C70424 41000000           mov     dword ptr [esp], 41
00422BC4   .  E8 23F8FFFF               call    004223EC
00422BC9   .  8945 E0                   mov     dword ptr [ebp-20], eax
00422BCC   .  8A53 02                   mov     dl, byte ptr [ebx+2]                    ;取第3个SN
00422BCF   .  8855 E4                   mov     byte ptr [ebp-1C], dl
00422BD2   .  0FBEF2                    movsx   esi, dl                                 
00422BD5   .  89F0                      mov     eax, esi
00422BD7   .  E8 BCFDFFFF               call    00422998
00422BDC   .  89C7                      mov     edi, eax
00422BDE   >  47                        inc     edi
00422BDF   .  0F84 BF010000             je      00422DA4
00422BE5   .  897424 08                 mov     dword ptr [esp+8], esi
00422BE9   .  C74424 04 01000000        mov     dword ptr [esp+4], 1
00422BF1   .  C70424 41000000           mov     dword ptr [esp], 41
00422BF8   .  E8 EFF7FFFF               call    004223EC                                ;检索字母的索引值
00422BFD   .  89C6                      mov     esi, eax                                ;检查和的第1个数(第3个SN)
00422BFF   >  8A4B 05                   mov     cl, byte ptr [ebx+5]                    ;取第6个SN
00422C02   .  884D E4                   mov     byte ptr [ebp-1C], cl
00422C05   .  0FBEF9                    movsx   edi, cl
00422C08   .  89F8                      mov     eax, edi
00422C0A   .  E8 89FDFFFF               call    00422998
00422C0F   .  40                        inc     eax
00422C10   .  0F84 62010000             je      00422D78
00422C16   .  897C24 08                 mov     dword ptr [esp+8], edi
00422C1A   .  C74424 04 01000000        mov     dword ptr [esp+4], 1
00422C22   .  C70424 41000000           mov     dword ptr [esp], 41
00422C29   .  E8 BEF7FFFF               call    004223EC
00422C2E   .  8945 D8                   mov     dword ptr [ebp-28], eax
00422C31   >  0FBE43 06                 movsx   eax, byte ptr [ebx+6]                  ;取第7个SN
00422C35   .  894424 08                 mov     dword ptr [esp+8], eax
00422C39   .  C74424 04 01000000        mov     dword ptr [esp+4], 1
00422C41   .  C70424 41000000           mov     dword ptr [esp], 41
00422C48   .  E8 9FF7FFFF               call    004223EC                               ;返回index of ('A'..'Z')
00422C4D   .  8945 DC                   mov     dword ptr [ebp-24], eax
00422C50   .  0FBE43 09                 movsx   eax, byte ptr [ebx+9]                  ;取第10个SN
00422C54   .  894424 08                 mov     dword ptr [esp+8], eax
00422C58   .  C74424 04 01000000        mov     dword ptr [esp+4], 1
00422C60   .  C70424 41000000           mov     dword ptr [esp], 41
00422C67   .  E8 80F7FFFF               call    004223EC                               ;返回index of ('A'..'Z')
00422C6C   .  8945 D4                   mov     dword ptr [ebp-2C], eax
00422C6F   .  8A43 0A                   mov     al, byte ptr [ebx+A]                  ;取第11个SN
00422C72   .  8845 E4                   mov     byte ptr [ebp-1C], al
00422C75   .  0FBEF8                    movsx   edi, al
00422C78   .  89F8                      mov     eax, edi
00422C7A   .  E8 19FDFFFF               call    00422998
00422C7F   .  40                        inc     eax
00422C80   .  0F84 08010000             je      00422D8E
00422C86   .  897C24 08                 mov     dword ptr [esp+8], edi
00422C8A   .  C74424 04 01000000        mov     dword ptr [esp+4], 1
00422C92   .  C70424 41000000           mov     dword ptr [esp], 41
00422C99   .  E8 4EF7FFFF               call    004223EC
00422C9E   .  8945 D0                   mov     dword ptr [ebp-30], eax
00422CA1   >  0FBE43 0D                 movsx   eax, byte ptr [ebx+D]                  ;取第14个SN
00422CA5   .  894424 08                 mov     dword ptr [esp+8], eax
00422CA9   .  C74424 04 01000000        mov     dword ptr [esp+4], 1
00422CB1   .  C70424 41000000           mov     dword ptr [esp], 41
00422CB8   .  E8 2FF7FFFF               call    004223EC                               ;返回index of ('A'..'Z')
00422CBD   .  8945 E4                   mov     dword ptr [ebp-1C], eax
00422CC0   .  8A5B 0E                   mov     bl, byte ptr [ebx+E]                   ;取第15个SN
00422CC3   .  0FBEFB                    movsx   edi, bl
00422CC6   .  89F8                      mov     eax, edi
00422CC8   .  E8 CBFCFFFF               call    00422998
00422CCD   .  40                        inc     eax
00422CCE   .  0F84 92000000             je      00422D66
00422CD4   .  897C24 08                 mov     dword ptr [esp+8], edi
00422CD8   .  C74424 04 01000000        mov     dword ptr [esp+4], 1
00422CE0   .  C70424 41000000           mov     dword ptr [esp], 41
00422CE7   .  E8 00F7FFFF               call    004223EC                               ;返回index of ('A'..'Z')
00422CEC   .  89C1                      mov     ecx, eax
00422CEE   >  0375 E0                   add     esi, dword ptr [ebp-20]                ;校验:第3位和第16位的数字和为偶数
00422CF1   .  83E6 01                   and     esi, 1                                 ;是否2的倍数
00422CF4   .^ 0F85 D2FCFFFF             jnz     004229CC                               ;非偶数则失败
00422CFA   .  8B45 DC                   mov     eax, dword ptr [ebp-24]                ;第7位SN的索引值
00422CFD   .  0345 D8                   add     eax, dword ptr [ebp-28]                ;加上第6位索引值
00422D00   .  BA 03000000               mov     edx, 3
00422D05   .  89D3                      mov     ebx, edx
00422D07   .  99                        cdq
00422D08   .  F7FB                      idiv    ebx
00422D0A   .  85D2                      test    edx, edx                               ;是否3的倍数。
00422D0C   .^ 0F85 BAFCFFFF             jnz     004229CC
00422D12   .  8B45 D0                   mov     eax, dword ptr [ebp-30]                ;第11位SN的索引值
00422D15   .  0345 D4                   add     eax, dword ptr [ebp-2C]                ;加上第10位索引值
00422D18   .  A8 03                     test    al, 3                                  ;是否4的倍数
00422D1A   .^ 0F85 ACFCFFFF             jnz     004229CC
00422D20   .  8B55 E4                   mov     edx, dword ptr [ebp-1C]                ;第14位SN的索引值
00422D23   .  8D0411                    lea     eax, dword ptr [ecx+edx]                ;加上第15位SN的索引值
00422D26   .  BA 05000000               mov     edx, 5
00422D2B   .  89D1                      mov     ecx, edx
00422D2D   .  99                        cdq
00422D2E   .  F7F9                      idiv    ecx
00422D30   .  85D2                      test    edx, edx                               ;是否为5的倍数
00422D32   .  0F94C0                    sete    al
00422D35   .^ E9 94FCFFFF               jmp     004229CE
00422D3A   .  66:90                     nop
00422D3C   >  8B15 A0074600             mov     edx, dword ptr [<&msvcrt._pctype>] ;  查表检查是否有效的字符
00422D42   .  8B02                      mov     eax, dword ptr [edx]
00422D44   .  0FB70478                  movzx   eax, word ptr [eax+edi*2]
00422D48   .  83E0 04                   and     eax, 4
00422D4B   .^ E9 BEFCFFFF               jmp     00422A0E
00422D50   >  8A45 DC                   mov     al, byte ptr [ebp-24]              ;保存的第2位sn(当第16位为数字时)
00422D53   .  83E8 30                   sub     eax, 30
00422D56   .  3C 09                     cmp     al, 9
00422D58   .  76 5E                     jbe     short 00422DB8                     ;<='9'
00422D5A   .  C745 E0 FFFFFFFF          mov     dword ptr [ebp-20], -1
00422D61   .^ E9 78FEFFFF               jmp     00422BDE
00422D66   >  83EB 30                   sub     ebx, 30
00422D69   .  80FB 09                   cmp     bl, 9
00422D6C   .  76 5C                     jbe     short 00422DCA                      ;<='9'
00422D6E   .  B9 FFFFFFFF               mov     ecx, -1
00422D73   .^ E9 76FFFFFF               jmp     00422CEE
00422D78   >  8A45 E4                   mov     al, byte ptr [ebp-1C]
00422D7B   .  83E8 30                   sub     eax, 30
00422D7E   .  3C 09                     cmp     al, 9
00422D80   .  76 69                     jbe     short 00422DEB                       ;<='9'
00422D82   .  C745 D8 FFFFFFFF          mov     dword ptr [ebp-28], -1
00422D89   .^ E9 A3FEFFFF               jmp     00422C31
00422D8E   >  8A45 E4                   mov     al, byte ptr [ebp-1C]                  ;第11个SN
00422D91   .  83E8 30                   sub     eax, 30
00422D94   .  3C 09                     cmp     al, 9
00422D96   .  76 41                     jbe     short 00422DD9
00422D98   .  C745 D0 FFFFFFFF          mov     dword ptr [ebp-30], -1
00422D9F   .^ E9 FDFEFFFF               jmp     00422CA1
00422DA4   >  8A45 E4                   mov     al, byte ptr [ebp-1C]                  ;保存的第3个SN
00422DA7   .  83E8 30                   sub     eax, 30
00422DAA   .  3C 09                     cmp     al, 9
00422DAC   .  76 4F                     jbe     short 00422DFD
00422DAE   .  BE FFFFFFFF               mov     esi, -1
00422DB3   .^ E9 47FEFFFF               jmp     00422BFF
00422DB8   >  0FBEC0                    movsx   eax, al
00422DBB   .  8B0485 A0FF4300           mov     eax, dword ptr [eax*4+43FFA0]          ;查表(0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0)得到数字的对应值(atoi)
00422DC2   .  8945 E0                   mov     dword ptr [ebp-20], eax
00422DC5   .^ E9 14FEFFFF               jmp     00422BDE
00422DCA   >  0FBEDB                    movsx   ebx, bl
00422DCD   .  8B0C9D A0FF4300           mov     ecx, dword ptr [ebx*4+43FFA0]          ;查表(0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0)得到数字的对应值(atoi)
00422DD4   .^ E9 15FFFFFF               jmp     00422CEE
00422DD9   >  0FBEC0                    movsx   eax, al
00422DDC   .  8B0485 A0FF4300           mov     eax, dword ptr [eax*4+43FFA0]          ;查表(0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0)得到数字的对应值(atoi)
00422DE3   .  8945 D0                   mov     dword ptr [ebp-30], eax
00422DE6   .^ E9 B6FEFFFF               jmp     00422CA1
00422DEB   >  0FBEC0                    movsx   eax, al
00422DEE   .  8B0485 A0FF4300           mov     eax, dword ptr [eax*4+43FFA0]          ;查表(0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0)得到数字的对应值(atoi)
00422DF5   .  8945 D8                   mov     dword ptr [ebp-28], eax
00422DF8   .^ E9 34FEFFFF               jmp     00422C31
00422DFD   >  0FBEC0                    movsx   eax, al
00422E00   .  8B3485 A0FF4300           mov     esi, dword ptr [eax*4+43FFA0]          ;查表(0,1,2,3,4,5,6,7,8,9,0,0,0,0,0,0)得到数字的对应值(atoi)
00422E07   .^ E9 F3FDFFFF               jmp     00422BFF
00422E0C   >  891424                    mov     dword ptr [esp], edx
00422E0F   .  E8 A8160100               call    004344BC
00422E14   .  85C0                      test    eax, eax
00422E16   .^ 0F84 B0FBFFFF             je      004229CC
00422E1C   .^ E9 83FDFFFF               jmp     00422BA4
00422E21      90                        nop
00422E22      90                        nop
00422E23      90                        nop

;检查是否大写字母
00422998  /$  55                    push    ebp
00422999  |.  89E5                  mov     ebp, esp
0042299B  |.  8D50 BF               lea     edx, dword ptr [eax-41]
0042299E  |.  80FA 19               cmp     dl, 19
004229A1  |.  77 05                 ja      short 004229A8
004229A3  |.  0FBEC0                movsx   eax, al
004229A6  |.  C9                    leave
004229A7  |.  C3                    retn
004229A8  |>  B8 FFFFFFFF           mov     eax, -1
004229AD  |.  C9                    leave
004229AE  \.  C3                    retn

;检查是否数字或字母
004344BC  /$  55                    push    ebp
004344BD  |.  89E5                  mov     ebp, esp
004344BF  |.  83EC 18               sub     esp, 18
004344C2  |.  8B55 08               mov     edx, dword ptr [ebp+8]                      ; |
004344C5  |.  A1 80074600           mov     eax, dword ptr [<&msvcrt.__mb_cur_max>]     ; |
004344CA  |.  8338 01               cmp     dword ptr [eax], 1                          ; |
004344CD  |.  74 15                 je      short 004344E4                              ; |
004344CF  |.  C74424 04 04000000    mov     dword ptr [esp+4], 4                        ; |
004344D7  |.  891424                mov     dword ptr [esp], edx                        ; |
004344DA  |.  E8 9551FFFF           call    <jmp.&msvcrt._isctype>                      ; \_isctype
004344DF  |.  C9                    leave
004344E0  |.  C3                    retn
004344E1  |   8D76 00               lea     esi, dword ptr [esi]
004344E4  |>  A1 A0074600           mov     eax, dword ptr [<&msvcrt._pctype>]
004344E9  |.  8B00                  mov     eax, dword ptr [eax]
004344EB  |.  0FB70450              movzx   eax, word ptr [eax+edx*2]
004344EF  |.  83E0 04               and     eax, 4
004344F2  |.  C9                    leave
004344F3  \.  C3                    retn




上面就是注册码的验证算法,从分析可以看出其验证规则如下:
1、注册码长度为16个字符,由大写字母或数字组成;
2、第1、4、5、7、9、10、13、14位置为大写的字母,其它位置为大写字母或数字;
3、字符转换规则:数字类字符直接为'0'~'9'对应的数字0~9;字母类字符则A~Z对应数字1~26,后面所有计算值都是转换后的值;
4、第2位和第3位的和为2的倍数;
5、第6位和第7位的和为3的倍数;
6、第10位和第11位的和为4的倍数;
7、第14位和第15位的和为5的倍数;



另外,软件注册后,会生成一个注册文件保存在如下位置:
c:\users\xfq\appdata\local/pdftoanyconvertertinforeg.txt
删除该文件后,会要求你重新注册。
注册成功后,显示界面如下:

55.png

两次发布被拒绝,是不是太长了,注册机放下一楼算了。。。。。。

免费评分

参与人数 5威望 +2 吾爱币 +11 热心值 +5 收起 理由
Hmily + 2 + 7 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
fire_flag + 1 + 1 谢谢@Thanks!
go2019 + 1 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
hunteraa + 1 + 1 用心讨论,共获提升!
fcguo800 + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| solly 发表于 2019-3-23 01:56
每次发注册机源码都是:

您的IP: nnn.249.55.mmm
                eventID: 1249-1553305812.966-s8shct            
            
抱歉!您的访问可能对网站造成威胁,已被安域防护拦截!
            
Sorry! your access has been intercepted by AnYu, because your links may threaten website security!
这是么子意思呀,只好发个附件试试了。再弄个图片:

66.png

main_c.zip

839 Bytes, 下载次数: 88, 下载积分: 吾爱币 -1 CB

注册机源码

点评

优秀 分析的非常到位  发表于 2019-3-24 11:15
 楼主| solly 发表于 2019-3-23 23:12
fcguo800 发表于 2019-3-23 22:42
感谢楼主分享,不好意思,原程序没有搜索到,麻烦发一下原程序吧,要是能带上成品就更好了,非常感谢。

软件来源:

http://www.verypdf.com/app/pdf-to-any-converter/index.html

/////
SN: GT6UU1NEYM7IUM2Z
kenxy 发表于 2019-3-23 17:58
mini007.hi 发表于 2019-3-23 19:51
学习了,感谢楼主分享
kneken 发表于 2019-3-23 20:51
谢谢分享
fcguo800 发表于 2019-3-23 22:42
感谢楼主分享,不好意思,原程序没有搜索到,麻烦发一下原程序吧,要是能带上成品就更好了,非常感谢。
胃小饱 发表于 2019-3-23 22:45
厉害,学习了
fcguo800 发表于 2019-3-23 23:55
solly 发表于 2019-3-23 23:12
软件来源:

http://www.verypdf.com/app/pdf-to-any-converter/index.html

非常感谢大神,收到了,使用正常,一直支持你。
go2019 发表于 2019-3-24 09:02
看到高手发帖,前来支持一下!受教了!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-22 15:51

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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