- UID
- 2446
注册时间2005-7-21
阅读权限30
最后登录1970-1-1
龙战于野
该用户从未签到
|
【破文标题】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”,强迫性让其每次比较都相等),
至此程序启动闪屏窗口已经显示为已注册了,购买窗口NAG也不会弹出了。
让试用版保持去掉在试用期内,并去掉其标题 “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)”去掉未注册字样:
最后一步:去水印
下断点 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已无水印,软件试用限制破解完毕!!!
【破解总结】
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 编辑 ] |
|