找回密码
 注册
搜索
热搜: 回贴

某国产Office for Linux的破解,Linux破解,其他平台

2010-1-30 18:32| 发布者: admin| 查看: 159| 评论: 0|原作者: 回梦游仙


某国产Office for Linux的破解,Linux破解,其他平台
2008年06月23日 星期一 下午 11:53
如今Linux的易用性已经越来越强,软件也越来越丰富,其中的Open Office(Star Office的开源项目)就是一个很好用的办公套件,超强的功能,对MS文档的高度兼容性,基本解决了Linux下办公软件的缺口。但由于是鬼佬的东西,中文支持总是差点。(其实Open Office的中文支持并不差,只是配置问题,对我等菜鸟而言,有点无从下手。)也就是这个原因,让国内的XX公司看到了商机,把Open Office的源码拿来,改进改进中文支持,再换个包装,OK,398大洋。要源码?门都没有。也许大家已经知道了这个东东具体是什么玩意儿,呵呵。其主页提供90天试用版本下载,试用期限内无任何限制,但过期之后就无法启动了,可以通过修改系统时间继续使用,但总是不爽,还是破解了罢。其实我并不使用这个东东,只是觉得它的价格黑点,再说,学过点皮毛的破解总是有点手痒,呵呵。废话少说,转入正文。



安装,将时间往后调一年,运行程序,提示“用户您好,本软件试用期已到......”,在其安装目录中的所有文件中搜索该字符串,发现位于soffice.bin文件,确定目标。提取该文件到Windows分区,重启进入Windows,用IDA反汇编之。由于找不到相应版本的String Reference插件,用UE搜索该字符串,确定其物理偏移地址为0x318A0,转换为虚拟地址为0x80798A0,搜索“80798A0”,看何处对它进行了引用,很快发现目标。



.text:0805DFEB push ebx

.text:0805DFEC push esi

.text:0805DFED call ___mi__FRC4DateT0 获取已使用天数的函数

.text:0805DFF2 mov ebx, eax

.text:0805DFF4 add esp, 20h

.text:0805DFF7 cmp ebx, 59h 是否超过90天

.text:0805DFFA jbe loc_805E0C5 没超过跳转,否则NAG QUIT

.text:0805E000 add esp, 0FFFFFFF4h

.text:0805E003 lea ebx, [ebp var_C]

.text:0805E006 push ebx

.text:0805E007 call ___6String

.text:0805E00C

.text:0805E00C loc_805E00C: DATA XREF: .gcc_except_table:08085370 o

.text:0805E00C add esp, 0FFFFFFF8h

.text:0805E00F push offset unk_80798A0 这就是过期信息字符串

.text:0805E014 lea eax, [ebp var_10]

.text:0805E017 push eax

.text:0805E018 mov edi, ebx

.text:0805E01A call ___10ByteStringPCc 估计是弹出消息框的函数



在0805DFFA处执行跳转,看到



.text:0805E0C5 lea eax, [ebx-51h] 使用天数减去0x51

.text:0805E0C8 lea ecx, [ebp var_2AC]

.text:0805E0CE mov [ebp var_2F0], ecx

.text:0805E0D4 lea edx, [ebp var_2A8]

.text:0805E0DA mov [ebp var_2F4], edx

.text:0805E0E0 lea edi, [ebp var_2A4]

.text:0805E0E6 cmp eax, 8 将减运算结果于8比较

.text:0805E0E9 ja loc_805E259 小于则表示即将过期,NAG,但不QUIT

.text:0805E0EF add esp, 0FFFFFFF4h

.text:0805E0F2 push ecx

.text:0805E0F3 call ___6String

.text:0805E0F8

.text:0805E0F8 loc_805E0F8: DATA XREF: .gcc_except_table:080853C4 o

.text:0805E0F8 add esp, 0FFFFFFF8h

.text:0805E0FB push offset unk_8079980 提示即将过期的信息字符串

.text:0805E100 mov ecx, [ebp var_2F4]

.text:0805E106 push ecx

.text:0805E107 call ___10ByteStringPCc



发现其比较依据均来源于0805DFED处函数调用的返回值,并转移到EBX寄存器中。我们只要让修改EBX的赋值就可以了,最简单的办法就是将0805DFF2处mov ebx,eax修改为xor ebx,ebx,让程序认为我们总是只使用一天,免去了修改诸多跳转的麻烦,也不容易落入可能存在的跳转暗桩(该程序保护如此之弱,应该没有暗桩,只是猜测,呵呵)。记下0805DFF2的物理偏移,为0x15FF2,用UE修改89 C3为33 DB,也可在Linux下用KHexEdit等工具修改,保存。重新进入Linux系统,用修改后的文件覆盖原文件。运行程序,不再提示过期,OK,收工。



对了,为了不需每次都进行覆盖工作,可以修改其安装包以一劳永逸。查看setup.ins文件发现soffice.bin文件位于压缩包f_0270中,该文件没有扩展名,但KDE直接认出这是zip包,Linux就是强,呵呵。解开,发现只有soffice.bin一个文件,用zip命令将修改后的文件打包到f_0270,会自动加上.zip扩展名,重命名,覆盖原文件,OK,以后你每次安装的就是正式版了,呵呵。



第一次破解Linux软件,也是第一次写这么长的破解文件,如有不对请大家指正,菜鸟虚心学习。


最新评论

QQ|小黑屋|最新主题|手机版|微赢网络技术论坛 ( 苏ICP备08020429号 )

GMT+8, 2024-9-29 11:41 , Processed in 0.186725 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

返回顶部