飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 20625|回复: 36

[原创] Word to PDF 6.4 试用版破解分析

[复制链接]

该用户从未签到

发表于 2009-2-6 19:17:10 | 显示全部楼层 |阅读模式
【破文标题】Word to PDF 6.4 破解分析
【破文作者】风球[PYG]
【作者主页】http://Bbs.ChinaPYG.Com
【破解日期】2009年02月05日
【破解工具】PEiD0.94、OllyDbg
【原版下载】http://www.abdio.com/download.html
【软件简介】Word to PDF 是一个易用和强大的PDF转换器。
你能转换MS Word, RTF, HTML, Htm, XML, TEXT,CSS 和 IMAGES到PDF. Word to PDF(DOC), Word to PDF(RTF),Word to PDF Converter, Html to PDF(Html,Htm), XML TO PDF(Xml), Text to PDF(Txt), CSS to PDF(Css), PNG to PDF, Jpg to PDF, Jpeg to PDF, Bmp to PDF, Gif to PDF.

【前言闲语】
这个软件的已经有兄弟写过破解分析文章了,这里我也写一下我的不同处理方法,去掉此试用版软件的限制。
这个软件使用感觉一般般,转换速度还不错,就是需要设置好页边距,否则WORD转出来就格式就完全变样了,还是Adobe PDF专业版好用一点。
本破解分析方法也适用于该网站其它软件,但该网站系列软件多为试用版软件,功能也不完善,当是练练手吧。

【破解过程】
查壳并脱壳:使用ESP定律快速脱掉其ASPack的压缩外壳.
OD载入后采用查找字符串的方式查找关键,字符串都比较明显,如"UnRegistered"、" 7-DAY Trial"等:
可以看到经典的比较CALL,上下看一下代码就可以注意到 [ebx+3D8] 这个点
004DD126     |.  55                 push ebp
004DD127     |.  68 AAD14D00        push DUMP.004DD1AA
004DD12C     |.  64:FF30            push dword ptr fs:[eax]
004DD12F     |.  64:8920            mov dword ptr fs:[eax],esp
004DD132     |.  8D83 D8030000      lea eax,dword ptr ds:[ebx+3D8]             ;  重点[ebx+3D8],后面会多处出现它的比较
004DD138     |.  BA C0D14D00        mov edx,DUMP.004DD1C0                      ;  预存注册标志"1"入内存[ebx+3D8]
004DD13D     |.  E8 5A74F2FF        call DUMP.0040459C
004DD142     |.  BA 64AD0C00        mov edx,0CAD64
004DD147     |.  8BC3               mov eax,ebx
004DD149     |.  E8 32FDFFFF        call DUMP.004DCE80
004DD14E     |.  68 CCD14D00        push DUMP.004DD1CC                         ;  ASCII "Word to PDF 6.4 - UnRegistered ("004DD153     |.  FFB3 C8030000      push dword ptr ds:[ebx+3C8]
004DD159     |.  68 F8D14D00        push DUMP.004DD1F8
004DD15E     |.  8D45 FC            lea eax,dword ptr ss:[ebp-4]
004DD161     |.  BA 03000000        mov edx,3
004DD166     |.  E8 5D77F2FF        call DUMP.004048C8
004DD16B     |.  8B55 FC            mov edx,dword ptr ss:[ebp-4]
004DD16E     |.  8BC3               mov eax,ebx
004DD170     |.  E8 1F17F8FF        call DUMP.0045E894
004DD175     |.  8B83 D8030000      mov eax,dword ptr ds:[ebx+3D8]             ;  开始比较了!!!
004DD17B     |.  BA 04D24D00        mov edx,DUMP.004DD204                      ;  未注册标志值“0”
004DD180     |.  E8 CF77F2FF        call DUMP.00404954                         ;  经典比较CALL
004DD185     |.  75 0D              jnz short DUMP.004DD194

