首页
社区
课程
招聘
破解一个分词程序dll的时间限制[求个邀请码]
发表于: 2009-12-9 18:57 7718

破解一个分词程序dll的时间限制[求个邀请码]

2009-12-9 18:57
7718
破解一个分词程序的时间限制
源程序下载地址: 32位的2009的共享版
http://ictclas.org/Down_share.html
http://ictclas.org/packetcount.asp?PacketId=38&url=down/ictclas2009/windows_C_32.rar
下载后解压里面有个例子,正常打开是可以分词的。如果系统时间为2010年或以后,启动程序会提示ICTCLAS INIT FAILED!。
根据重复试用的结果,该时间的判断一定在ICTCLAS30.dll上,不然就失去了保护的意义。根据其例程写程序调用dll,通过时间修改确认了这一点。另外该dll对注册表系统文件基本上没有什么操作,无疑为快速破解提供了方便。
好啦,就从这儿开始吧。
先把系统时间修改为2010,然后打开著名的OllyDBG 2.0 汉化版,载入分词的demo系统文件ICTCLAS_demo.exe。通过f7跟踪(注意一定要用f7,不要用f8,不然无法进入dll的领空)。
顺利的的找到:
00408B31  |.  E8 B0B90300   CALL <JMP.&ICTCLAS30.ICTCLAS_Init>       ; Jump to ICTCLAS30.ICTCLAS_Init
从这儿跳转到ICTCLAS30内部。
接下来就要面对繁荣复杂的汇编代码了。老衲猜测该保护应该比较简单,或许就是一个简单的时间判断和跳转,找到其调用系统时间的函数,或许成功已经大半。可惜老衲少林功夫不精,没有找到。
这么简单的东西都做不了,不如撞死算了。
转念一想,既然是初始化失败,其跳转肯定在头部代码中,一条一条找,也不会太麻烦。
于是乎,从进入dll开始,见一个跳转语句就用f2设一个断点,大概设了这么多,看:

100013E9    75 22           JNE SHORT 1000140D
1000142E    74 0B           JE SHORT 1000143B
10001450    74 0B           JE SHORT 1000145D
10001472    74 0B           JE SHORT 1000147F
10001485    75 0F           JNE SHORT 10001496
100014AB    74 0B           JE SHORT 100014B8
100014CD    74 19           JE SHORT 100014E8
100014DF    75 07           JNE SHORT 100014E8
100014FD    74 5B           JE SHORT 1000155A
1000150F    75 49           JNE SHORT 1000155A
10001554    0F84 C40F0000   JE 1000251E
10001593    0F87 B10F0000   JA 1000254A --- 注意,关键跳转在此
10002551    74 1A           JE SHORT 1000256D

然后我把时间修改为2009年,也就是让程序进入正确的流程,直接用f9往后跳,通过与错误流程对比,一下就找到了关键跳转所在 10001593    0F87 B10F0000   JA 1000254A 。
先把时间修改为2010,进入错误的流程,
找到关键跳,把 0F87B10F0000 全部用nop填充,也就是改为909090909090
哈哈,果然程序自动进入正确的流程。阿弥陀佛!愧为爆破,而且有点盲爆的意思。

接下来更简单了,用ultraedit打开ICTCLAS30.dll,找到0F87B10F0000,全部修改为909090909090。

……善哉善哉!(写这种帖子不好,学习研究之用,请勿用于非法用途!)

后续还有个问题,我想破其linux64位的版本,但是不知道linux64位上有什么工具可用,还望高人指点。

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (6)
雪    币: 1632
活跃值: (13)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
OD就能直接保存修改后的文件,不知道为什么要用ultraedit???
2009-12-9 19:02
0
雪    币: 23
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
嗬嗬,我对这东西并不熟悉。连f7,f8的区别也是摸索出来的。误导子弟,sorry先
2009-12-9 22:38
0
雪    币: 18
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
copy to executable里面有
2009-12-9 23:02
0
雪    币: 58
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
楼主蛮强的了,做到你现在的水平也可以了,毕竟有开始了!
2009-12-11 21:25
0
雪    币: 2166
活跃值: (11)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
支持新人,会用UE修改也不错了,
以后记得OD直接可以改就是
2009-12-11 21:48
0
雪    币: 56
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
7
我不发表什么言论 怕误人子弟
2009-12-14 14:27
0
游客
登录 | 注册 方可回帖
返回
//