Acrobat Reader 5.1中文版+windows2000 sp0+softice 网上下载的pdf文件经常打开后只能阅读,不能打印、拷贝等功能,前几天幸好有一个这样的文件急需打印,破解过程如下: 1。打开softice; 2。打开Acrobat Reader,打开要阅读的文件; 3。ctrl+d调出softice,下断bpx Enablemenuitem 4。在reader中点击菜单file; 5。F12三次,往回找可以看到以下代码; :00414E71 55 push ebp :00414E72 8BEC mov ebp, esp :00414E74 A130F17400 mov eax, dword ptr [0074F130] :00414E79 56 push esi :00414E7A 8BF1 mov esi, ecx :00414E7C 8B8818020000 mov ecx, dword ptr [eax+00000218] :00414E82 85C9 test ecx, ecx :00414E84 741A je 00414EA0 :00414E86 FF7514 push [ebp+14] :00414E89 8B01 mov eax, dword ptr [ecx] :00414E8B FF7510 push [ebp+10] :00414E8E FF750C push [ebp+0C] :00414E91 FF7508 push [ebp+08]6。清除所有断点,然后在此下断,F5执行,可以看到push的内容,其是菜单的id号,执行多次,一直到push 1784(print。。。的ID号) :00414E94 FF500C call [eax+0C]7。进入该调用,将进入如下的程序。 ----------------------------------------------------------------- :00411233 55 push ebp :00411234 8BEC mov ebp, esp :00411236 8D4508 lea eax, dword ptr [ebp+08] :00411239 56 push esi :0041123A 50 push eax :0041123B 83C138 add ecx, 00000038 :0041123E FF7508 push [ebp+08] :00411241 E853450000 call 004157998。该程序得到Reader每个菜单的属性表(权且先这么命名)
仔细分析程序415799可以得到Acrobat Reader中很重要的数据结构。Acrobat Reader中将所有的菜单分为11个组,即 MenuGroup *MenuGroupArray[11];针对不同的菜单项具体在哪个组中可以通过ID号来计算。MenuGroupNo=(ID>>4) mod 11;
而MenuGroup是一个链表: struct MenuGroup{ MenuGroup * PrevMenuGroup; DWORD MenuGroupNo; DWORD MenuID; MenuAttribute * MenuAttrPtr; } 知道了某个菜单的ID号,最重要的数据是MenuAttrPtr,知道了这个值就可以找到每个菜单项对应的属性以及该菜单对应的执行程序。
:00411246 8BF0 mov esi, eaxesi=*MenuAttrPtr :00411248 F7DE neg esi :0041124A 1BF6 sbb esi, esi :0041124C 237508 and esi, dword ptr [ebp+08] :0041124F 85F6 test esi, esi :00411251 7440 je 00411293 :00411253 57 push edi :00411254 8B7D10 mov edi, dword ptr [ebp+10] :00411257 85FF test edi, edi :00411259 742B je 00411286 :0041125B 53 push ebx :0041125C 8B1F mov ebx, dword ptr [edi] :0041125E 56 push esi;ESI=*MenuAttrPtr :0041125F E8387A0700 call 00488C9C9。该程序的调用返回结果直接影响下面的EnableMenuItem,跟进去; :00411264 0FB7C0 movzx eax, ax :00411267 59 pop ecx
上一篇:Windows XP四则最新应用技巧
下一篇:为网站设立分级审查的奇招妙技
|