探索黑客技术攻防,实战研究与安全创新

导航菜单

限制破解从零起步

这次危险漫步给大家说说对于时间限制的突破!

还是先来看几个API吧。

GetFileTime得文件建立,最后访问,修改时间

GetLocaITime得当前本地时间

GetSystemTime 得当前系统时间

GetTickCount得windows启动至现时毫秒

我们直接来看看我们的第一个CrackMe,运行一下,可以看到CrackMe提示说“程序将在运行10秒后自动关闭”,然后过了10秒,程序就真的关闭了,现在我们用OD加载这个CrackMe,然后在OD的命令行插件里输入命令“BP GetTickCount”后回车来下一个断点,然后直接按F9让程序运行起来,然后OD就中断那地方了,我们按Ctrl F9让OD执行到返回,然后我们就可以看到如

这段代码很简单,首先调用GetTickCount函数来获取操作系统启动到现在所经过的毫秒数,再减去内存403374处的数据,这里储存的是软件开始时调用GetTickCount函数获取的操作系统启动所经过的毫秒数,做完减法以后的结果就是从软件运行到当前所经历的毫秒数,然后除以1000,就是把毫秒数转化为秒数,然后和10比较,如果不是10就跳走,如果是10就调用ExitProcess函数来退出进程,既然这样的话,那我们只要修改0040106A处的选择跳转就可以了,我们不希望程序调用ExitProcess函数,那我们就要让0040106A处的跳转必须实现,所以我们只要把jnz改为jmp就可以了,我们双击这一句代码,就会弹出反汇编窗口,我们把这里的代码改为jmp short 00401074,然后点“汇编”按钮,再点“取消”,然后在汇编窗口中点鼠标右键,选择“复制到可执行文件”——“所有修改”,然后会有提示“要把选中的内容复制到可执行文件中么?”,这里选择“全都复制”,接着就会弹出一个窗口,在弹出的窗口中再点鼠标右键,选择“保存文件”,然后我们运行一下保存后的文件看看,可以看到运行的时候已经超过了12秒,但程序还是没有结束,破解成功了!

下面我们再来看一个实例,这个软件叫BasslineWinPopUp,我们行动,看以看到提示,说“You have 50days to evaluatethis software! Wouldsee the registrationinformation in WWW?“,意思就是说这个软件我们只能用50天,问我们是不是要注册!按“确定”后界面,我们把系统时候往后调若干天,然后重启软件,可以看到提示,说“This program has expired! Would see the registration information in www?”意思是说软件已经过期了。

我们用Od加载软件,对前面所说的几个API都下个断点,然后按F9让程序在OD中运行起来,然后程序就会被中断在GetLocalTime函数处,按Ctrl+F9执行到返回,然后一路F8来跟踪,当OD执行到00402692处的时候弹出了提示框,这里是一句call在这一句按F2下断,然后Ctrl+F2重新加载程序,F9运行,当中断到刚才这句的时候我们按F7跟进去。

~RLQD`H`0AV1]9B3GO6~5QR.jpg

我们可以看到这里的代码就是用来判断的了,我们看这里最后一句的选择跳转语句,只有天数大于等于0的时候软件才可以用,所以我们必须要使这里的跳转实现,这样的话我们只要把这一句修改为绝对跳转jmp就可以了,修改后保存,然后运行一次,他提示我们还有-134可用。

本文内容所提及均为本地测试或经过目标授权同意,旨在提供教育和研究信息,内容已去除关键敏感信息和代码,以防止被恶意利用。文章内提及的漏洞均已修复,作者不鼓励或支持任何形式的非法破解行为。