Welcome My Friend

MouseLight

MouseLight:

​ MouseLight是比较强大的软件,如果觉得这个软件有用,请购买正版,发布这个纯属娱乐。

##大致分析

MouseLight

##过程

​ 安装好MouseLight(下载地址:https://pan.baidu.com/s/1zB8MJiqBxNc46MbKUtFluQ),然后运行起来,切到Misc目录下,发现有一栏需要输入注册码,有一栏写着只能使用30天。在输入注册码一栏中随便输入一些字符,然后点击Activate,会出现下图所示的错误

MouseLight

​ 改写系统时间为30天之后,程序不能运行,如下图

MouseLight

​ 使用OD打开mouselight,等待运行之后右键选择中文搜索引擎,选择搜索ASC码

MouseLight

​ 参照上面错误信息,搜索unexplainable,结果如下图:

MouseLight

​ 双击以上字符,进入主程序区,上下查看,发现有很多种情况,会返回不同的情况,如下图所示,会有很多种返回的情况,不一一列举,下图中可以看到success字样,照常理,只要跳转的地方跳转到这里就会直接破解成功。向上翻查函数的起始地址,00404510为起始地址。

MouseLight

​ 使用IDA打开程序,上面查看程序其实地址为00404510

MouseLight

​ 按下F5反汇编其代码发现不能成功,这段是主程序,只能一步步单步调试,继续使用OD调试,从上往下调试,单步到00404696时,没有发生跳转直接进入到错误显示的界面,所以往上一条指令查看

Cmpdword ptr[0x413030], -0x7

​ 发现每一条显示在界面的信息都有和dword ptr[0x413030]这个数据比较的语句,那么直接在堆栈区查找这个地址,然后F8单步调试下来看在哪一个函数里面,堆栈的值发生变化,如下图:

MouseLight

​ 当单步调试到如下图所示的地址时,堆栈信息发生变话,此时使用IDA查看函数功能发现函数有很多判断,根据不同返回值跳转到不同结果,下图所示:

​ 调试至此函数时堆栈信息发生变化

MouseLight

​ 使用IDA查看函数代码:

MouseLight

MouseLight

MouseLight

MouseLight

​ 可以看到,只要返回值为1,最后结果就会显示成功,结合IDA的代码,单步调试OD,一边调试一边看IDA的代码,这样可以清楚的看到汇编的指令运行到哪一步,改完之后运行的结果如下图所示

MouseLight

​ 提示上说需要重新启动程序,但是此时动态调试重新运行程序之前修改的内容会被覆盖为原来指令,所以这里将程序保存下来然后命名为MouseLight1重新运行,发现会跳出这个提示成功的界面但是并没有激活成功,仔细查看之前代码,发现时利用注册表信息来计算的返回值,那么程序中一定存在很关键的判断没有找到,这时候只能通过OD从程序开始调试,并且之前注意力一直在激活的字眼上,上面剩余30天的界面没有去管。此时单步调试

到如下函数时进入到了比较重要的步骤

MouseLight

​ 当单步到这里时,这个函数里面进行了很多计算,并且在这个函数里面有试用剩余天数的提醒,并且还有激活成功的字样,如下图:

MouseLight

​ 单步调下来发现在上图的4043E0处,直接跳过register version字样,这样修改jnz可能会直接激活成功,修改jnz如下图,界面显示激活成功,但是将系统时间改到30天之后,程序依旧不能运行。

MouseLight

查看刚刚跳转指令上面几条指令,发现比较了eax和ecx的值,而eax的值为0x96,ecx的值由0x412CB8决定,运行到这里时0x412CB8的值是0x32,并不是0x96,继续在OD的堆栈区观察值的变化,发现当程序运行到如下图地址时,0x412CB8的值发生了变化

MouseLight

上图指令一条条分析,只要eax值为0x96则会使je触发,但eax的值又由0x40F240决定,从而跳过mouselig.004018D0这个函数,并且412CB8的值也为0x96,使用IDA分析mouselig.004018D0这个函数,如下图,截取这个函数的一部分:

MouseLight

​ 可以看到这个函数是用于计算剩余天数的,所以这个函数跳过去意味着可能会跳过时间限制,查看上面提到的0x40F240地址的值

MouseLight

​ 使用IDA查看之后发现这里值为0x32,将这里的二进制值改为0x96。

MouseLight

​ 运行程序,发现破解成功。将程序保存为MouseLight1.exe,运行程序,将系统时间改为30天之后,发现程序依旧可以运行。但是这之前要将之前的return -7改为return 1。最终结果如下图所示:

MouseLight

总结:IDA反汇编代码配合上OD的汇编指令一步步调试,这种更能理解汇编指令的意思

-------------本文结束-------------

文章作者: Summary
文章链接: http://noblestaspiration.net/2018/08/22/MouseLight/
版权声明:博客所有文章除特别声明外,均采用 CC BY-NC-ND 4.0 许可协议,转载请注明出处!

想要分我一杯羹吗