DLL文件破解时间限制尝试

背景:

最近需要一个PDF转WORD的功能需求,找到了一个dll,但是有时间限制,于是就尝试了以下,利用工具去除该时间限制。

DLL文件:PDF2WORD

工具:

IDA Pro Advanced6.1 (主要用于分析汇编代码的逻辑,找到关键点)

OllyDbg (修改dll中的汇编代码并可以另存为dll)

思路:在DLL的反汇编代码中找出时间判断的位置,跳过该时间判断。

实现:

利用IDA Pro 打开dll文件,该工具可以图形化的展示dll内部各个方法的跳转关系,如下图:

该DLL在超期使用时,会弹出提示,如"Clock Tempering Detected"字样的字符,在IDA中,查找该字符,如下图:

搜索过程是比较漫长的,有经验的朋友就知道,一般这些字符,会有固定的存放位置,在.rdata或.text 区段,如下图

很明显,第一个就是我们要找到的字符串,双击之,进入如下界面

黄色区域的,就是该字符的在程序中的调用地点,想看看他在何处定义的,双击之,如下图

上图已经列出了该字符区域在哪些方法中被调用了,如下图

回到刚才在程序中的调用位置,在IDA中,可以将图形缩小,顺着这个方法,不断的向上找,

找到他是什么时候开始调用这个方法的。如下图:

蓝色方块就是进入提示的地方,绿色方块,有个判断,正确了,就走向能用的线路。

方法名是loc_1000399E,这样就好解决了,不让方法走入他们的父节点。直接跳转到1000399E地址就可以了。

在橙色方块上面那句,jl loc_10003899,改为 jmp loc_1000399E,这样,判断时间的方法就不会走进去了。直接屏蔽了。

开始修改了,此时会发现IDA原来没办法直接保存为dll,能看能改就是不能存,这就需要用到OllyDbg工具了。

在IDA中,鼠标选中 jl loc_10003899 这句话,然后切换到汇编视图

找到了具体的汇编代码,复制这段代码。开始用OllyDbg来修改了。

OllyDbg打开该DLL

鼠标右击,开始搜索二进制文本

找到如下位置(有的时候,会出现同样的地方,这就需要你一个个的判断,是否是那个位置)

双击之,

修改为

点击汇编,修改后的代码

接下来,就要进行保存了

代码区域,选中更改了那两句

在该界面,右击,选择保存,就可以把dll重新输出。

到此为止,该dll的时间限制就去除了,可以更改本机时间测试以下:)

 

posted @ 2012-10-09 14:31  jolboy  阅读(6525)  评论(0编辑  收藏  举报