飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 4356|回复: 4

[原创] PDF Password Remover V3.0算法分析

[复制链接]

该用户从未签到

发表于 2009-12-19 14:55:45 | 显示全部楼层 |阅读模式
【破文标题】PDF Password Remover v3.0算法分析
【破文作者】xinldy
【软件名称】PDF Password Remover v3.0
【原版下载】http://www.verypdf.com/
【保护方式】upx
【软件简介】
            PDF Password Remover can be used to decrypt protected Adobe Acrobat PDF files, which have "owner" password set, preventing the file from editing (changing), printing, selecting text and graphics. Decryption is being done instantly. Decrypted file can be opened in any PDF viewer (e.g. Adobe Acrobat Reader) without any restrictions.

破解声明】文中不妥之处望指正!
------------------------------------------------------------------------
【破解过程】

004053A2    E8 59F8FFFF     call    00404C00                         算法
004053A7    83C4 04         add     esp, 4
004053AA    85C0            test    eax, eax
004053AC    74 44           je      short 004053F2                   关键跳转
004053AE    6A 40           push    40
004053B0    68 946A4900     push    00496A94                         ; thank you.
004053B5    68 5C6A4900     push    00496A5C                         ; thanks for purchasing the pdf password remover v3.0.
004053BA    56              push    esi
004053BB    FF15 08844800   call    dword ptr [<&USER32.MessageBoxA>>; USER32.MessageBoxA
004053C1    51              push    ecx
004053C2    8BCC            mov     ecx, esp
004053C4    896424 10       mov     dword ptr [esp+10], esp
004053C8    68 F0B44B00     push    004BB4F0                        
004053CD    E8 C86A0700     call    0047BE9A
004053D2    E8 F9FBFFFF     call    00404FD0
004053D7    83C4 04         add     esp, 4
004053DA    C705 B8B54B00 0>mov     dword ptr [4BB5B8], 1
004053E4    6A 01           push    1
004053E6    56              push    esi
004053E7    FF15 04844800   call    dword ptr [<&USER32.EndDialog>]  ; USER32.EndDialog
004053ED    E9 86020000     jmp     00405678
004053F2    6A 10           push    10
004053F4    6A 00           push    0
004053F6    68 146A4900     push    00496A14                         ; your registration key is wrong, please double check it and try again.


F7进入
004053A2    E8 59F8FFFF     call    00404C00

来到:
下面的部分是判断注册码的位数是否为20位
00404C00    83EC 18         sub     esp, 18
00404C03    83C9 FF         or      ecx, FFFFFFFF
00404C06    33C0            xor     eax, eax
00404C08    53              push    ebx
00404C09    56              push    esi
00404C0A    8B7424 24       mov     esi, dword ptr [esp+24]
00404C0E    57              push    edi
00404C0F    8BFE            mov     edi, esi
00404C11    F2:AE           repne   scas byte ptr es:[edi]
00404C13    F7D1            not     ecx
00404C15    49              dec     ecx
00404C16    83F9 14         cmp     ecx, 14
00404C19    74 07           je      short 00404C22                   必须跳


这里为判断第1,2位相加是否为10
00404C22    8A06            mov     al, byte ptr [esi]
00404C24    8A4E 01         mov     cl, byte ptr [esi+1]
00404C27    8D5424 0C       lea     edx, dword ptr [esp+C]
00404C2B    32DB            xor     bl, bl
00404C2D    52              push    edx
00404C2E    884424 1C       mov     byte ptr [esp+1C], al
00404C32    885C24 1D       mov     byte ptr [esp+1D], bl
00404C36    884C24 10       mov     byte ptr [esp+10], cl
00404C3A    885C24 11       mov     byte ptr [esp+11], bl
00404C3E    E8 1D090600     call    00465560
00404C43    8BF8            mov     edi, eax
00404C45    8D4424 1C       lea     eax, dword ptr [esp+1C]
00404C49    50              push    eax
00404C4A    E8 11090600     call    00465560
00404C4F    03F8            add     edi, eax
00404C51    83C4 08         add     esp, 8
00404C54    83FF 0A         cmp     edi, 0A
00404C57    74 09           je      short 00404C62                   必须跳

下面的部分为判断注册码的最后两位相加是否为12
00404C62    8A4E 12         mov     cl, byte ptr [esi+12]
00404C65    8A56 13         mov     dl, byte ptr [esi+13]
00404C68    8D4424 0C       lea     eax, dword ptr [esp+C]
00404C6C    884C24 18       mov     byte ptr [esp+18], cl
00404C70    50              push    eax
00404C71    885C24 1D       mov     byte ptr [esp+1D], bl
00404C75    885424 10       mov     byte ptr [esp+10], dl
00404C79    885C24 11       mov     byte ptr [esp+11], bl
00404C7D    E8 DE080600     call    00465560
00404C82    8D4C24 1C       lea     ecx, dword ptr [esp+1C]
00404C86    8BF8            mov     edi, eax
00404C88    51              push    ecx
00404C89    E8 D2080600     call    00465560
00404C8E    03F8            add     edi, eax
00404C90    83C4 08         add     esp, 8
00404C93    83FF 0C         cmp     edi, 0C
00404C96   /74 09           je      short 00404CA1                   必须跳


下面的部分为判断第6位与14位相加是否等于11
00404CA1    8A56 05         mov     dl, byte ptr [esi+5]
00404CA4    8A46 0D         mov     al, byte ptr [esi+D]
00404CA7    8D4C24 0C       lea     ecx, dword ptr [esp+C]
00404CAB    885424 18       mov     byte ptr [esp+18], dl
00404CAF    51              push    ecx
00404CB0    885C24 1D       mov     byte ptr [esp+1D], bl
00404CB4    884424 10       mov     byte ptr [esp+10], al
00404CB8    885C24 11       mov     byte ptr [esp+11], bl
00404CBC    E8 9F080600     call    00465560
00404CC1    8D5424 1C       lea     edx, dword ptr [esp+1C]
00404CC5    8BF8            mov     edi, eax
00404CC7    52              push    edx
00404CC8    E8 93080600     call    00465560
00404CCD    03F8            add     edi, eax
00404CCF    83C4 08         add     esp, 8
00404CD2    83FF 0B         cmp     edi, 0B
00404CD5    74 09           je      short 00404CE0                   必须跳转


下面的部分为判断第13位是否等于R
00404CE0    807E 0C 52      cmp     byte ptr [esi+C], 52
00404CE4    74 09           je      short 00404CEF                   必须跳转

下面部分为判断第15位是否等于3
00404CEF    807E 0E 33      cmp     byte ptr [esi+E], 33
00404CF3    74 09           je      short 00404CFE                   必须跳转

跳转后来到:
00404CFE    8A4E 0F         mov     cl, byte ptr [esi+F]
00404D01    33C0            xor     eax, eax
00404D03    80F9 30         cmp     cl, 30
00404D06    5F              pop     edi
00404D07    5E              pop     esi
00404D08    5B              pop     ebx
00404D09    0F94C0          sete    al                               设置al
00404D0C    83C4 18         add     esp, 18
00404D0F    C3              retn



没有注册只能使用50次,使用次数的判断依据是安装目录下的license.dat,只需要将license.dat的属性改为只读就可以一直使用了!

一个可用的注册码:1934567890abR530gh48

[ 本帖最后由 xinldy 于 2009-12-19 18:30 编辑 ]
PYG19周年生日快乐!
  • TA的每日心情
    开心
    2016-4-29 07:52
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2009-12-20 18:57:31 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-12-20 20:01:56 | 显示全部楼层
    提示: 作者被禁止或删除 内容自动屏蔽
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2023-10-22 12:29
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2009-12-20 20:16:50 | 显示全部楼层
    不错
    不过官方网站也很速度啊
    已经出3.1版本了
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2016-12-5 16:18
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    发表于 2009-12-20 23:01:18 | 显示全部楼层
    恩,呵呵,是出3.1版本了。不知道算法是否还是一样
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

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