xinldy 发表于 2009-12-19 14:55:45

PDF Password Remover V3.0算法分析

【破文标题】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
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 , 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
00404C0E    57            push    edi
00404C0F    8BFE            mov   edi, esi
00404C11    F2:AE         repne   scas byte ptr es:
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
00404C24    8A4E 01         mov   cl, byte ptr
00404C27    8D5424 0C       lea   edx, dword ptr
00404C2B    32DB            xor   bl, bl
00404C2D    52            push    edx
00404C2E    884424 1C       mov   byte ptr , al
00404C32    885C24 1D       mov   byte ptr , bl
00404C36    884C24 10       mov   byte ptr , cl
00404C3A    885C24 11       mov   byte ptr , bl
00404C3E    E8 1D090600   call    00465560
00404C43    8BF8            mov   edi, eax
00404C45    8D4424 1C       lea   eax, dword ptr
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
00404C65    8A56 13         mov   dl, byte ptr
00404C68    8D4424 0C       lea   eax, dword ptr
00404C6C    884C24 18       mov   byte ptr , cl
00404C70    50            push    eax
00404C71    885C24 1D       mov   byte ptr , bl
00404C75    885424 10       mov   byte ptr , dl
00404C79    885C24 11       mov   byte ptr , bl
00404C7D    E8 DE080600   call    00465560
00404C82    8D4C24 1C       lea   ecx, dword ptr
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
00404CA4    8A46 0D         mov   al, byte ptr
00404CA7    8D4C24 0C       lea   ecx, dword ptr
00404CAB    885424 18       mov   byte ptr , dl
00404CAF    51            push    ecx
00404CB0    885C24 1D       mov   byte ptr , bl
00404CB4    884424 10       mov   byte ptr , al
00404CB8    885C24 11       mov   byte ptr , bl
00404CBC    E8 9F080600   call    00465560
00404CC1    8D5424 1C       lea   edx, dword ptr
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 , 52
00404CE4    74 09         je      short 00404CEF                   必须跳转

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

跳转后来到:
00404CFE    8A4E 0F         mov   cl, byte ptr
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 编辑 ]

HDd1145 发表于 2009-12-20 18:57:31

dexianan 发表于 2009-12-20 20:01:56

mswhy 发表于 2009-12-20 20:16:50

不错
不过官方网站也很速度啊
已经出3.1版本了

natyou 发表于 2009-12-20 23:01:18

恩,呵呵,是出3.1版本了。不知道算法是否还是一样
页: [1]
查看完整版本: PDF Password Remover V3.0算法分析