破解DLL时间限制

来源:互联网 发布:mac玩英雄联盟国服 编辑:程序博客网 时间:2024/05/01 04:34

由于很需要用一个DLL,担心该DLL有时间限制,而且修改系统之间之后直接变成了过期。无奈之下寻找破解DLL的办法。

        参考了http://hi.baidu.com/goldchocobo/item/5e85f8762dc45f285c1789ce破解某DLL文件完成,最后终于破解了。

        其实还是因为这个DLL的时间限制做得不是很复杂。

        记录一下基本的步骤:

         1.查壳     查壳工具, 发现没有壳

         2. 去壳   没有壳自然就不需要去壳了哦

         3.破解    Ollydbg工具破解。

              1) OllyDbg只支持ASCII文本的查找,用ULTRAEDIT打开脱壳后的XX.DLL文件,找到前面所述的文字(脱壳后在DLL文件中汉字未加密),

              2)将相关中文字统一在16进制模式的右边栏修改为ACSII码. 在OllyDbg中打开调用这个DLL文件的程序A.EXE,它会将相关调用DLL库文件读入内存后,按ALT+E(执行模块),可以看到读入哪些DLL文件,然后选中我们的XX.DLL文件,按右键选择"跟随入口",就到CPU模式下这个XX.DLL文件所在内容窗口.

               3)SO多的代码,怎么找呢?在窗体中按右键选择"搜索"->"字符参考",进可以看到这个DLL里所有能识别的ACSII字符列表哩,很容易就可以看到先前修改的字符串.选中字符串后按右键选择"反汇编中跟随".就可以到那一段了.

              4)找到相关位置后一般会看到MessageBox,我们需要修改的事跳转到执行MessageBox的语句,汇编我也看不懂,连蒙带猜修改该行之前的条件跳转语句,跳转到MessageBox语句之后就可以了。上面那篇文章里提到的方法如下(有一定的参考价值):

                  “读一下10002404 898D E4FCFFFF MOV DWORD PTR SS:[EBP-31C],ECX
1000240A 8B95 D6FCFFFF MOV EDX,DWORD PTR SS:[EBP-32A]
10002410 81E2 FFFF0000 AND EDX,0FFFF
10002416 8995 C8FCFFFF MOV DWORD PTR SS:[EBP-338],EDX
1000241C 81BD E4FCFFFF D5>CMP DWORD PTR SS:[EBP-31C],7D5
10002426 75 20 JNZ SHORT SGIP.10002441
10002428 83BD C8FCFFFF 09 CMP DWORD PTR SS:[EBP-338],9
1000242F EB 24 JMP SHORT SGIP.10002455
10002431 C685 A4F5FFFF 00 MOV BYTE PTR SS:[EBP-A5C],0
10002438 75 1B JNZ SHORT SGIP.10002441
1000243A C685 A4F5FFFF 01 MOV BYTE PTR SS:[EBP-A5C],1
10002441 6A 00 PUSH 0
10002443 68 7CC00010 PUSH SGIP.1000C07C
10002448 68 84C00010 PUSH SGIP.1000C084 ; ASCII "chocobo chocob chocobo chocob chocob chocobo chocob chocobo chocobo chocobo cho"
1000244D 6A 00 PUSH 0
1000244F FF15 44910010 CALL DWORD PTR DS:[<&USER32.MessageBoxA>>; USER32.MessageBoxA
10002455 B0 01 MOV AL,1
10002457 8BE5 MOV ESP,EBP
10002459 5D POP EBP
1000245A C3 RETN 看到10002426和10002438两段是跳转到弹出注册失败的"函数"区域内.将其改成其他语句,比如JMP SHORT SGIP.10002455,即可.运行之后PASS.同理修改判断文件是否被修改的部分.JMP的操作码为EB 最后一步,就是修改DLL文件了,用ULTRAEDIT打开,查找81 BD E4 FC FF FF ,定好位之后,将原来的75 20 改成EB 20即可,存盘,运行EXE文件调用,PASS,这时已无时间限制,并且不会判断DLL文件是否被修改过哩. ”

                   刚开始以为只要把导致弹框的那句随便改一下就好了,结果导致了什么ESI数据保存错误的问题,所以还是要根据实际情况来判断,不过应该一般来说就是要跳转到MessageBox的下一行就可以了,就像上例中跳转到10002455一样。

                   非常感谢这位前辈提供的方法!!!

备注:OllyDbg的版本是1.09C中文版,有更新的版本但是这个版本才跟上面方法中提到的步骤相同,其他版本的有些地方东西找不到,花了10个积分才下下来,无偿共享了。

原创粉丝点击