欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  网络运营

PDFzilla v1.2全程破解

程序员文章站 2022-03-31 09:37:26
目标程序:pdfzilla.exe (v1.2)下载网址:www.pdfzilla.com调试程序:OD、PEid操作系统:XP SP3 之前一直用PDFZILLA 1.0这个版本的PDF文...

目标程序:pdfzilla.exe (v1.2)
下载网址:www.pdfzilla.com
调试程序:OD、PEid
操作系统:XP SP3

之前一直用PDFZILLA 1.0这个版本的PDF文件转换软件,可以将PDF格式文件批量转换成TXT、图片、DOC、HTML等,很好用,一般我都直接转成图片放手机里看书用。前几天的一本三百多页的扫描书PDF文件无损转换后居然一张图片就要2MB多,太大了,手机打开太慢,2700*3600的分辨率也用不着,怎么办?想到这个软件可能有更新的版本可以控制输出文件大小的,到了www.pdfzilla.com下载最新版的,果然有了控制DPI的参数,1.2版的,拿来试试破解看看,反正是老外的软件,不损中国软件作者的利益,呵呵。
先查壳,VB的?没壳?这么厚道?姑且认为老外很厚道吧。直接打开软件,点REGISTER,弹出个网页,直接让输注册码,估计注册名就是机器码了,没显示,随便输个假码,弹出信息“invaild serial code”,吐血身亡!应该是“invalid”才对,老外英语需要我来教他么?丢资本主义国家的人!继续。直接查字符串,VB的自然找UNICODE,查找invaild(无语的拼写),找到了这句话,跟进。

007BF331    FF15 1C114000   call    dword ptr [<&MSVBVM60.__vbaStrCm>; MSVBVM60.__vbaStrCmp
007BF337    85C0            test    eax, eax
007BF339    0F85 C1000000   jnz     007BF400
007BF33F    C745 FC 1700000>mov     dword ptr [ebp-4], 17
007BF346    C785 68FFFFFF 0>mov     dword ptr [ebp-98], 80020004
007BF350    C785 60FFFFFF 0>mov     dword ptr [ebp-A0], 0A
007BF35A    C785 78FFFFFF 0>mov     dword ptr [ebp-88], 80020004
007BF364    C785 70FFFFFF 0>mov     dword ptr [ebp-90], 0A
007BF36E    C785 48FFFFFF 0>mov     dword ptr [ebp-B8], 0055DA08     ; invaild
007BF378    C785 40FFFFFF 0>mov     dword ptr [ebp-C0], 8
007BF382    8D95 40FFFFFF   lea     edx, dword ptr [ebp-C0]
007BF388    8D4D 80         lea     ecx, dword ptr [ebp-80]
007BF38B    FF15 54124000   call    dword ptr [<&MSVBVM60.__vbaVarDu>; MSVBVM60.__vbaVarDup
007BF391    C785 58FFFFFF A>mov     dword ptr [ebp-A8], 0055D7A0     ; invaild serial code.

 

在007BF391这行,上面007BF339行有个条件跳转,再上面是个判断,如果EAX不为零就跳,正好可以跳过错误信息这行,先直接将JNZ改JZ试试。不知道这软件有几次验证,没壳的话估计会在验证上做文章。果然,改了后还是出错误信息,算了,跟跟试试吧,把原先更改恢复。
在007BF339下BP,F8跟,直接来到这里

007BF400    C745 FC 1A00000>mov     dword ptr [ebp-4], 1A
007BF407    66:837D C4 FF   cmp     word ptr [ebp-3C], 0FFFF
007BF40C    0F85 E7030000   jnz     007BF7F9
007BF412    66:837D CC FF   cmp     word ptr [ebp-34], 0FFFF
007BF417    0F85 DC030000   jnz     007BF7F9
007BF41D    66:837D C0 FF   cmp     word ptr [ebp-40], 0FFFF
007BF422    0F85 D1030000   jnz     007BF7F9
007BF428    66:837D C8 FF   cmp     word ptr [ebp-38], 0FFFF
007BF42D    0F85 C6030000   jnz     007BF7F9
007BF433    C745 FC 1B00000>mov     dword ptr [ebp-4], 1B
007BF43A    833D F4CB7F00 0>cmp     dword ptr [7FCBF4], 0
007BF441    75 1C           jnz     short 007BF45F
007BF443    68 F4CB7F00     push    007FCBF4
007BF448    68 38B85500     push    0055B838

大家看到了,共有四次JNZ转向007BF7F9这一个地点,看看转到哪里

007BF7F9    C745 FC 2300000>mov     dword ptr [ebp-4], 23
007BF800    C785 68FFFFFF 0>mov     dword ptr [ebp-98], 80020004
007BF80A    C785 60FFFFFF 0>mov     dword ptr [ebp-A0], 0A
007BF814    C785 78FFFFFF 0>mov     dword ptr [ebp-88], 80020004
007BF81E    C785 70FFFFFF 0>mov     dword ptr [ebp-90], 0A
007BF828    C785 48FFFFFF 0>mov     dword ptr [ebp-B8], 0055DA08     ; invaild
007BF832    C785 40FFFFFF 0>mov     dword ptr [ebp-C0], 8
007BF83C    8D95 40FFFFFF   lea     edx, dword ptr [ebp-C0]
007BF842    8D4D 80         lea     ecx, dword ptr [ebp-80]
007BF845    FF15 54124000   call    dword ptr [<&MSVBVM60.__vbaVarDu>; MSVBVM60.__vbaVarDup
007BF84B    C785 58FFFFFF A>mov     dword ptr [ebp-A8], 0055D7A0     ; invaild serial code.
007BF855    C785 50FFFFFF 0>mov     dword ptr [ebp-B0], 8
007BF85F    8D95 50FFFFFF   lea     edx, dword ptr [ebp-B0]
007BF865    8D4D 90         lea     ecx, dword ptr [ebp-70]
007BF868    FF15 54124000   call    dword ptr [<&MSVBVM60.__vbaVarDu>; MSVBVM60.__vbaVarDup

果然无耻,这才是真正的错误输出点,也就是说,之前的四次JNZ任何一次有问题就会玩儿完。回到原先四个JNZ。

007BF400    C745 FC 1A00000>mov     dword ptr [ebp-4], 1A
007BF407    66:837D C4 FF   cmp     word ptr [ebp-3C], 0FFFF
007BF40C    0F85 E7030000   jnz     007BF7F9
007BF412    66:837D CC FF   cmp     word ptr [ebp-34], 0FFFF
007BF417    0F85 DC030000   jnz     007BF7F9
007BF41D    66:837D C0 FF   cmp     word ptr [ebp-40], 0FFFF
007BF422    0F85 D1030000   jnz     007BF7F9
007BF428    66:837D C8 FF   cmp     word ptr [ebp-38], 0FFFF
007BF42D    0F85 C6030000   jnz     007BF7F9
007BF433    C745 FC 1B00000>mov     dword ptr [ebp-4], 1B
007BF43A    833D F4CB7F00 0>cmp     dword ptr [7FCBF4], 0
007BF441    75 1C           jnz     short 007BF45F
007BF443    68 F4CB7F00     push    007FCBF4
007BF448    68 38B85500     push    0055B838

四个堆栈的地址,每次都和0FFF作比较,若不等就跳(跳了就挂),第一个word ptr [ebp-3C],四个堆栈值都是零,不可能等于0FFF,也就是说,之前如果输入正确的注册码,就会给这几个地址