PDFzilla v1.2全程破解
目标程序: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,也就是说,之前如果输入正确的注册码,就会给这几个地址
上一篇: linux下mysql多实例的安装