AP PDF Password Recovery 算法分析
本帖最后由 GCCG 于 2009-11-6 18:04 编辑【文章标题】: AP PDF Password Recovery 算法分析
【软件名称】: AP PDF Password Recovery
【下载地址】: http://www.adultpdf.com/
【加壳方式】: 未加壳
【编写语言】: delphi
【使用工具】: OD+dede
【操作平台】: XP SP3
【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
--------------------------------------------------------------------------------
【软件简介】:
The PDF Password Recovery 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(and copying them into the Clipboard), or adding/changing annotations and form fields. Pdf decrypt is being done instantly. Decrypted file can be opened in any PDF viewer(e.g. Adobe Acrobat Reader)without any restrictions -- i.e. with edit/copy/print functions enabled. All versions of Adobe Acrobat are supported.
The standard security provided by PDF consists of two different methods and two different passwords. A PDF document may be protected by password for opening ('user' password) and the document may also specify operations that should be restricted even when the document is decrypted: printing; copying text and graphics out of the document; modifying the document; and adding or modifying text notes and AcroForm fields (using 'owner' password).
【详细过程】
前几天下载一个PDF文件,被加密了,不能打印、不能复制、不能文字识别、不能快照、而且有背景水印,只能阅读,非常不清晰。
于是在网上搜到一个AP PDF Password Recovery软件,该软件不同于一般的暴力破解pdf 它能瞬间解除pdf的加密限制。
软件需要注册,delphi写的,未加壳,首先用dede载入,找到注册按钮事件地址:00409520
OD载入,在00409520下断,输入假注册码16位(后面有分析):123456789ABCDEFG,断在下面:
00409520/.55 push ebp
00409521|.8BEC mov ebp,esp
00409523|.83C4 C4 add esp,-3C
00409526|.53 push ebx
00409527|.56 push esi
00409528|.57 push edi
00409529|.8BD8 mov ebx,eax
0040952B|.BE E41C4C00 mov esi,AP_PDF_P.004C1CE4
00409530|.8D7D C4 lea edi,
00409533|.B8 A81F4C00 mov eax,AP_PDF_P.004C1FA8
00409538|.E8 878A0A00 call AP_PDF_P.004B1FC4
F8 跟踪,来到
00409554|.E8 53C10700 call AP_PDF_P.004856AC ;取注册码
00409559|.66:C747 10 08>mov word ptr ds:,8
0040955F|.837D FC 00 cmp ,0 ;注册码是否为空
00409563|.74 05 je short AP_PDF_P.0040956A
00409565|.8B4D FC mov ecx,
00409568|.EB 03 jmp short AP_PDF_P.0040956D
0040956A|>8D4E 47 lea ecx,dword ptr ds:
0040956D|>51 push ecx
0040956E|.53 push ebx
0040956F|.E8 50FFFFFF call AP_PDF_P.004094C4 ;注册算法处,F7进入
00409574|.83C4 08 add esp,8
00409577|.3C 01 cmp al,1 ;若al不等于1 注册失败
在0040956F 处F7进入 算法非常简单,如下:
004094C4/$55 push ebp
004094C5|.8BEC mov ebp,esp
004094C7|.53 push ebx
004094C8|.56 push esi
004094C9|.57 push edi
004094CA|.8B5D 0C mov ebx, ;注册码放入EBX
004094CD|.85DB test ebx,ebx ;注册码是否为空
004094CF|.74 0C je short AP_PDF_P.004094DD ;注册码为空则eax置0,并返回,注册失败
004094D1|.53 push ebx
004094D2|.E8 B1870A00 call AP_PDF_P.004B1C88 ;取注册码长度
004094D7|.59 pop ecx
004094D8|.83F8 10 cmp eax,10 ;注册码长度是否为16位
004094DB|.74 04 je short AP_PDF_P.004094E1 ;注册码不是16位 则注册失败
004094DD|>33C0 xor eax,eax
004094DF|.EB 39 jmp short AP_PDF_P.0040951A
004094E1|>0FBE73 06 movsx esi,byte ptr ds: ;第七位的ASCII码值放入ESI
004094E5|.8BC6 mov eax,esi ;第七位的ASCII码值放入EAX
004094E7|.0FBE7B 0E movsx edi,byte ptr ds: ;第十五位的ASCII码值放入EDI
004094EB|.03C7 add eax,edi ;第七位和第十五位的ASCII码值相加后放入EAX
004094ED|.3D 9B000000 cmp eax,9B ;第七位和第十五位的ASCII码值相加后是否等于9B
004094F2|.75 24 jnz short AP_PDF_P.00409518 ;不等于9B 注册失败
004094F4|.8BCE mov ecx,esi ;第七位的ASCII码值放入ECX
004094F6|.2BCF sub ecx,edi ;第七位与第十五位的ASCII码值相减,放入ECX
004094F8|.8BC1 mov eax,ecx ;将相减结果放入EAX
004094FA|.99 cdq ;如果EAX<80000000h 则将EDX置零,否则将FFFFFFFF放入EDX
004094FB|.33C2 xor eax,edx ;将上次相减结果与EDX异或,结果存入EAX
004094FD|.2BC2 sub eax,edx ;异或结果再减去EDX值,放入EAX
004094FF|.83C0 41 add eax,41 ;EAX+41
00409502|.0FBE53 09 movsx edx,byte ptr ds: ;第十位ASCII值放入EDX中
00409506|.3BC2 cmp eax,edx ;比较上次运算结果与EDX是否相等
00409508|.75 0E jnz short AP_PDF_P.00409518 ;不等,则注册失败
0040950A|.8B45 08 mov eax,
0040950D|.C680 34030000>mov byte ptr ds:,1
00409514|.B0 01 mov al,1 ;置al=1
算法总结:
0. 注意以下使用的均为16进制(ASCII也为16进制)
1. 注册码长度应为16位
2. 设Reg7,Reg10,Reg15分别代表注册码的第七、第十、第十五位,ASC()代表取该位注册码的ASCII值,则以上算法可描述为:
ASC(Reg7)+ASC(Reg15)=9B ...............................................①
IF ASC(Reg7)-ASC(Reg15)<80000000h then
EDX=00000000
Else
EDX=FFFFFFFF
End IF
ASC(Reg10)={ Xor EDX}-EDX +41 .....................②
3.只要满足以上 ①、②两个等式,则注册成功。
算法超简单,看过觉得幼稚,莫怪,让各位见笑了。注册机见附件。
--------------------------------------------------------------------------------
【版权声明】: 本文原创于吾爱破解论坛, 转载请注明作者并保持文章的完整, 谢谢!
2009年11月06日 17:43:23 鼓励原创,加精华,再接再厉! 鼓励原创,加精华,再接再厉!
Hmily 发表于 2009-11-6 18:20 http://www.52pojie.cn/images/common/back.gif
多谢老大,头一次的精华,激动中.... 谢谢LZfenxiang 膜拜LZ了 ,谢谢 支持一下原创,同时认真学习~~~~
谢谢分享~~~ 来学习了哈 不知道注册机怎么写,不怎么会哦 太好了,正需要,感谢分享! 谢谢楼主,学习一下
页:
[1]
2