• <noscript id="p5tpn"><progress id="p5tpn"></progress></noscript>
    <source id="p5tpn"></source>
      <source id="p5tpn"><dfn id="p5tpn"></dfn></source>

      1. <span id="p5tpn"><del id="p5tpn"></del></span>
      2. English中文

        132 6655 9319

         

        • ?Contact Us

        Company:深圳市欣創(chuàng)微科技有限公司

        ADD:深圳市福田區(qū)紅嶺中路園嶺花園新華樓302

        Tel:132 6655 9319

        Fax:0755-82250454

        Email:[email protected]

         
        • Search
         

        軟件保護(hù)技術(shù)之時(shí)間限制

        Updated:2014-11-15 17:51:24Hits:2631

        (1) 定時(shí)器   有些程序的試用版每次運(yùn)行都有時(shí)間限制,例如運(yùn)行10分鐘或20分鐘就停止工作,必須重新運(yùn)行該程序才能正常工作。這些程序里面自然有個(gè)定時(shí)器來(lái)統(tǒng)計(jì)程序運(yùn)行的時(shí)間。

        1)使用Settimer()

          常用的計(jì)數(shù)器是函數(shù)Settimer(),調(diào)用這個(gè)函數(shù)創(chuàng)建的定時(shí)器可以發(fā)出消息VM_TIMER,或者在定時(shí)期滿(mǎn)時(shí)調(diào)用一個(gè)回調(diào)函數(shù)。 使用這個(gè)函數(shù)會(huì)使時(shí)間延時(shí),精度不高。

        2)使用timeSetEvent()

          給Windows驅(qū)動(dòng)程序最精確的周期性通知是由Windows的多媒體服務(wù)timeSetEvent()提供的。它的時(shí)間可以精確到1毫秒。

        3)使用VXD

          可以使用VMM的Set_Global_time_Out()服務(wù)來(lái)迫使回調(diào)函數(shù)的幾個(gè)毫秒再執(zhí)行,這就創(chuàng)造了一個(gè)“只有一次”的定時(shí)器。VXD可以在回調(diào)中再次調(diào)用Set_Global_time_Out()來(lái)開(kāi)始下一個(gè)定時(shí)器,這樣提供了一個(gè)連續(xù)運(yùn)行的定時(shí)器了。

        4)其它

          GetTickCount():精度不高;
          timeGetTime(): 可以以毫秒級(jí)返回windows開(kāi)始后的時(shí)間。

        (2)時(shí)間限制

          一般這類(lèi)保護(hù)的軟件都有時(shí)間上的限制,如試用30天等,當(dāng)過(guò)了共享軟件的試用期后,就不予運(yùn)行,只有向軟件作者付費(fèi)注冊(cè)之后才能得到一個(gè)無(wú)時(shí)間限制的注冊(cè)版本。

          這種類(lèi)型程序很多,讓你有10天、20天、30天等,它們?cè)诎惭b時(shí),在你的系統(tǒng)某處做上時(shí)間標(biāo)記,每次運(yùn)行時(shí)用當(dāng)前系統(tǒng)時(shí)間和安裝時(shí)的時(shí)間比較,判斷你還否能使用。
          如最典型的30天限制的一種情況:
          mov ecx,1E ; 把1E (30天 十進(jìn)制) 放入 ecx
          mov eax,[esp+10] ; 把用過(guò)天數(shù)放到eax
          cmp eax,ecx ; 在此比較
          jl ...
          如碰到這種情況,只需把"mov eax,[esp+10]"改成"mov eax,1" 。

          要記住當(dāng)前年份、月份的十六進(jìn)制的一些表示方法,如:2000年的十六進(jìn)制是07D0,然后用W32DASM反匯編你的程序,用查找字符串的方法找D007(在機(jī)器碼中位置顛倒了一下)或其它類(lèi)似時(shí)間的數(shù)字,有可能會(huì)找到有價(jià)值的線索。你別小看這種方法,對(duì)那些沒(méi)怎么防范的程序,此招很有效。
          如:一程序限定在2000年使用,可能有如下一代碼:
          :00037805 817C2404D0070000 cmp dword ptr [esp+04], 000007D0 比較是否在2000年。

        (3)與時(shí)間相關(guān)函數(shù)

        1、GetSystemTime 得當(dāng)前系統(tǒng)時(shí)間

        說(shuō)明:
        在一個(gè)SYSTEMTIME中載入當(dāng)前系統(tǒng)時(shí)間,這個(gè)時(shí)間采用的是“協(xié)同世界時(shí)間”(即UTC,也叫做GMT)格式。
        VOID GetSystemTime(
        LPSYSTEMTIME lpSystemTime // SYSTEMTIME,隨同當(dāng)前時(shí)間載入的結(jié)構(gòu)
        );


        2、GetLocalTime 得當(dāng)前本地時(shí)間

        VOID GetLocalTime(

        LPSYSTEMTIME lpSystemTime // SYSTEMTIME,用于裝載本地時(shí)間的結(jié)構(gòu)
        );


        3、SystemTimeToFileTime 根據(jù)一個(gè)FILETIME結(jié)構(gòu)的內(nèi)容,載入一個(gè)SYSTEMTIME結(jié)構(gòu)

         

        BOOL SystemTimeToFileTime(

        CONST SYSTEMTIME * lpst, // SYSTEMTIME,包含了系統(tǒng)時(shí)間信息的一個(gè)結(jié)構(gòu)
        LPFILETIME lpft // FILETIME,用于裝載文件時(shí)間的一個(gè)結(jié)構(gòu)
        );
        返回值 :非零表示成功,零表示失敗。


        4、SetTimer 創(chuàng)建一定時(shí)器,在指定時(shí)間內(nèi)暫停

         

        UINT SetTimer(
        HWND hwnd, // 時(shí)間信息句柄
        UINT idtimer, // 定時(shí)器ID 標(biāo)識(shí)符
        UINT uTimeout, // 暫停時(shí)間
        TIMERPROC tmprc // 處理定時(shí)過(guò)程的程序入口地址
        );

      3. <noscript id="p5tpn"><progress id="p5tpn"></progress></noscript>
        <source id="p5tpn"></source>
          <source id="p5tpn"><dfn id="p5tpn"></dfn></source>

          1. <span id="p5tpn"><del id="p5tpn"></del></span>
          2. 干嫩逼视频 | 皮鞭调教校花翘臀抽打图片 | 一级插骚逼 | 医生别停啊摁摁h别进来 | 亚洲AV无码国产精品 | 一级AAA片 | 丝袜美腿美女被狂躁长网站软件 | 久久邪恶 | 岛国av在线 | chinesexxxx国产麻豆 |