hancom word的破解
文杰5.0Evalution For OEM(60日)限制版破解心得
Author:Softworm Date:Dec/08/2000
使用Linux也有一段时间了,但一直没找到一个软件能够正确打开编辑Word97文档的.
让我很恼火.后来发现有一个韩国的软件公司做了一个hancom word,自称能打开DOC文件.
兴匆匆地跑到蓝点(我用的是BP1.0)网站上下了一个.结果刚一起动,就提示该软件已过了
两个月的试用期,我按了一下ok,就直接退了出去,气死我了!把时间调回两个月前,嘿,能
用了,能正确显示txt文件之类的简单东东,试着打开一个DOC文档,不正常了.但这是我在
蓝点下用过的第一个能输入中文并正确显示的字处理软件.每次使用前调整一下时间可真
不是很舒服,市面上倒是有得卖,但想想看,Linux下的东西还要这么贵(比我买的蓝点贵),
还是国外的(想想金山, 唉......).干脆想个法子把它给破了!
破解软件对我以前只是说说而已,哪有那么深厚的功力呢?不过以前还学过一点点汇
编,C也用得比较熟了,加上又弄了一篇破解mtv的文章,就开始动手了.
大学时看过一个同学用softice破解ACDsee2.3,呵呵,就是那个sender,27168,不过
他是又重新破了一次,没用现成的.实际上原理也不复杂,就是想象一下软件的运行流程,
再用工具跟踪验证,找到关键代码所在,再用自己的代码替换它(这是对我这个例子而言,
不是做什么注册机).好了,闲话少说,开工吧!
1.破解环境:蓝点Linux1.0,vim5.5,gdb4.17,objdump,KDE1.2,Konsole.
Win98,UltraEdit8.0(没找到Linux下好用的HEX编辑器).
2.破解步骤:
(1) 在Linux下. 执行
cd /usr/hwpx/shlib
gdb hwpw //hwpw为破解对象
(2) 估计一下,应该是程序起动后去检查了一下时间.如果是这样,那就有可能
是一个函数做的这件事.所以先查查有没有什么可疑的函数:
info functions
(3) 哇!好多啊!一个个的浏览过去,发现了GetLocalTime, DestroyWindow,
PrintMsg这三个我觉得有问题的函数.记下来,函数名前面的地址一定不要
记错了!
b GetLocalTime
b DestroyWindow
b PrintMsg
run
(4) 程序在一个GetLocalTime()调用处停了下来,赶紧查看一下栈:
bt
没看出什么名堂,那就继续:
c
又停在了一个DestroyWindow()调用处, 再看一下栈:
bt
看到了一个HncCloseLogo()调用,显然是关毕起动画面窗口的.
看来大方向没错.还没到查时间处.那就继续:
c
嘿,又停在了GetLocalTime()处,看一下栈:
bt
看到了什么没有?CheckDueTime()啊,这个函数调用了
SaveFTPProgessProc(),而这个Save...又调用了GetLoalTime().
赶快查字典,看看Due是何意,懂了吧,这里应该是重大突破.暂且记下,
继续运行:
c
(5) 又这般弄几下,就出现了那个讨厌的过期提示窗口.好了,没有再发现什么吧?那
可以得出,在出现这个窗口之前就进行了时间检查.并且是在第二次停在
GetLocalTime()函数调用处时进行的.这时的调用者是开始我们就怀疑的
CheckDueTime()函数.那就是它了!
(6) 先退出gdb
quit(y)
再进来,
b CheckDueTime
run
停在了CheckDueTime()处,看看它做了些什么:
disass
到了这里,我看了看那些怪异的符号(久违了),有点眼花,直接返回看看先:
q(return)
return(y)
c
quit
(7) 哈哈!进去了,没什么讨厌的时间限制了.并且可以得出,CheckDueTime函数真的
没做什么别的事,除了比较时间.我知道,只要让CheckDueTime不做事就行了.
那就清掉它的函数体呗.进栈出栈的代码保留就行了.当然也可以把它上层的函
数调用它的话去掉,但我觉得不如对CheckDueTime本身动手好,这样几乎没什么
危险.
(8) 接下来我就简单说说如何修改可执行码.
先得到CheckDueTime()的反汇编结果:
objdump -d hwpw > hwpw.asm
vim hwpw.asm
这是一个36M的文件,等等吧.
在vim中查找串\"81e3c0f\",这是CheckDueTime的地址,你前面就应记下的.
找到了么?好!把这个函数的代码拷出来,这样小一点嘛,记住,从e8到76 00
就行了.把这段代码存盘为check.asm.把hwpw和check.asm拷到Windows
的文件系统中,重启.(注:如果你在Linux下有什么HEX编辑器,就不必这么麻
烦了.)
cp check.asm hwpw /mnt/d/temp
shutdown -r now
(9) 进了Win98,启动UEdit,调入hwpw和check.asm.在hwpw中查找check.asm中的机
器码,查找时,你输入模式串越长越好,这样就不会弄错地方.找到了么?好!
现在把它们全改为90(即nop),从e8到76 00.存盘,退出Win98.
(10)回到Linux,把改过的文件mv至/usr/hwpx/shlib/,记住:先备份原来的hwpw.
输入./hwpw,怎么样?成功了吗?如果不行,将备份恢复即可重新开始. 仔细一点
永远没错!
呼----,从来没写过这种文章,看了不少. 学了这么久电脑,真觉得在这个行业只
要你肯动手,没什么搞不定的.
声明一下,文章版权归Softworm所有.
您如果照着文中的做出了问题请不要找我负责,我一很忙,二也不会负责.
但我保证文中的内容完全属实, 命令请info gdb.
还可参考水木清华的I007(阿健)的Linux下破解实战,讲得很好!
Ok, be happy!
有任何问题请发信至[email protected]
转载请保留该声明,谢谢!
All rights reserved. Copyright c 2000 Softworm.
发布人:softworm 来自: