- UID
- 37793
注册时间2007-12-1
阅读权限30
最后登录1970-1-1
龙战于野
该用户从未签到
|
【破文标题】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 编辑 ] |
|