首页 编程 软件学院 查看内容

超简单的时间限制程序破解

2020-4-14 12:38 |来自: 互联网 2575 0

摘要: 许多商业软件设置时间限制,这样客户要想使用其软件就得支付费用获得使用权,因此企业也得以盈利,这也就是程序设置时间限制由来。首先,我们的知道给程序设置时间限制,一般需要计时器,通过系统以及软件开始运行的时间进行计时,本次展示的程序在初始化便是利用SetTimer()这个win32编程的API函数向系 ...
关键词: 函数 计时器 时间 程序 限制 指令 SetTimer 位置 参数 文件

许多商业软件设置时间限制,这样客户要想使用其软件就得支付费用获得使用权,因此企业也得以盈利,这也就是程序设置时间限制由来。

首先,我们的知道给程序设置时间限制,一般需要计时器,通过系统以及软件开始运行的时间进行计时,本次展示的程序在初始化便是利用SetTimer()这个win32编程的API函数向系统申请计时器来记录程序使用时间。


函数原型:

UINT SetTimer{

HWND hWnd, //窗口句柄

UINT nIDEvent, //计时器标识

UINT uElapse, //计时器时间间隔

TIMERPROC lpTimeFunc //回调函数(计时器超时,调用该函数)

};

首先看下源程序,每次开启,时间限制只有20秒



将我们的程序拖入IDA进行分析,在Imports导入窗口中,我们可以看到它使用SetTimer这个函数用作程序的计时器



双击该函数,进入该函数代码段,Ctrl+x进行交叉引用,这里我们开到只有一个位置引用该函数,选择第一个进入该函数被引用的位置



在这里我们可以清晰开到前面4个push指令就是SetTimer这个函数的4个参数,由于是在栈中,数据先入后出,所以先从第4个参数开始.

这里我们就可以想到要想绕过时间限制,就需要跳过调用计时器这个函数即可。即在入栈第一个参数位置004010c6,将push指令修改为jmp指令,跳转位置位于call之后,

即为:jmp 4010d6



将程序拖入Ollydbg中,Ctrl+g搜索004010c6定位到该地址,将push指令修改为jmp 4010d6



随后复制到可执行文件——》选择所有修改——》全部复制——》保存文件

打开我们新修改的文件,可以看到不在有时间限制


参考资料:段刚 《加密与解密》

本文出处: https://www.toutiao.com/a6815111519404032519/
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

最新评论

返回顶部