【破文标题】VeryPDF PDF Editor v2.6 算法分析
【破文作者】tianxj
【作者邮箱】tianxj_2007@126.com
【作者主页】WwW.ChiNaPYG.CoM
【破解工具】PEiD,OD
【破解平台】Windows XP
【软件名称】VeryPDF PDF Editor v2.6
【软件大小】12.75MB
【软件类别】国外软件  
【软件授权】共享版 
【软件语言】英文 
【运行环境】Windows XP/2K
【原版下载】http://verypdf.com/pdf-editor/index.html
【保护方式】注册码
【软件简介】让您方便地打开并修改 PDF 文档内容(文本,图形……)的工具,这个强大的工具令您从此可以直接编辑 PDF 文档的内容、并且可以添加您自己的注释、内容、图

形……到 PDF文档内了。软件对中文支持非常好
【破解声明】我是一只小菜鸟,偶得一点心得,愿与大家分享:)
--------------------------------------------------------------
【破解内容】
--------------------------------------------------------------
**************************************************************
一、运行程序,进行注册,输入错误的注册信息进行检测,有提示信息
**************************************************************
二、用PEiD对pdfeditor.exe查壳,为 UPX 0.89.6 - 1.02 / 1.05 - 1.24 -> Markus & Laszlo
脱壳后为Microsoft Visual C++ 6.0
**************************************************************
三、载入OD,下万能断点

代码:
00409312    68 74474600     push    00464774                         ; //万能断点返回到这里
00409317    E8 44F8FFFF     call    00408B60                         ; //关键CALL,跟进
0040931C    83C4 04         add     esp, 4
0040931F    85C0            test    eax, eax
00409321    0F84 A6000000   je      004093CD                         ; //关键跳转
00409327    6A 40           push    40
00409329    68 B4124600     push    004612B4                         ; ASCII "PDF Editor"
0040932E    68 E41E4600     push    00461EE4                         ; ASCII "Thanks for you purchasing the PDF Editor."
00409333    56              push    esi
00409334    FF15 98F54400   call    dword ptr [<&USER32.MessageBoxA>>; user32.MessageBoxA
==============================================================
00408B60    83EC 30         sub     esp, 30
00408B63    56              push    esi
00408B64    8B7424 38       mov     esi, dword ptr [esp+38]
00408B68    57              push    edi
00408B69    8A06            mov     al, byte ptr [esi]
00408B6B    8A4E 01         mov     cl, byte ptr [esi+1]
00408B6E    8A56 0E         mov     dl, byte ptr [esi+E]
00408B71    884424 14       mov     byte ptr [esp+14], al
00408B75    32C0            xor     al, al
00408B77    884C24 2C       mov     byte ptr [esp+2C], cl
00408B7B    8A4E 0F         mov     cl, byte ptr [esi+F]
00408B7E    884424 15       mov     byte ptr [esp+15], al
00408B82    884424 2D       mov     byte ptr [esp+2D], al
00408B86    884424 21       mov     byte ptr [esp+21], al
00408B8A    884424 09       mov     byte ptr [esp+9], al
00408B8E    8A46 02         mov     al, byte ptr [esi+2]
00408B91    3C 50           cmp     al, 50
00408B93    885424 20       mov     byte ptr [esp+20], dl
00408B97    884C24 08       mov     byte ptr [esp+8], cl
00408B9B    75 57           jnz     short 00408BF4                   ; //注册码第3位不是"P"则挂
00408B9D    8D5424 08       lea     edx, dword ptr [esp+8]
00408BA1    52              push    edx
00408BA2    E8 9C730100     call    0041FF43
00408BA7    8BF8            mov     edi, eax
00408BA9    8D4424 18       lea     eax, dword ptr [esp+18]
00408BAD    50              push    eax
00408BAE    E8 90730100     call    0041FF43
00408BB3    03F8            add     edi, eax
00408BB5    83C4 08         add     esp, 8
00408BB8    83FF 0A         cmp     edi, 0A
00408BBB    75 37           jnz     short 00408BF4                   ; //注册码右边第16位与左边第1位之和不等于0Ah则挂
00408BBD    8D4C24 20       lea     ecx, dword ptr [esp+20]
00408BC1    51              push    ecx
00408BC2    E8 7C730100     call    0041FF43
00408BC7    8D5424 30       lea     edx, dword ptr [esp+30]
00408BCB    8BF8            mov     edi, eax
00408BCD    52              push    edx
00408BCE    E8 70730100     call    0041FF43
00408BD3    03F8            add     edi, eax
00408BD5    83C4 08         add     esp, 8
00408BD8    83FF 0A         cmp     edi, 0A
00408BDB    75 17           jnz     short 00408BF4                   ; //注册码右边第15位与左边第2位之和不等于0Ah则挂
00408BDD    807E 03 44      cmp     byte ptr [esi+3], 44
00408BE1    75 11           jnz     short 00408BF4                   ; //注册码第4位不是"D"则挂
00408BE3    8A4E 05         mov     cl, byte ptr [esi+5]
00408BE6    33C0            xor     eax, eax
00408BE8    80F9 46         cmp     cl, 46                           ; //注册码第6位不是"F"则挂
00408BEB    5F              pop     edi
00408BEC    0F94C0          sete    al
00408BEF    5E              pop     esi
00408BF0    83C4 30         add     esp, 30
00408BF3    C3              retn
00408BF4    5F              pop     edi
00408BF5    33C0            xor     eax, eax
00408BF7    5E              pop     esi
00408BF8    83C4 30         add     esp, 30
00408BFB    C3              retn
**************************************************************  
【破解总结】
--------------------------------------------------------------
【算法总结】
1.注册码与用户名和邮箱名无关
2.注册码第3位必须是"P";第4位必须是"D";第6位必须"F"
3.注册码右边第16位与左边第1位之和等于0Ah;右边第15位与左边第2位之和等于0Ah

一组可用的注册信息:
用户名:tianxj
邮箱名:tianxj_2007@126.com
注册码:12PD5F7890123489

--------------------------------------------------------------
感谢飘云老大、猫老大、Nisy老大以及很多前辈们的学习教程以及所有帮助过我的论坛兄弟姐妹们!谢谢
--------------------------------------------------------------
【版权声明】破文是学习的手记,兴趣是成功的源泉;本破文纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢!