精华内容
下载资源
问答
  • 软件时间限制的原理

    万次阅读 2016-05-22 15:58:54
    这类软件一般都有时间段的限制,例如试用30天等。当过了共享软件的试用期后,就不予运行。只有向软件作者付费注册之后才能得到一个无时间限制的注册版本。这种保护的实现方式大致如下。

              这类软件一般都有时间段的限制,例如试用30天等。当过了共享软件的试用期后,就不予运行。只有向软件作者付费注册之后才能得到一个无时间限制的注册版本。这种保护的实现方式大致如下。

            首先在安装软件的时候由安装程序取得当前系统日期,或者主程序在第一次运行的时候获得系统日期,并且将其记录在系统中的某个地方;可能记录在注册表的某个不显眼的位置,也可能记录在某个文件或扇区中。这个时间统称为软件的安装日期。

            程序在每次运行的时候都要取得当前系统日期,且将其与记录下来的那个安装日期进行比较,当其差值超过允许的天数(比如30天)时就停止运行。

            可见,这种日期限制的机理很简单。但是在实现的时候,如果对各种情况处理得不够周全,就很容易被绕过,比如在过期之后简单地把机器时间调回去,软件又可以正常使用了。

            如果考虑得比较周全,软件最少要保存两个时间值,一个就是上面所说的安装时间,这个时间可由安装程序在安装软件的时候记录,也可以在软件第一次运行的时候记录(即软件发现该值不存在时就将当前日期作为其值记录下来)。为了增加解密难度,最好把这个时间在不同的地方多存放几份,否则解密者可以通过RegMon、FileMon等监视工具轻易地找到存放该值的地方,然后删除该键值,这样又可以正常使用软件了。

            另外一个时间值就是软件最近一次运行的日期,这是防止用户将机器日期改回去而设的。软件每次退出的时候都要将该日期取出来与当前日期相比较,如果当前日期大于该日期,则用当前日期替换掉该值,否则保持该值不变。同时,软件每次启动的时候要把该值读出来与当前日期进行比较,如果该值大于当前系统日期,则说明用户把机器时间改回去了,可以拒绝运行。

            取得时间的API函数一般有GetSystemTime、GetLocalTime和GetFileTime。软件作者可能不直接使用上面的函数来获得系统时间,比如采用高级语言中封装好的类来操作系统时间等。这些封装好的类实际上也是调用上面的函数。解密者在采用动态跟踪方法破解这种日期限制时,最常用的断点也是这个。

            还用一种比较方便地获得当前系统日期的方法,就是读取需要频繁修改的系统文件(比如Windows注册表文件user.dat、system.dat等)的最后修改日期,利用FileTimeToSystemTime()将其转换为系统日期格式,从而得到当前系统日期。

            需要指出的是,采用日期限制的软件必须能防RegMon、FileMon之类的监视软件,否则很容易被找到日期的存放位置。

    展开全文
  • 软件时间限制怎么解除破解

    千次阅读 2020-08-06 16:52:50
    JavaScript不具有 sleep() 函数,该函数会导致代码在...不幸的是,软件时间限制怎么解除破解setTimeout() 不能像你期望的那样正常工作,这取决于你如何使用它。你可能已经在JavaScript循环中的某个点上试过了,看到 s

    JavaScript不具有 sleep() 函数,该函数会导致代码在恢复执行之前等待指定的时间段。如果需要JavaScript等待,该怎么做呢?
    假设您想将三则消息记录到Javascript控制台,每条消息之间要延迟一秒钟。JavaScript中没有 sleep() 方法,所以你可以尝试使用下一个最好的方法 setTimeout()。
    不幸的是,软件时间限制怎么解除破解setTimeout() 不能像你期望的那样正常工作,这取决于你如何使用它。你可能已经在JavaScript循环中的某个点上试过了,看到 setTimeout() 似乎根本不起作用。
    问题的产生是由于将 setTimeout() 误解为 sleep() 函数,而实际上它是按照自己的一套规则工作的。
    在本文中,我将解释如何使用 setTimeout(),包括如何使用它来制作一个睡眠函数,使JavaScript暂停执行并在连续的代码行之间等待。

    浏览一下 setTimeout() 的文档,它似乎需要一个 "延迟 "参数,以毫秒为单位。
    回到原始问题,您尝试调用 setTimeout(1000) 在两次调用 console.log() 函数之间等待1秒。
    不幸的是 setTimeout() 不能这样工作:
    setTimeout(1000)
    console.log(1)
    setTimeout(1000)
    console.log(2)
    setTimeout(1000)
    console.log(3)

    for (let i = 0; i <= 3; i++) {
    setTimeout(1000)
    console.log(#${i})
    }
    复制代码
    这段代码的结果完全没有延迟,就像 setTimeout() 不存在一样。
    回顾文档,你会发现问题在于实际上第一个参数应该是函数调用,而不是延迟。毕竟,setTimeout() 实际上不是 sleep() 方法。
    你重写代码以将回调函数作为第一个参数并将必需的延迟作为第二个参数:
    setTimeout(() => console.log(1), 1000)
    setTimeout(() => console.log(2), 1000)
    setTimeout(() => console.log(3), 1000)

    for (let i = 0; i <= 3; i++) {
    setTimeout(() => console.log(#${i}), 1000)
    }
    复制代码
    这样一来,三个console.log的日志信息在经过1000ms(1秒)的单次延时后,会一起显示,而不是每次重复调用之间延时1秒的理想效果。
    在讨论如何解决此问题之前,让我们更详细地研究一下 setTimeout() 函数。
    检查setTimeout ()
    你可能已经注意到上面第二个代码片段中使用了箭头函数。这些是必需的,因为你需要将匿名回调函数传递给 setTimeout(),该函数将在超时后运行要执行的代码。
    在匿名函数中,你可以指定在超时时间后执行的任意代码:
    // 使用箭头语法的匿名回调函数。
    setTimeout(() => console.log(“你好!”), 1000)
    // 这等同于使用function关键字
    setTimeout(function() { console.log(“你好!”) }, 1000)
    复制代码
    理论上,你可以只传递函数作为第一个参数,回调函数的参数作为剩余的参数,但对我来说,这似乎从来没有正确的工作:
    // 应该能用,但不能用
    setTimeout(console.log, 1000, “你好”)
    复制代码
    人们使用字符串解决此问题,但是不建议这样做。从字符串执行JavaScript具有安全隐患,因为任何不当行为者都可以运行作为字符串注入的任意代码。
    // 应该没用,但确实有用
    setTimeout(console.log("你好"), 1000)
    复制代码
    那么,为什么在我们的第一组代码示例中 setTimeout() 失败?好像我们在正确使用它,每次都重复了1000ms的延迟。
    原因是 setTimeout() 作为同步代码执行,并且对 setTimeout() 的多次调用均同时运行。每次调用 setTimeout() 都会创建异步代码,该代码将在给定延迟后稍后执行。由于代码段中的每个延迟都是相同的(1000毫秒),因此所有排队的代码将在1秒钟的单个延迟后同时运行。
    如前所述,setTimeout() 实际上不是 sleep() 函数,取而代之的是,它只是将异步代码排入队列以供以后执行。幸运的是,可以使用 setTimeout() 在JavaScript中创建自己的 sleep() 函数。
    如何编写sleep函数
    通过Promises,async 和 await 的功能,您可以编写一个 sleep() 函数,该函数将按预期运行。
    但是,你只能从 async 函数中调用此自定义 sleep() 函数,并且需要将其与 await 关键字一起使用。
    这段代码演示了如何编写一个 sleep() 函数:
    const sleep = (delay) => new Promise((resolve) => setTimeout(resolve, delay))

    const repeatedGreetings = async () => {
    await sleep(1000)
    console.log(1)
    await sleep(1000)
    console.log(2)
    await sleep(1000)
    console.log(3)
    }
    repeatedGreetings()
    复制代码
    此JavaScript sleep() 函数的功能与您预期的完全一样,因为 await 导致代码的同步执行暂停,直到Promise被解决为止。
    一个简单的选择
    另外,你可以在第一次调用 setTimeout() 时指定增加的超时时间。
    以下代码等效于上一个示例:
    setTimeout(() => console.log(1), 1000)
    setTimeout(() => console.log(2), 2000)
    setTimeout(() => console.log(3), 3000)
    复制代码
    使用增加超时是可行的,因为代码是同时执行的,所以指定的回调函数将在同步代码执行的1、2和3秒后执行。
    它会循环运行吗?
    如你所料,以上两种暂停JavaScript执行的选项都可以在循环中正常工作。让我们看两个简单的例子。
    这是使用自定义 sleep() 函数的代码段:
    const sleep = (delay) => new Promise((resolve) => setTimeout(resolve, delay))

    async function repeatGreetingsLoop() {
    for (let i = 0; i <= 5; i++) {
    await sleep(1000)
    console.log(Hello #${i})
    }
    }
    repeatGreetingsLoop()
    复制代码
    这是一个简单的使用增加超时的代码片段:
    for (let i = 0; i <= 5; i++) {
    setTimeout(() => console.log(Hello #${i}), 1000 * i)
    }
    复制代码
    我更喜欢后一种语法,特别是在循环中使用。
    总结
    JavaScript可能没有 sleep() 或 wait() 函数,软件时间限制怎么解除破解但是使用内置的 setTimeout() 函数很容易创建一个JavaScript,只要你谨慎使用它即可。
    就其本身而言,setTimeout() 不能用作 sleep() 函数,但是你可以使用 async 和 await 创建自定义JavaScript sleep() 函数。
    采用不同的方法,可以将交错的(增加的)超时传递给 setTimeout() 来模拟 sleep() 函数。之所以可行,是因为所有对setTimeout() 的调用都是同步执行的,就像JavaScript通常一样。
    希望这可以帮助你在代码中引入一些延迟——仅使用原始JavaScript,而无需外部库或框架。

    展开全文
  • 限制软件使用时间

    万次阅读 2009-05-19 13:57:00
    对于软件产品的试用版来说,限制软件使用是必不可少的。本文介绍如果限制使用时间。 假设软件A可以免费使用3个月,那么要确定的是开始使用时间,结束时间1。确定开始使用时间。如下代码: #include "windows.h"#...

    对于软件产品的试用版来说,限制软件使用是必不可少的。本文介绍如果限制使用时间。

     

    假设软件A可以免费使用3个月,那么要确定的是开始使用时间,结束时间

    1。确定开始使用时间。如下代码:

     

     

    上面的程序用于生成一个out_data.h的头文件,这文件里记录了编译的时间。假设这个程序叫做out_data.exe,那么对了VS工程来说,在工程的配置属性->生成事件->生成前事件->命令行中加out_data.exe。那么每次生成工程的时间就更新out_data.h文件(也即out_data.h里保存的时间都是最新的)。

    2。计算使用的天数(从编译时间到现在的天数)。如下代码,GetOutDay返回天数。如果宏TESTING_VERSION_ON打开,则说明是测试版,不然就是正式版。一般情况下,具体工程要改动一下宏OutDayTest的定义。

     

     

    3。最后将GBOutDayTest();这个宏放在适当的地方。就行了。

    展开全文
  • ida静态分析/破解某软件时间限制

    千次阅读 2013-11-25 19:39:53
    【文章标题】: ida 静态分析/破解某软件时间限制 【文章作者】: kusky 【作者邮箱】: p_168@163.com 【作者主页】: http://diylab.cnblogs.com 【作者QQ号】: 109427716 【软件名称】: 某视频监控软件 ...
    【文章标题】: ida 静态分析/破解某软件的 时间限制
    【文章作者】: kusky
    【作者邮箱】: p_168@163.com
    【作者主页】: http://diylab.cnblogs.com
    【作者QQ号】: 109427716
    【软件名称】: 某视频监控软件
    【软件大小】: 无
    下载地址】: 无
    【加壳方式】: 无
    【保护方式】: 时间限制
    【编写语言】: Borland c++ builder 1999
    【使用工具】: ida pro
    【操作平台】: windows xp
    【作者声明】: 只是感兴趣,没有其他目的。失误之处敬请诸位大侠赐教!
    --------------------------------------------------------------------------------
    【详细过程】
    本文是本菜鸟对 ida 静态分析的一次实践。
    与过去的静态分析利器 W32DASM相比, ida pro 最强悍的功能是库函数的识别。IDA PRO 用 library function, thunk 等标志把很多非手工编写的代码识别出来,大大节省了分析代码的精力。另外,IDA 甚至将一些手工编写的函数的函数名称也反编译出来。让人感叹:怎一个舒服了得!

    闲话不叙。对于本文中所涉及ida 的使用的相关知识,如有感觉叙述不明白者,请参阅坛主《加密与解密》第三版 3.2.1--3.2.14  中的相关内容。

    症状:程序运行一小时后,运行开始不正常。一些字符开始跳动。无其它提示。

    思路:这种情况动态分析难度比较大,因为没有一个明确的提示或标志,不容易找到关键代码。从获取系统时间的 API 入手,寻找时间比较的相关代码。相对是一个比较可行的办法。
    程序中进行时间比较,必然需要获取当前的时间。一般有两种办法,一种办法是获取当前的系统时间(getlocaltime)。一种办法是获取开机以来的时间(getticktime)。前者受修改系统时间的影响。后者不受修改时间的影响。

    启动程序,直接将系统时间后移一小时,程序出现异常。说明修改系统时间可影响到程序对运行时间的判断。故寻找 API getlocaltime。

    将程序用ida 载入。在 "functions window" 窗口( 找不到则 菜单 windows-> functions window 或 alt+ 1),查找时间相关的API。
    找到函数 getlocaltime。在 getlocaltime 上右键,下断点。

    http://up.2cto.com/Article/201012/20101217110951978.PNG
    f9 运行程序,程序被断下来。
    http://up.2cto.com/Article/201012/20101217110956352.PNG
    上图中,code xref : 对此函数进行了调用的函数。绿色部分列举了两个。在函数名上右键,"jump to xref to operand "。可以看到共有四处调用:
    http://up.2cto.com/Article/201012/20101217110956546.PNG
    以上四处,第二处 Sysutils::CurrentYear 顾名思义,只能取到 年份,帮不考虑。其它的三处,需要继续上溯,直到用户代码。
    http://up.2cto.com/Article/201012/20101217110956731.PNG
    继续上溯对 now 的调用。
    http://up.2cto.com/Article/201012/20101217110956396.PNG
    可以看到调用比较多。通常情况下,我们需要对每一个进行跟踪。但这时我们看到了一个很感兴趣的东东: FormShow。笔者编写过 vb ,知道写图形界面程序的第一步就是 FormShow。估计delphi 也是这样吧。不需要做艰难的决定。直接跟踪。双击“_TFNewGoMain_FormShow+33”。到达下面的界面。
    http://up.2cto.com/Article/201012/20101217110956124.PNG
    .text:00408E43 call    @Sysutils@Now$qqrv              ; Sysutils::Now(void)
    .text:00408E48 fstp    dbl_CEEC9C
    查阅手册得知,Sysutils::Now() 返回了一个浮点数值。整数部分保存1900年以来的天数,小数部分保存今天已经消逝的时间比例。在 delphi 语言中,浮点数是保存在浮点寄存器 fpu registers 中的。
    fstp 指令的意思是将浮点数指令寄存器中的数据保存到 变量 dbl_CEEC9C 中。

    右键 dbl_CEEC9C,选择 rename, 将变量dbl_CEEC9C 标记为 my_dbl_CEEC9_now,以方便识别。
    现在我们对程序的设计思路比较清楚了。按现在的分析,程序在启动时记录了系统时间。并不断地检查,如果超过了一小时,就开始捣乱。我们只需要找到读取my_dbl_CEEC9_now 的代码,就能跟踪到关键代码了。

    右键 my_dbl_CEEC9_now ,"jump to xref operator",看到了如下的八处调用。
    http://up.2cto.com/Article/201012/20101217110956137.PNGseover=this.style.cursor=pointer;this.οnclick=function(){window.open(http://up.2cto.com/Article/201012/20101217110956137.PNG)}}" border=0>
    根据 type 列知道,对 my_dbl_CEEC9_now 的操作,有四处读(r),三处写(w),我们首先考虑 读的代码。
    http://up.2cto.com/Article/201012/20101217110956148.PNG

    幸运的是,我们第一次就到了合适的位置。见到了经典的比较和跳转。


    以上三处代码:



    .text:00404195 call    @Sysutils@Now$qqrv              ; Sysutils::Now(void)
    .text:0040419A fstp    [ebp+var_380]                     ; 取当前时间
    .text:004041A0 fld     my_dbl_CEEC9C_now             ;取启动时保存的时间
    .text:004041A6 fadd    ds:dbl_404AA0
    展开全文
  • 我想限制文档或软件的使用时间和次数,希望提供合适的代码或加壳工具 thanks in advance
  • 软件限制使用次数或使用时间

    千次阅读 2018-11-29 11:12:41
    1,如果是互联网程序,可以在服务器记录使用次数或开始使用时间 2. 在本地也可以实现,在注册表记录使用次数或使用时间,记录需要进行加密,防止破解 3.使用加密狗...
  • vc 限制软件的使用次数或时间

    千次阅读 2012-09-19 10:14:17
     1、保存软件的使用次数或时间。  2、读次数和时间数据,在软件中进行处理。  3、对软件进行相应控制。   存放位置包抱以下位置:  1、保存到C盘中。  2、保存到注册表中。  3、保存到磁盘中。  4、
  • 通达信指标破解 、tn6完全...有密码的指标破解掉密码,有时间限制的公式去掉时间限制、完全加密公式还原破解出源码, 技术指标提取信号转换成选股预警公式,不同软件公式转换,指标公式编写,指标公式一站式解决。 ...
  • 声明:本文内容仅供学习交流,请勿用于非法用途Zelix KlassMaster是一款优秀的Java混淆器,但试用版有时间限制,偶然间从一个群里获得了ilanyu上传的ZMK9.0.8试用版,尝试运行时发现已经过期。目前的ZKM已经不再屏蔽...
  • C#软件加序列号激活、试用期限

    万次阅读 2016-01-10 17:23:16
    程序员想尽各种办法给软件加密,用户就想尽各种办法对软件破解。 现在做软件试用限制,那么就讨论下软件的试用限制。总体来说,限制的方法有这么几种: 1.时间限制。 2.次数限制。  以时间限制为例,...
  • 软件加密授权工具

    千次阅读 2019-04-02 11:18:09
    公司研发一套软件,需要开始往外卖,苦于上市后盗版压力比较大。于是寻找了一款软件加密授权工具-Virbox LM。 Virbox LM在加密方面,能快速的完成加密工作,不需要编写代码,安全强度也很高。授权方面,也能做到...
  • 在我们使用软件的过程中,有时候辛辛苦苦找到的软件,却有使用时间限制,那么,我们怎样才能去除时间限制呢?怎样冻结我们的软件时间?下面我就讲述一下我的方法,希望对大家有所用处. 工具/原料 ...
  • 使用VProtect自己开发的软件加密

    千次阅读 2015-08-18 14:50:52
    但是自己又不想花太多的时间放在上面,而且我们的软件一般也不会有很多人会去破解它,所以觉得不用搞的太复杂,能够限制住菜鸟就行。下面就自己用的这款加密软件分享大家,感觉还不错,先看看效果吧。 打开软件后...
  • SharePoint 2013 的软件边界和限制

    千次阅读 2014-07-04 14:04:19
    本文档介绍 SharePoint Server 2013 的软件边界和限制。其中包括: 边界: 根据设计无法超过的静态限制 阈值: 为满足特定要求而能够超过的可配置限制 支持的限制: 已默认设置为测试值的...
  • C#实现限制软件的使用次数

    万次阅读 热门讨论 2010-08-19 18:17:00
    实例说明 为了使软件能被更广泛的推广,开发商希望能有更多的用户使用软件,但他们又不想让用户长时间免费使用未经授权的软件,这时就可以推出试用版软件限制用户的使用次数,当用户感觉使用方便的话,可以花钱...
  • vb net程序使用次数限制或时间限制? 那位大师帮我解决 我在vs vb.net 中用 vb6.0 的代码我套不上 vs中 最好希望 vs中能使用的 谢谢!
  • 破解DLL时间限制

    万次阅读 2013-02-27 18:33:30
    由于很需要用一个DLL,担心该DLL有时间限制,而且修改系统之间之后直接变成了过期。无奈之下寻找破解DLL的办法。  参考了http://hi.baidu.com/goldchocobo/item/5e85f8762dc45f285c1789ce破解某DLL文件完成,最后...
  • 有个软件,Safengine 加密的,带有 key文件,但是只能试用3次,每次30分钟。 试用次数限制解除: 用 process monitor 监视注册表,发现在 删除掉 {5CC...} 那个键值,就可以再用3次。所以每次启动程序的时候...
  • 时间不知不觉间就从我们的指缝间溜走了,最后换来的还是无尽的空虚。在这些浪费的时间里,那些支离破碎的文字与音频、那些及时的奖励与快感并没有帮我们构建和照亮大脑中灰暗的区域。反而是那些极易形成短回路反馈...
  • 破解Revealapp的试用时间限制

    千次阅读 热门讨论 2014-03-01 13:49:34
    本文分析其试用版时间限制,只是用于学习,如果一直用,还是买个licence支持一下吧。 试用版有30天的时间限制,既然是30天时间限制,肯定每次启动是要读当前时间的啰。所以最简单的hack方法就是修改系统时间。如果...
  • 限制小孩子每天玩游戏(iPhone手机上)的时长为1小时,超过时间锁屏,需要提供4位密码进行解锁。 【 测试环境: iPhone系统版本12.3.1+ 】 方法 设置 屏幕使用时间 > “打开屏幕使用时间” > "这是我的...
  • MirrorOpSend+MirrorOpReceiver(MirrorOp发送端+接收端)破解无时间限制版,包含了手机和电脑的发送端、接收端全部软件,超值! 无线传屏电脑发送端WinMirrorOpSender 无线传屏电脑接收端WinReceiver 无线传屏...
  • 解决公司限制上网时间问题 一、代理服务器原理【Proxy Serve】: 代理服务器就类似代理商,如图,假设你的机器为A机,你想获得的数据由B机提供,代理服务器为C机,那么具体的连接过程是这样的: 首先,A机需要B机的...
  • 编译环境用的是Windows XP + VS2005使用权限:免费下载地址:http://www.cnblogs.com/Files/meta/程序运行限制器.rar 本软件完全免费,且是绿色软件,不需安装。 由于工作的需要促成我写这个小工具。 在工作时间...
  • 周围朋友大多陷入游戏中不能自拔,所以个人觉得应该做点什么,想来想去还是他们制止力的问题。所以我想写点简单的软件限制玩游戏的时间,各路大神跪求点意见,看看应该怎么写代码。
  • 共享软件加密的一些误区

    千次阅读 2006-06-07 18:53:00
    本文发表于《电脑软件编程与维护》 2005年12期 作者:星轨(oRbIt) E_Mail :inte2000@163.com 输入您的搜索字词 提交搜索表单 共享软件通常是指那种

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 446,982
精华内容 178,792
关键字:

如何给软件加时间限制