【破解作者】 solo_lxy
【使用工具】 OD,IDA Pro
【软件名称】 Foxit Phantom 1.0.2.1123
【软件简介】 Foxit Phantom是一个商业级的PDF应用软件,是一个集创建,阅读和编辑PDF为一体的新工具.
【下载地址】 http://www.skycn.com/soft/57351.html
【破解声明】 只是感兴趣,没有其他目的。失误之处敬请赐教!

看雪论坛上TopmenC的一篇关于《Foxit Phantom的完美破解》(http://bbs.pediy.com/showthread.php?t=102691)对Foxit Phantom 1.0.2.1123的破解给我们提供了重要的线索。其中最关键的地方就是在0044DB23位置处将jnz修改为如下:
                    0044DB23 . /E9 89020000 jmp 0044DDB1
                    0044DB28 |90 nop
     原来的jnz指令占6个字节,改后分解为两个指令,在OD中这个改变自动完成,我们只需要按空格键,将jnz该为jmp即可。这样整个软件基本上绝大部分功能都能用了,真的很好用。不过,我还是在使用的过程中发现了有个小瑕疵。

安装完Foxit Phantom 1.0.2.1123后,如果你系统中安装了Office Word,它会自动地在word中添加一个工具栏,通过这个工具栏我们可以直接将word文档转换成pdf格式。以前为了使用这个功能,我好象是要下载安装一个忘了叫什么名字的驱动,现在好了只要安装了Foxit Phantom,阅读、编辑、转换pdf文档一个工具就搞定了。

这时,如果你直接点击转换按钮,还是会出现天数限制对话框,30天的限制时间后你就不能再用了。

过期后,word中的这个工具栏也就自动卸载了。也就是说仅仅对Foxit Phantom主程序做如上的修改并不是很完善。
既然提供了文档转换功能,那按经验,肯定是在系统中安装了虚拟的pdf打印机。我的电脑->控制面板->打印机和传真,果然我的打印机设置页面多了个Foxit Phantom Printer打印机:

为了找出Foxit Phantom安装的虚拟驱动,我随便新建了个test.txt文档,用notepad打开并打印,这时Foxit Phantom会打开主程序,并提示会提醒你:

这里请注意,Foxit Phantom主程序是可以关闭的,并不影响打印。通过上图状态栏的提示我们可以发现,打印机驱动程序代码直接运行在notepad的进程空间中。这时,用OD附加notepad(测试文档:test.txt),ALT+M寻找可以模块,很快发现notepad进程中有个fpmvpr_d的模块,这个很有可能是Foxit Phantom的虚拟打印机驱动。搜索fpmvpr_d文件,发现以下两位置有此文件:C:/WINDOWS/system32/spool/drivers/w32x86/3;C:/WINDOWS/system32/spool/drivers/w32x86/,文件全称fpmvpr_drv.dll。查看文件属性可发现其描述为:Foxit Phantom Printer: Virtual Printer Driver。通过这我们可以断定这个就是我们要找的驱动。不过这里有两个一样名字的文件,只不过储存位置不同。要想知道那个是我们关注的,这里有个最简单快速的办法,在notepad中点击打印选择打印机确定后,分别删除上面两个文件夹中的fpmvpr_drv.dll文件,这样很快知道C:/WINDOWS/system32/spool/drivers/w32x86/3中的fpmvpr_drv.dll正是我们要找的(因为系统不让我们删)。

用Resource Hacker打开fpmvpr_drv.dll,查看对话框资源发现124(16进制7C)号对话框就是我们上面看到的天数限制对话框。用OD加载,查找常量7C,很快就定位到如下代码(通过字符串参考“Sorry,your free trial period for Foxit Phantom has expired! ”同样可以):
10027704 |. 3BC3 cmp eax, ebx
10027706 |. A1 50B10D10 mov eax, dword ptr [100DB150]
1002770B /74 31 je short 1002773E ;改为jmp
1002770D |. |3BC3 cmp eax, ebx
1002770F |74 12 je short 10027723 ; 注意这里的跳转:会弹出过期对话框,程序直接退出,要将这里的je改为jmp (可不改,上面已经跳过了)
10027711 |. |53 push ebx ; /Style
10027712 |. |68 B02F0D10 push 100D2FB0 ; |Title = "Foxit Phantom"
10027717 |. |68 C42E0D10 push 100D2EC4 ; |Text = "Sorry, your free trial period for Foxit Phantom has expired!.
; Please visit the Foxit Phantom site to order it online."
1002771C |. |53 push ebx ; |hOwner
1002771D |. |FF15 84720910 call dword ptr [<&USER32.MessageBoxW>>; /MessageBoxW
10027723 |> |891D 50B10D10 mov dword ptr [100DB150], ebx
10027729 |. |33C0 xor eax, eax
1002772B |. |8B4D F4 mov ecx, dword ptr [ebp-C]
1002772E |. |64:890D 00000>mov dword ptr fs:[0], ecx
10027735 |. |5F pop edi
10027736 |. |5E pop esi
10027737 |. |5B pop ebx
10027738 |. |8BE5 mov esp, ebp
1002773A |. |5D pop ebp
1002773B |. |C2 0C00 retn 0C
1002773E |> /3BC3 cmp eax, ebx
10027740 74 17 je short 10027759 ; 在这里将je改为jmp,跳过下面的对话框
10027742 |. 8B15 40A70D10 mov edx, dword ptr [100DA740]
10027748 |. 68 10710210 push 10027110
1002774D |. 53 push ebx
1002774E |. 6A 7C push 7C ; 注意这里就是弹出还剩下多少天对话框的ID=124=0x7C
10027750 |. 52 push edx
10027751 |. E8 EA9CFDFF call 10001440
10027756 |. 83C4 10 add esp, 10
10027759 |> /891D 50B10D10 mov dword ptr [100DB150], ebx
1002775F |. 885D FC mov byte ptr [ebp-4], bl
10027762 |. 897D EC mov dword ptr [ebp-14], edi
10027765 |> 8B45 08 mov eax, dword ptr [ebp+8]
10027768 |. 8B70 08 mov esi, dword ptr [eax+8]
1002776B |. 8B8E BC070000 mov ecx, dword ptr [esi+7BC]
10027771 |. 3BCB cmp ecx, ebx
10027773 |. 75 5A jnz short 100277CF ;这里如果跳转,就直接退出函数,在这里nop掉jnz
10027775 |. 68 58040000 push 458
1002777A |. E8 F52E0000 call 1002A674
1002777F |. 8BC8 mov ecx, eax
10027781 |. 83C4 04 add esp, 4
10027784 |. 894D 08 mov dword ptr [ebp+8], ecx
10027787 |. 3BCB cmp ecx, ebx
10027789 |. C645 FC 02 mov byte ptr [ebp-4], 2
1002778D |. 74 09 je short 10027798
1002778F |. E8 9CB0FDFF call 10002830
10027794 |. 8BC8 mov ecx, eax
10027796 |. EB 02 jmp short 1002779A
10027798 |> 33C9 xor ecx, ecx
1002779A |> 56 push esi ; /Arg1
1002779B |. 885D FC mov byte ptr [ebp-4], bl ; |
1002779E |. 898E BC070000 mov dword ptr [esi+7BC], ecx ; |
100277A4 |. E8 F7C2FDFF call 10003AA0 ; /fpmvpr_d.10003AA0
100277A9 |. 8B4D 10 mov ecx, dword ptr [ebp+10]
100277AC |. 8B55 0C mov edx, dword ptr [ebp+C]
100277AF |. 51 push ecx ; /Arg2
100277B0 |. 8B8E BC070000 mov ecx, dword ptr [esi+7BC] ; |
100277B6 |. 52 push edx ; |Arg1
100277B7 |. E8 34C7FDFF call 10003EF0 ; /fpmvpr_d.10003EF0 ; 开启一个线程,转换pdf
100277BC |. 8B4D F4 mov ecx, dword ptr [ebp-C]
100277BF |. 64:890D 00000>mov dword ptr fs:[0], ecx
100277C6 |. 5F pop edi
100277C7 |. 5E pop esi
100277C8 |. 5B pop ebx
100277C9 |. 8BE5 mov esp, ebp
100277CB |. 5D pop ebp
100277CC |. C2 0C00 retn 0C
100277CF |> 8B7D 10 mov edi, dword ptr [ebp+10]
100277D2 |. 3BFB cmp edi, ebx
100277D4 |. 74 40 je short 10027816
100277D6 |. E8 B5B5FDFF call 10002D90
100277DB |. 8B8E BC070000 mov ecx, dword ptr [esi+7BC]
100277E1 |. 56 push esi ; /Arg1
100277E2 |. E8 B9C2FDFF call 10003AA0 ; /fpmvpr_d.10003AA0
100277E7 |. 8B86 BC070000 mov eax, dword ptr [esi+7BC]
100277ED |. 8B4D 0C mov ecx, dword ptr [ebp+C]
100277F0 |. 57 push edi ; /Arg2
100277F1 |. 51 push ecx ; |Arg1
100277F2 |. 8998 A0010000 mov dword ptr [eax+1A0], ebx ; |
100277F8 |. 8B8E BC070000 mov ecx, dword ptr [esi+7BC] ; |
100277FE |. E8 EDC6FDFF call 10003EF0 ; /fpmvpr_d.10003EF0
10027803 |. 8B4D F4 mov ecx, dword ptr [ebp-C]
10027806 |. 64:890D 00000>mov dword ptr fs:[0], ecx
1002780D |. 5F pop edi
1002780E |. 5E pop esi
1002780F |. 5B pop ebx
10027810 |. 8BE5 mov esp, ebp
10027812 |. 5D pop ebp
10027813 |. C2 0C00 retn 0C

上面的反汇编代码中,我已经做了关键注释,破解该驱动可以做如下修改:
                    1、1002770B 将je改为jmp
                    2、10027740 将je改为jmp
                    3、10027773 将jnz改为nop

通过如上修改,基本上我想要的功能算是全了。

上面的代码分析,其实我在做的时候主要使用的还是IDA Pro,通过IDA Pro反汇编出来的代码还是比OD方面看多了。不过使用IDA Pro,不太好查找UNICODE字符串参考,所以辅助使用了OD。

这里有个疑问,还请知道的认识颠簸。通过如上分析我们知道打印的时候使用了fpmvpr_drv.dll,也就是说fpmvpr_drv.dll存在于你用于打印的程序空间中,那么如何才能用OD动态调试fpmvpr_drv.dll能,我在破解的时候发现,只要一用OD附加,再执行打印,OD就直接死了。各位有办法的话,请指教一二,谢谢。

这段时间的使用,发现Foxit Phantom真的是很好用,比Adobe Reader要小,要快同时可编辑pdf稳当,支持多种格式到pdf的转换,作为一般用户,有这个软件,处理阅读pdf文档的确足够。
我这里有全部修改的破解文件,有需要的可以E-mail我,其实看了上面的解释,改动也不多,只有两个文件共4处补丁。

关于《Foxit Phantom的完美破解》的一点补充——打印驱动破解相关推荐

  1. 【转】福昕幻影(Foxit Phantom)

    福昕幻影(Foxit Phantom) 软件简介: Foxit Phantom 是一个商业级的PDF应用软件,是一个集创建,阅读和编辑PDF为一体的新工具.注意它并不是一个免费软件,售价达129美元. ...

  2. Foxit Reader以及Foxit Phantom如何设置页面固定大小

    1:用过Foxit Reader以及Foxit Phantom的都知道,当左边有标签的,点击目标标签的时候,pdf的页面大小会改变, 本来我们希望按100%的比例显示,结果它非要给我们按150%的比例 ...

  3. Android逆向之旅---动态方式破解apk终极篇 加固apk破解方式

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 一.前言 ...

  4. IDM All Products全系列破解UltraEditUltraCompareUEStudioUltraFTPUltraFinder全部最新版产品破解补丁及注册机补丁破解

     IDM All Products全系列破解UltraEditUltraCompareUEStudioUltraFTPUltraFinder全部最新版产品破解补丁及注册机补丁破解 IDM All ...

  5. Endpoint Antivirus破解版|ESET Endpoint Antivirus中文破解版(附激活授权文件)下载 v7.1.2045.5

    点击下载来源:Endpoint Antivirus破解版|ESET Endpoint Antivirus中文破解版(附激活授权文件)下载 v7.1.2045.5 ESET Endpoint Antiv ...

  6. Android逆向之旅---动态方式破解apk终极篇(加固apk破解方式)

    一.前言 今天总算迎来了破解系列的最后一篇文章了,之前的两篇文章分别为: 第一篇:如何使用Eclipse动态调试smali源码 第二篇:如何使用IDA动态调试SO文件 现在要说的就是最后一篇了,如何应 ...

  7. 关于使用TestDriven.Net 2.0的一点补充

    关于使用TestDriven.Net 2.0的一点补充                                                    电子科技大学软件学院03级02班 周银辉 ...

  8. [转载]Navicat12.1系列破解教程,Navicat12.1.16破解亲测有效!!

    [转载: 烟灰哥是传说]Navicat12.1系列破解教程,Navicat12.1.16破解亲测有效!! 2019.2.26月补充: 因CSDN在线更新下载资源比较麻烦,所以,改用baidu网盘免费提 ...

  9. PowerDesigner 15及破解补丁_PowerDesigner 12.5及破解补丁_PowerDesigner破解版_PowerDesigner下载

    PowerDesign是Sybase推出的主打数据库设计工具.PowerDesign致力于采用基于Entiry-Relation的数据模型,分别从概念数据模型(Conceptual Data Mode ...

最新文章

  1. 如何在文件夹中运行cmd命令行
  2. shinyapps安装
  3. CCNA 2 chapter
  4. python之operator操作符函数
  5. 利用js实现文件上传
  6. axture工具栏使用
  7. amoeba mysql_Amoeba介绍及Amoeba和mysql proxy有区别
  8. 鸡得传染性鼻炎怎么治疗 鸡打喷嚏脸肿喂什么药
  9. java计算指定日期的上个月
  10. Premiere 抠像与合成
  11. svn冲突问题详解 SVN版本冲突解决详解
  12. STM32F411RET6的定时器和STM32F103ZET6定时器比较
  13. 多智能体系统的概念与结构
  14. 语言与区域设置ID (Language ID、Locales ID / LCID)
  15. 渗透测试-完整渗透流程(二.漏洞扫描和利用)
  16. excel 导入数据,xxe 注入 poi 3.15
  17. 30. 主频和时钟配置实验
  18. ebpf中的percpu map的注意事项与剖析
  19. (附源码)springboot+mysql+基于Java的学生请销假审批管理系统的设计与实现 毕业设计130939
  20. 【C语言每日一题】验证尼科彻斯定理

热门文章

  1. showdoc私有部署-数据迁移-服务器迁移
  2. apachebench_使用ApacheBench对PHP应用进行压力测试
  3. 考研科目计算机系统结构,计算机系统结构
  4. SRIO IP Core license for VC709 ethenet 40/50G subsystem IP core license for VCU118
  5. OsChina开发地图工具一览
  6. [创业故事]清风明月我 与谁同坐--我的创业故事-2
  7. python 生成 知乎粉丝数据报告 【简单上手100行代码】
  8. 福建师范大学计算机科学系,福建师范大学数学与计算机科学学院-福建师范大学数学与信息学院.PDF...
  9. JavaFX配置问题及解决措施:报错“缺少JavaFX组件”
  10. 【机器人学】3-RUU-delta并联机器人正运动学、逆运动学和微分运动学