004DD187     |.  33D2               xor edx,edx
004DD189     |.  8B83 60030000      mov eax,dword ptr ds:[ebx+360]
004DD18F     |.  E8 F015F8FF        call DUMP.0045E784
004DD194     |>  33C0               xor eax,eax
004DD196     |.  5A                 pop edx
004DD197     |.  59                 pop ecx
004DD198     |.  59                 pop ecx
004DD199     |.  64:8910            mov dword ptr fs:[eax],edx
004DD19C     |.  68 B1D14D00        push DUMP.004DD1B1
004DD1A1     |>  8D45 FC            lea eax,dword ptr ss:[ebp-4]
004DD1A4     |.  E8 9F73F2FF        call DUMP.00404548
004DD1A9     \.  C3                 retn

由上面分析可以进行修改,在数据窗口Ctrl+G到 004DD1C0 处将值31改为30(即由“1”改为“0”,强迫性让其每次比较都相等),
1.JPG
至此程序启动闪屏窗口已经显示为已注册了,购买窗口NAG也不会弹出了。
image001.jpg

让试用版保持去掉在试用期内,并去掉其标题 “UnRegistered (6 days remaining)”的字样:
查找字符ASCII " Your 7-DAY Trial Period Has Expired! "来到这里,下面这段代码没细分析,猜着来修改的
004DCEEE     |.  BA 8CD04D00        mov edx,DUMP.004DD08C                      ;  ASCII "wordwinf20.dll"
004DCEF3     |.  E8 1879F2FF        call DUMP.00404810
004DCEF8     |.  8B45 F8            mov eax,dword ptr ss:[ebp-8]
004DCEFB     |.  E8 54C5F2FF        call DUMP.00409454
004DCF00     |.  84C0               test al,al
004DCF02     |.  74 79              je short DUMP.004DCF7D                      //让其跳到下面,修改为JMP
004DCF04     |.  6A 02              push 2
004DCF06     |.  8B4D F8            mov ecx,dword ptr ss:[ebp-8]
............省略了大部分代码............
004DCF71     |.  BA B0D04D00        mov edx,DUMP.004DD0B0
004DCF76     |.  E8 6576F2FF        call DUMP.004045E0
004DCF7B     |.  EB 66              jmp short DUMP.004DCFE3
004DCF7D     |>  BE B4D04D00        mov esi,DUMP.004DD0B4                      ;  ASCII "01000011010111011010101111010"  跳到这里,估计这个是日期初始值
004DCF82     |.  8D7D D9            lea edi,dword ptr ss:[ebp-27]
004DCF85     |.  B9 07000000        mov ecx,7                                   //赋值7天?猜的
004DCF8A     |.  F3:A5              rep movs dword ptr es:[edi],dword ptr ds:[>
004DCF8C     |.  66:A5              movs word ptr es:[edi],word ptr ds:[esi]
............省略了大部分代码............
004DCFE6     |.  E8 B9BFF2FF        call DUMP.00408FA4
004DCFEB     |.  BA 07000000        mov edx,7                               //下面的代码是使用天数的比较
004DCFF0     |.  2BD0               sub edx,eax                            //相减
004DCFF2     |.  8993 CC030000      mov dword ptr ds:[ebx+3CC],edx        //经过上面的JMP,EDX就固定等于6了
004DCFF8     |.  8BB3 CC030000      mov esi,dword ptr ds:[ebx+3CC]
004DCFFE     |.  83FE 07            cmp esi,7
004DD001     |.  7D 04              jge short DUMP.004DD007
004DD003     |.  85F6               test esi,esi
004DD005     |.  7F 12              jg short DUMP.004DD019
004DD007     |>  8D83 C8030000      lea eax,dword ptr ds:[ebx+3C8]
004DD00D     |.  BA DCD04D00        mov edx,DUMP.004DD0DC                      ;  ASCII " Your 7-DAY Trial Period Has Expired! "
004DD012     |.  E8 8575F2FF        call DUMP.0040459C
004DD017     |.  EB 23              jmp short DUMP.004DD03C
004DD019     |>  8D95 CCFEFFFF      lea edx,dword ptr ss:[ebp-134]
004DD01F     |.  8BC6               mov eax,esi
004DD021     |.  E8 42BEF2FF        call DUMP.00408E68
004DD026     |.  8B95 CCFEFFFF      mov edx,dword ptr ss:[ebp-134]       //剩余使用天数
004DD02C     |.  8D83 C8030000      lea eax,dword ptr ds:[ebx+3C8]
004DD032     |.  B9 0CD14D00        mov ecx,DUMP.004DD10C                      ;  ASCII " days remaining"
004DD037     |.  E8 1878F2FF        call DUMP.00404854

至此固定7天试用期完成,然后清爽一下标题 “UnRegistered (6 days remaining)”去掉未注册字样:
image002.jpg

最后一步:去水印
下断点 bp CreateFileA ,注意观察堆栈的变化,F9多次后出现如下信息:
0012E02C   033A236C  /CALL 到 CreateFileA 来自 tx13_bmp.033A2366
0012E030   03361FC4  |FileName = "C:\windows\system32\worddf9.bmp"
0012E034   80000000  |Access = GENERIC_READ
0012E038   00000001  |ShareMode = FILE_SHARE_READ

ALT+F9返回进行F8单步跟踪分析:
01DC2362      .  8B55 CC            mov edx,dword ptr ss:[ebp-34]                    ; |
01DC2365      .  52                 push edx                                         ; |FileName
01DC2366      .  FF15 8480DC01      call dword ptr ds:[<&KERNEL32.CreateFileA>]      ; \CreateFileA
01DC236C      .  8945 DC            mov dword ptr ss:[ebp-24],eax                    ;  返回到这里
01DC236F      .  83F8 FF            cmp eax,-1                                       ;  单步往下跟踪分析
01DC2372      .  0F84 33040000      je tx13_bmp.01DC27AB
01DC2378      .  56                 push esi                                         ; /pFileSizeHigh => NULL
01DC2379      .  50                 push eax                                         ; |hFile
01DC237A      .  FF15 7480DC01      call dword ptr ds:[<&KERNEL32.GetFileSize>]      ; \GetFileSize
............省略了大部分代码............
01DC26DC      .  75 06              jnz short tx13_bmp.01DC26E4
01DC26DE      .  56                 push esi
01DC26DF      .  E8 3CEFFFFF        call tx13_bmp.01DC1620
01DC26E4      >  8BC6               mov eax,esi
01DC26E6      .  E8 45FBFFFF        call tx13_bmp.01DC2230                           ;  写水印的CALL?跟进修改
01DC26EB      .  8BD8               mov ebx,eax                                      ;  EAX必须为1
01DC26ED      .  895D E4            mov dword ptr ss:[ebp-1C],ebx                    ;  若EBX=1时,水印消除
01DC26F0      .  85DB               test ebx,ebx
01DC26F2      .  0F85 B3000000      jnz tx13_bmp.01DC27AB
............省略了大部分代码............
01DC2846      .  FF15 9081DC01      call dword ptr ds:[<&USER32.ShowCursor>]         ; \ShowCursor
01DC284C      .  8B45 D0            mov eax,dword ptr ss:[ebp-30]
01DC284F      .  85C0               test eax,eax
01DC2851      .  74 07              je short tx13_bmp.01DC285A
01DC2853      .  50                 push eax                                         ; /hCursor
01DC2854      .  FF15 8C81DC01      call dword ptr ds:[<&USER32.SetCursor>]          ; \SetCursor
01DC285A      >  66:8BC3            mov ax,bx                                        ;  AX<-BX,所以上面须让EBX=1
01DC285D      .  8B4D F0            mov ecx,dword ptr ss:[ebp-10]
01DC2860      .  64:890D 00000000   mov dword ptr fs:[0],ecx
01DC2867      .  5F                 pop edi
01DC2868      .  5E                 pop esi
01DC2869      .  5B                 pop ebx
01DC286A      .  8BE5               mov esp,ebp
01DC286C      .  5D                 pop ebp
01DC286D      .  C2 1000            retn 10

跟进 call tx13_bmp.01DC2230 进行修改尝试:
01DC2230         56                 push esi                                         ;  修改为mov eax,1
01DC2231         57                 push edi                                         ;  修改为retn
01DC2232         33FF               xor edi,edi
01DC2234         57                 push edi
01DC2235         8BF0               mov esi,eax
01DC2237     |.  FF15 6080DC01      call dword ptr ds:[<&GDI32.CreateMetaFileA>]     ; \CreateMetaFileA
01DC223D     |.  85C0               test eax,eax
01DC223F     |.  8946 20            mov dword ptr ds:[esi+20],eax
01DC2242     |.  75 08              jnz short tx13_bmp.01DC224C
01DC2244     |.  5F                 pop edi
01DC2245     |.  B8 BF140000        mov eax,14BF
01DC224A     |.  5E                 pop esi
01DC224B     |.  C3                 retn
01DC224C     |>  6A 03              push 3                                           ; /StretchMode = COLORONCOLOR
01DC224E     |.  50                 push eax                                         ; |hDC
01DC224F     |.  FF15 3C80DC01      call dword ptr ds:[<&GDI32.SetStretchBltMode>]   ; \SetStretchBltMode
01DC2255     |.  8B46 2C            mov eax,dword ptr ds:[esi+2C]
01DC2258     |.  85C0               test eax,eax
01DC225A     |.  75 05              jnz short tx13_bmp.01DC2261
01DC225C     |.  E8 3FFFFFFF        call tx13_bmp.01DC21A0
01DC2261     |>  8B46 2C            mov eax,dword ptr ds:[esi+2C]
01DC2264     |.  85C0               test eax,eax
01DC2266     |.  74 17              je short tx13_bmp.01DC227F
01DC2268     |.  6A 01              push 1                                           ; /ForceBackground = TRUE
01DC226A     |.  50                 push eax                                         ; |hPalette
01DC226B     |.  8B46 20            mov eax,dword ptr ds:[esi+20]                    ; |
01DC226E     |.  50                 push eax                                         ; |hDC
01DC226F     |.  FF15 5480DC01      call dword ptr ds:[<&GDI32.SelectPalette>]       ; \SelectPalette
01DC2275     |.  8B4E 20            mov ecx,dword ptr ds:[esi+20]
01DC2278     |.  51                 push ecx                                         ; /hDC
01DC2279     |.  FF15 3880DC01      call dword ptr ds:[<&GDI32.RealizePalette>]      ; \RealizePalette
01DC227F     |>  8BC7               mov eax,edi
01DC2281     |.  5F                 pop edi
01DC2282     |.  5E                 pop esi
01DC2283     \.  C3                 retn

修改后保存,这个文件是 C:\WINDOWS\system32\tx13_bmp.flt,测试WORD转PDF已无水印,软件试用限制破解完毕!!!
image003.jpg


【破解总结】
1、主程序显示已注册: 004DD1C0     31     ----> 修改为30
2、主程序固定试用期:
004DCF02     |.  74 79              je short DUMP.004DCF7D    ----> 修改为JMP 004DCF7D
3、主程序标题信息修改(省略...可以不修改)
4、去转换水印 - 目标文件:C:\WINDOWS\system32\tx13_bmp.flt
01DC2230         56                 push esi       //修改为mov eax,1
01DC2231         57                 push edi      // 修改为retn


【SMC补丁】
用 DUP 对原主程序制作SMC破解补丁:
008023B0      /75 08                jnz short WORDTO.008023BA                      ; JMP 008025A5跳到SMC代码空间
008023B2      |B8 01000000          mov eax,1
008023B7      |C2 0C00              retn 0C
008023BA      \68 A4F74D00          push WORDTO.004DF7A4
008023BF       C3                   retn

SMC补丁代码如下:
008025A5      /75 08                jnz short WordToPD.008025AF                      ; 还原代码
008025A7      |B8 01000000          mov eax,1
008025AC      |C2 0C00              retn 0C
008025AF      \C705 26D04D00 BA0000>mov dword ptr ds:[4DD026],0BA                    ; 主程序标题信息修改
008025B9       C605 2AD04D00 00     mov byte ptr ds:[4DD02A],0
008025C0       C605 2BD04D00 90     mov byte ptr ds:[4DD02B],90
008025C7       C705 0CD14D00 B7E7C7>mov dword ptr ds:[4DD10C],F2C7E7B7
008025D1       C705 10D14D00 5B5059>mov dword ptr ds:[4DD110],4759505B
008025DB       C605 14D14D00 5D     mov byte ptr ds:[4DD114],5D
008025E2       C605 15D14D00 00     mov byte ptr ds:[4DD115],0
008025E9       C605 16D14D00 00     mov byte ptr ds:[4DD116],0
008025F0       C705 17D14D00 000000>mov dword ptr ds:[4DD117],0
008025FA       C705 DED14D00 526567>mov dword ptr ds:[4DD1DE],69676552
00802604       C705 E2D14D00 737465>mov dword ptr ds:[4DD1E2],72657473
0080260E       C705 E6D14D00 656420>mov dword ptr ds:[4DD1E6],74206465
00802618       C605 EAD14D00 6F     mov byte ptr ds:[4DD1EA],6F
0080261F       C605 EBD14D00 3A     mov byte ptr ds:[4DD1EB],3A
00802626       C605 F8D14D00 00     mov byte ptr ds:[4DD1F8],0
0080262D       C605 02CF4D00 EB     mov byte ptr ds:[4DCF02],0EB                     ; 固定试用期
00802634       C605 C0D14D00 30     mov byte ptr ds:[4DD1C0],30                      ; 已注册
0080263B     ^ E9 64FDFFFF          jmp WordToPD.008023BA                            ; 返回

二进制代码如下:
C7 05 26 D0 4D 00 BA 00 00 00 C6 05 2A D0 4D 00 00 C6 05 2B D0 4D 00 90 C7 05 0C D1 4D 00 B7 E7
C7 F2 C7 05 10 D1 4D 00 5B 50 59 47 C6 05 14 D1 4D 00 5D C6 05 15 D1 4D 00 00 C6 05 16 D1 4D 00
00 C7 05 17 D1 4D 00 00 00 00 00 C7 05 DE D1 4D 00 52 65 67 69 C7 05 E2 D1 4D 00 73 74 65 72 C7
05 E6 D1 4D 00 65 64 20 74 C6 05 EA D1 4D 00 6F C6 05 EB D1 4D 00 3A C6 05 F8 D1 4D 00 00 C6 05
02 CF 4D 00 EB C6 05 C0 D1 4D 00 30 E9 7A FD FF FF

【版权声明】 本文原创于P.Y.G官方论坛,纯属技术交流, 转载请注明作者并保持文章的完整, 谢谢! @ 20090205


word.to.pdf.6.4.smc破解补丁.rar (32.65 KB, 下载次数: 43)

[ 本帖最后由 风球 于 2009-2-6 20:20 编辑 ]
PYG19周年生日快乐!

该用户从未签到

 楼主| 发表于 2009-2-6 19:26:16 | 显示全部楼层
试分析该网站P DF Converter Pro v7.6 加密方法类似,只是试用版缺少大部分功能。
ASCII "The trial version couldn't convert doc, ,xls,ppt,dwf,dwg,psd,txt and eps into png.Please register!"
且PDF功能也没有 Adobe PDF 和Solid PDF 好用,不建议深入研究了。
screenshot.jpg
PYG19周年生日快乐!
  • TA的每日心情
    郁闷
    2021-10-2 23:26
  • 签到天数: 46 天

    [LV.5]常住居民I

    发表于 2009-2-6 20:53:30 | 显示全部楼层
    晕!好贴没人回!建议受精!/:good /:good /:good
    PYG19周年生日快乐!
  • TA的每日心情
    奋斗
    2018-3-5 11:37
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2009-2-7 11:53:36 | 显示全部楼层
    学习了,很详细!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-2-8 13:44:04 | 显示全部楼层
    学习学习哦···谢谢楼主分享了啊
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-2-8 15:53:25 | 显示全部楼层
    写的很仔细,看的很舒服
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-3-3 18:15:53 | 显示全部楼层
    写的好详细~ 学习中~~ 谢谢哒~~ /:018
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-3-3 18:40:33 | 显示全部楼层
    确实是很好的文章~不过我怎么没看到水印呢?~楼主的方法挺好的~没人顶我顶~
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-3-3 18:56:47 | 显示全部楼层
    方法很巧妙,学习!
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2009-3-3 22:42:03 | 显示全部楼层
    学习了,很详细!
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表