五步暴力拆解Word to PDF(去NAG+去时间限制+去水印+转换文件提示试用版...)
本帖最后由 freewold 于 2011-4-28 10:23 编辑五步暴力拆解Word to PDF(去NAG+去时间限制+去水印+转换文件提示试用版...)【文章标题】: 五步暴力拆解Word to PDF(去NAG+去时间限制+去水印+转换文件提示试用版...)【文章作者】: freewold【作者邮箱】: freewold @126.com【作者主页】: 【软件名称】: Word to PDF 7.8【下载地址】: http://www.skycn.com/soft/44098.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运行软件后发现,这是一个 试用软件,根本没有提示输入用户名和注册码的地方,我晕,算法分析无门 ~_-!!!由于这软件太好用了,准备暴力拆解,看能不能把它变相为无功能限制的免费版。后来发现了可行性,必须要突破其各种限制了。我们需要解决的问题有
1、脱壳
2、去注册NAG
3、去时间限制
4、去未注册字符
5、去水印限制挺繁琐的,但也非常有趣,需要准备的工具有PEdi, DEDE, OD, C32ASM,PE Explorer等,开工!
=================== 第一步:脱壳 ==================这一步非常简单,ASPack 2.12 -> Alexey Solodovnikov 压缩壳,想怎么脱就怎么脱。
=================== 第二步:去注册NAG =============每次启动都会先出现一个Splash窗口,显示“UnRegistered”字样,需要把Splash窗口干掉。搜索“UnRegistered”004E0A9F
0F85 D7000000 JNZ 004E0B7C
// NOP004E0AA5
.
A1 7C2E4E00
MOV EAX,DWORD PTR DS:004E0AAA
.
8B00
MOV EAX,DWORD PTR DS:004E0AAC
.
8B80 FC020000 MOV EAX,DWORD PTR DS:004E0AB2
.
BA B40B4E00
MOV EDX,004E0BB4
Registered ;
004E0A9F
0F85 D7000000 JNZ 004E0B7C修改为:004E0A9F
/0F85 00000000 JNZ 004E0AA5就可以实现把不显示NAG窗口了。
=================== 第三步:去时间限制 =============程序运行后发现主窗口标题栏有“……UnRegistered (6 days remaining)”等字样,明显是利用了时间比较来计算使用天数。这里有两种可能。一种是同时获得系统当前时间 和 自身文件时间,进行相减运算得出使用天数另一种是同可能把程序安装时的时间保存在某文件或注册表中,然后用当前时间减去它就得出已使用天数。但无论用哪种方法,到达这个算法过程最简便的方法是 查ASCII “days remaining”字样,定位到004DA8FA
|.
68 17B74D00
PUSH 004DB717004DA8FF
|.
64:FF30
PUSH DWORD PTR FS:004DA902
|.
64:8920
MOV DWORD PTR FS:,ESP004DA905
|.
8BC3
MOV EAX,EBX004DA907
E8 34FFFFFF
CALL 004DA840
计算使用天数CALL004DA90C
|.
8D45 F8
LEA EAX,DWORD PTR SS:004DA90F
|.
E8 DC9AF2FF
CALL 004043F0复制代码Delphi程序反汇编出来的程序就是简洁明了,比VB程序容易理解多啦 ~~~ I Love Delphi!!明显程序是通过读取系统目录下一个叫wordwinf20.dll的文件的创建时间,调用了
<JMP.&kernel32.FileTimeToLocalFileTime>
<JMP.&kernel32.FileTimeToDosDateTime>
<JMP.&kernel32.FileTimeToDosDateTime>系列函数来计算出已经使用的天数。
004DA907
E8 34FFFFFF
CALL 004DA840
计算使用天数CAL把这个CALL
NOP填充掉就可以了复制代码保存起来看看效果,把日期改成2010年看看有没有提示过期??果然,显示:“未注册”字样..证明时限给搞定了。
=================== 第四步:去未注册字符 =============我们目的是要变为破解免费版本,当然绝对不能出现类似“未注册”之类的讨厌字眼,必须把它去掉。用DEDE找到激活主窗体的事件代码处下断:004DA8DC
/.
55
PUSH EBP运行来到:004DACED
|. /0F84 29040000 JE 004DB11C
004DACF3
|. |8B83 1C040000 MOV EAX,DWORD PTR DS:004DACF9
|. |E8 FE14FDFF
CALL 004AC1FC004DACFE
|. |83F8 06
CMP EAX,6
---------------------------
004DACED
|. /0F84 29040000 JE 004DB11C修改为:004DACED
|. /0F84 29040000 JMP 004DB11C来到:004DB13A
|.
FF2485 41B14D>JMP DWORD PTR DS:004DB141
|.
5DB14D00
DD WordtoPD.004DB15D
004DB145
|.
F5B14D00
DD WordtoPD.004DB1F5004DB149
|.
93B24D00
DD WordtoPD.004DB293004DB14D
|.
31B34D00
DD WordtoPD.004DB331004DB151
|.
CFB34D00
DD WordtoPD.004DB3CF004DB155
|.
6DB44D00
DD WordtoPD.004DB46D004DB159
|.
0BB54D00
DD WordtoPD.004DB50B004DB15D
|>
68 88B84D00
PUSH 004DB888 --------------------------------------004DB13A
|.
FF2485 41B14D>JMP DWORD PTR DS:修改为:004DB13A
|.
FF2485 41B14D>JMP 004DB15D往下走到:004DB1A9
|.
FFB5 40FFFFFF PUSH DWORD PTR SS: 这里出现“UnRegistered004DB1AF
|.
68 BCB84D00
PUSH 004DB8BC004DB1B4
|.
8D95 3CFFFFFF LEA EDX,DWORD PTR SS:--------------------------------------004DB1A9
|.
FFB5 40FFFFFF PUSH DWORD PTR SS:修改为:004DB1A9
|.
FFB5 40FFFFFF PUSH 4E0BB4004E0AB2
.
BA B40B4E00
MOV EDX,004E0BB4
;
Registered“Registered“可以自己修改:我修改为:”--已注册—“
===================== 第五步:去水印及转换文件提示试用版================讲了这么多,这才是最重要,也是困难的一步了。由于这是个试用版,在生成PDF文件时,总会插入一个提示未注册的背景图片,非常令人讨厌。如果这一步不搞定,前面做那么多都没有任何意义。还是第一次弄水印,没有任何经验,但判断可能是用了某个图片文件作背景引入到生成的PDF文件中,因此可能用到
004DD378
/$
55
PUSH EBP这里是打水印的地方,去除的方法很简单。004DD3AE
/0F84 44010000 JE 004DD4F8004DD3B4
|. |BA 8C000000
MOV EDX,8C004DD3B9
|. |8B9E 48040000 MOV EBX,DWORD PTR DS:---------中间代码省略004DD781
|> \33C0
XOR EAX,EAX-----------------------------------------004DD3AE
/0F84 44010000 JE 004DD4F8修改为直接跳到004DD781
|> \33C0
XOR EAX,EAX这句,这样就直接跳过了打水印的地方及转换文件提示试用版。至此手工。--------------------------------------------------------------------------------破解动画:http://www.52pojie.cn/thread-88917-1-1.html 【版权声明】: 转载请注明作者并保持文章的完整, 谢谢!
2011年04月27日 12:56:46
说的很抽象,看不明白啊 写的比较粗糙,需要自己去调试一下才有感觉。 水印那里好像讲得最少了{:1_926:} 近来学习一下,支持楼主的分享 以前在PYG写的文章? 路过支持个,汇编菜鸟!~~ 楼主发下软件用用吗