中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
ASProtect V1.2幫助|技術(shù)精華
ASProtect V1.2幫助
一、預(yù)覽
ASProtect是什么?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ASProtect - 應(yīng)用程序的軟件保護(hù)系統(tǒng),它被設(shè)計(jì)為快速執(zhí)行應(yīng)用程序的保護(hù)功能,尤其適用于需注冊的軟件和評估、試用軟件。
ASProtect的主要功能:
壓縮應(yīng)用程序
加密應(yīng)用程序
防止類似ProcDump的Dump工具進(jìn)行Dump操作
應(yīng)用程序完整性檢測
防調(diào)試器和反匯編
防內(nèi)存補(bǔ)丁
應(yīng)用程序和保護(hù)程序之間互相影響的 API
利用公鑰算法產(chǎn)生和確認(rèn)注冊key
數(shù)據(jù)庫保存和“偷的”(非法的)注冊key鑒定
可以建立評估(試用)版本,以此限制應(yīng)用程序的使用次數(shù)和使用天數(shù),跳出惱人的對話框
基于指定的計(jì)算機(jī)系統(tǒng)產(chǎn)生注冊key
這些設(shè)計(jì)面向什么?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
在深入分析了軟件保護(hù)工具(包括共享軟件作者和開發(fā)者)市場后, 得出的結(jié)論是:事實(shí)上所有保護(hù)機(jī)制被沒有破解保護(hù)和反向工程工具使用實(shí)際經(jīng)驗(yàn)的人員開發(fā),要得到一個(gè)好的保護(hù)算法需要相當(dāng)?shù)臅r(shí)間和努力,以及較深的學(xué)科知識(shí). 沒有保護(hù)就沒有破解 -- 這個(gè)真理已沒有爭論的價(jià)值. 當(dāng)開發(fā) ASProtect 的時(shí)候,我曾嘗試生成一個(gè)簡單有效的產(chǎn)品.然而接著發(fā)生的是 -- 另一個(gè)商業(yè)Dump工具或其它什么更加有效了 -- 這些就依賴你或其他測試者去裁定.
它是怎么工作的?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
常規(guī)情況下, 應(yīng)用程序保護(hù)機(jī)制是基于“殼”原理. 應(yīng)用程序被加“殼”(使用 ASPack 壓縮器),也就是所有的應(yīng)用程序塊(code, data, 輸入表, resources)被處理后將保護(hù)代碼附加到文件的后面。保護(hù)代碼大約40K大小。保護(hù)代碼首先得到控制權(quán),它檢測應(yīng)用程序的完整性、是否存在debugger、注冊key對否、進(jìn)行試用版限制,然后解密、解壓縮應(yīng)用程序數(shù)據(jù),初始化(處理輸入表函數(shù)和重定位表),最后交出控制權(quán)給應(yīng)用程序。不同于其它的保護(hù)方案的是 ASProtect 有 API (應(yīng)用程序接口) 與被保護(hù)的應(yīng)用程序相結(jié)合,這個(gè)大大地增強(qiáng)了防止除去保護(hù)的力度。

二、使用實(shí)例(循序漸近)
介紹
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
下面例子示范(除第一個(gè)例子)主要是想隔離和加密應(yīng)用程序,使其僅在應(yīng)用程序的注冊版本下執(zhí)行。
注冊key包含用于加密應(yīng)用程序中待加密塊的加密常量。當(dāng)注冊版本運(yùn)行時(shí)從注冊key中取出該加密常量來解密加密塊然后執(zhí)行。如果缺少注冊key,加密常量未知,加密塊就不能被解密且執(zhí)行。在注冊版本中被用于保存結(jié)果的代碼會(huì)被加密且執(zhí)行,在未注冊版本中該代碼仍被加密但不執(zhí)行,它會(huì)被跳過以避免意外產(chǎn)生。
所有例子位于子目錄examples和User Key (2號(hào)例子)及ASProtect Key (3號(hào)例子)下。這是一些 Delphi, Visual C++ and Visual Basic的例子。
實(shí)例 1 (簡單保護(hù))
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
前提:
有一個(gè)應(yīng)用程序,它需要不使用ASProtect注冊key的保護(hù)且要改變程序源代碼。這種類型的保護(hù)是最簡單的但也容易被破解(與其它類型保護(hù)比較一下)
步驟:
用ASProtect加密應(yīng)用程序

實(shí)例 2 (外部key保護(hù))
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
前提:
共享軟件已經(jīng)存在,共享軟件使用它自己的注冊key系統(tǒng)(假定當(dāng)它使用一個(gè)不對稱注冊key或注冊key是加密常量散列值集時(shí)它的算法是可靠的),如果你的注冊key系統(tǒng)不符合這些條件,使用ASProtect的注冊key系統(tǒng)也是合理的。為達(dá)到保護(hù)效力的強(qiáng)制條件是你的注冊key中存在被用加密代碼塊的加密常量。
目標(biāo):
建立被保護(hù)的應(yīng)用程序,當(dāng)注冊信息(注冊key)存在時(shí)提供它的全部功能。
步驟:
僅在注冊版本中被執(zhí)行的代碼塊應(yīng)該在應(yīng)用程序的開始和結(jié)束標(biāo)志上被標(biāo)出。
應(yīng)用程序被編譯。
你的十六進(jìn)制注冊key加密常量放在文件中(可以用二進(jìn)制編輯器如Hiew構(gòu)造該文件)。
告訴ASProtect這個(gè)文件。
用ASProtect處理編譯過的應(yīng)用程序。
對于注冊版本:
在應(yīng)用程序啟動(dòng)和校驗(yàn)注冊key后執(zhí)行解壓縮(解密)前你從注冊文件中提出加密常量,使用ASProtect API來調(diào)用解密程序,解密程序解密代碼塊后代碼塊執(zhí)行。
對于未注冊版本:
在應(yīng)用程序啟動(dòng)和校驗(yàn)注冊key后你不能得到加密常量,因此你不能由ASProtect API通過任何東西。
ASProtect API解密程序不能解密加密塊,在執(zhí)行的時(shí)候它們自動(dòng)被跳過(當(dāng)被ASProtect加入的加密代碼跳出加密塊時(shí))。
在目錄 examplesuser key 下看例子以學(xué)習(xí)它們是怎么工作的。

實(shí)例 3 (內(nèi)建key保護(hù))
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
前提:
共享軟件已經(jīng)存在, 應(yīng)用程序沒有它自己的注冊系統(tǒng)或注冊系統(tǒng)不可靠(假定當(dāng)它使用一個(gè)不對稱注冊key或注冊key是是加密常量散列值集時(shí)它的算法是可靠的)。
目標(biāo):
1) 建立產(chǎn)生和校驗(yàn)注冊key的系統(tǒng)
2) 建立僅在存在注冊key時(shí)給出全部功能的被保護(hù)應(yīng)用程序
注意:
默認(rèn)的ASProtect keys是如下格式(the key 是注冊表信息,放在.reg文件中):
----------------- registration.reg 開始--------------------
REGEDIT4
[HKEY_CURRENT_USERSoftwareASPack]
"Key"="qkfgz7KVtAmF6YrMmtRwdOntZ26Re/ILx10DoE5qvofHnSMYZUBoBR7IWBDxV9uK2me36Lb7pNnfqo82SEyJMNillF+6s6MgrVajbX6KhL2e0ptA/f1ih5yxPqEREtln1ceFw4S9SA7eGaUMbnVDH+9X32mskX4foGVcZHQC6jk="
----------------- registration.reg 結(jié)束 --------------------
注冊key被當(dāng)作注冊確認(rèn)字母給提供出來,把這些字母發(fā)給用戶.
qkfgz7KVtAmF6YrMmtRwdOntZ26Re/ILx10DoE5qvofHnSMYZUBoBR7IWBDxV9uK2me36Lb7pNnfqo82SEyJMNillF+6s6MgrVajbX6KhL2e0ptA/f1ih5yxPqEREtln1ceFw4S9SA7eGaUMbnVDH+9X32mskX4foGVcZHQC6jk=
  在這個(gè)實(shí)例中,你不得不為用戶定義一個(gè)方法去鍵入注冊key且把它保存在注冊表中的注冊項(xiàng)中,這個(gè)注冊項(xiàng)在ASProtect選項(xiàng)中被定義。
  不要忘記重啟應(yīng)用程序,以便于合法的注冊key能被讀到以解密加密塊。

步驟:
建立key生成系統(tǒng):
基本加密常量由ASProtect計(jì)算出來,步驟如下:
1) 跳到Registration Keys頁面.
2) 選擇Use registration keys檢查框(ASProtect產(chǎn)生的加密常量將被用于加密被標(biāo)識(shí)的塊,否則加密常量將從外部文件取出)
3) 設(shè)置registry key名稱, 在這里注冊信息被保存,從這里合法性檢測代碼將讀出注冊信息。你必須鍵入注冊表注冊項(xiàng),它將添加到默認(rèn)的注冊路徑下。為保存注冊表路徑下的注冊信息,你必須鍵入如下字符串:"YourApplicationName"
[HKEY_CURRENT_USERSoftwareYourApplicationName]
4) 接著我們開始計(jì)算出加密常量。每個(gè)應(yīng)用程序加密常量將產(chǎn)生一次
注意:記得備份你的項(xiàng)目文件!!!
5) 建立加密常量后你可以開始生成合法的keys。
為了產(chǎn)生key你必須在注冊信息窗口中鍵入注冊信息,接著按下產(chǎn)生按鈕。在Registration key窗口你將會(huì)得到一個(gè)可被保存為 .reg文件的注冊key。要保存它你可按下保存按鈕后選擇好保存目錄和保存名。如果你想它自動(dòng)動(dòng)作,選擇“自動(dòng)”檢查框 。
為檢查key你需要鍵入它到 User key窗口,接著按下檢測按鈕,如果這個(gè)key是合法的,你會(huì)得到注冊信息框,否則會(huì)顯示非法 key消息框。
只在應(yīng)用程序的注冊版本中被執(zhí)行的代碼塊應(yīng)該在應(yīng)用程序開始和結(jié)束部分被標(biāo)識(shí)也來。
應(yīng)用程序已被編譯。
用ASProtect處理編譯過的應(yīng)用程序,ASProtect查看應(yīng)用程序代碼且開始用加密常量加密被標(biāo)識(shí)出來的代碼塊。
對于注冊版本:
你需要導(dǎo)入產(chǎn)生的注冊key到注冊表中。要做到這點(diǎn)你可以雙擊.reg文件。
當(dāng)應(yīng)用程序啟動(dòng)后保護(hù)程序開始檢查注冊表中的注冊key,如果注冊key正確,保護(hù)程序解密加密塊,然后這些塊就可以被執(zhí)行。
對于未注冊版本:
當(dāng)應(yīng)用程序啟動(dòng)后保護(hù)程序開始檢查注冊表中的注冊key,如果注冊key不正確,保護(hù)程序不解密加密塊,它們?nèi)匀徊豢杀粓?zhí)行,且會(huì)自動(dòng)被跳過(因?yàn)樵诩用軙r(shí)ASProtect在開始和結(jié)束標(biāo)志處插入了jump命令)。
在目錄 examplesasprotect key 下看實(shí)例以了解它是怎么工作的。

帶內(nèi)置注冊key工作方案
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
1. 注冊key看起來象什么
被內(nèi)部注冊方案產(chǎn)生的注冊key看起來象這樣:
0NXVJdt69MoHfsnFK4wOq3tdsLoTnk
b01Lrq9yuxoJsQtkN0HLLsap7gwFe4
ZOm2kWixYsjSnCGeomPkiY63qz2dmL
v80x4KmDuLfs5tiIbvr1sO0MnIWHn2
C1mQUwGfmAOQd0vaUq2J/OVbywgIDS
cNZs0nH99DERoTaOqZ0yhc=
或者象
0NXVJdt69MoHfsnFK4wOq3tdsLoTnkb01Lrq9yuxoJsQtkN0HLLsap7gwFe4ZOm2kWixYsjSnCGeomPkiY63qz2dmLv80x4KmDuLfs5tiIbvr1sO0MnIWHn2C1mQUwGfmAOQd0vaUq2J/OVbywgIDScNZs0nH99DERoTaOqZ0yhc=
或者象如下的.reg (.key)文件:
REGEDIT4
[HKEY_CURRENT_USERSoftwareTest]
"Key"="0NXVJdt69MoHfsnFK4wOq3tdsLoTnkb01Lrq9yuxoJsQtkN0HLLsap7gwFe4ZOm2kWixYsjSnCGeomPkiY63qz2dmLv80x4KmDuLfs5tiIbvr1sO0MnIWHn2C1mQUwGfmAOQd0vaUq2J/OVbywgIDScNZs0nH99DERoTaOqZ0yhc="
或者
REGEDIT4
[HKEY_LOCAL_MACHINESoftwareTest]
"Key"="0NXVJdt69MoHfsnFK4wOq3tdsLoTnkb01Lrq9yuxoJsQtkN0HLLsap7gwFe4ZOm2kWixYsjSnCGeomPkiY63qz2dmLv80x4KmDuLfs5tiIbvr1sO0MnIWHn2C1mQUwGfmAOQd0vaUq2J/OVbywgIDScNZs0nH99DERoTaOqZ0yhc="
ASProtect會(huì)正確地識(shí)別這四種不同的keys。
這個(gè)key包含用戶的加密數(shù)據(jù),內(nèi)部信息,它的大小由用戶數(shù)據(jù)大小決定,最小為173字節(jié)(symbols).
2. 產(chǎn)生注冊key
有兩種方法產(chǎn)生注冊key:
a) 由ASProtect.exe產(chǎn)生 ?來到Registration Keys頁面,鍵入用戶信息到Registration Information窗口和Hardware ID窗口(如果你想產(chǎn)生硬件鎖key)
使用keygen.dll產(chǎn)生 ?你可以編寫注冊機(jī)系統(tǒng)讓它自動(dòng)為你產(chǎn)生注冊keys。
3. 交付key
key可以作為附件發(fā)送 (.reg or .key file) 或者通過信函發(fā)出。
--- KEY BEGIN KEY ------------
0NXVJdt69MoHfsnFK4wOq3tdsLoTnk
b01Lrq9yuxoJsQtkN0HLLsap7gwFe4
ZOm2kWixYsjSnCGeomPkiY63qz2dmL
v80x4KmDuLfs5tiIbvr1sO0MnIWHn2
C1mQUwGfmAOQd0vaUq2J/OVbywgIDS
cNZs0nH99DERoTaOqZ0yhc=
--- KEY END KEY --------------
4. 由ASProtect確認(rèn)key
In case of sending the key in the message body you need to pass the key to ASProtect. 有如下兩種方法:
a)建立一個(gè)可鍵入注冊key的窗口,然后把鍵入的注冊key寫入registry key, 這個(gè)在ASProtect的"Registration Key"中已被定義。
建立一個(gè)可鍵入注冊key的窗口,然后把鍵入的注冊key寫入任何你想寫入的地方。當(dāng)應(yīng)用程序啟動(dòng)時(shí),這個(gè)必須由ASProtect的SetRegistrationKey API函數(shù)通過。

帶硬件鎖注冊工作方式
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
有時(shí)可能要求一個(gè)注冊key只對一臺(tái)電腦合法,這是必須防止軟件用戶將它安裝到幾臺(tái)電腦上(如果許可中不提供)?;蛘叻乐棺詋ey在因特網(wǎng)上被公布(例如使用偷來的信用卡購買)。
要產(chǎn)生信賴用戶硬件的key,你需要得到用戶硬件ID號(hào)。要做到這點(diǎn)你需要在應(yīng)用程序中建立GetHardwareID API函數(shù),然后當(dāng)用戶注冊時(shí)要他們提供硬件ID號(hào)(例子在目錄examplestrial中)。
當(dāng)?shù)玫叫稳?4h0nNACA8H8= 的硬件ID,你就能夠由ASProtect.exe產(chǎn)生key,或者使用keygen.dll來產(chǎn)生 (看實(shí)例 exampleskeygen)。

試用應(yīng)用程序工作方式
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
為建立你應(yīng)用程序的一個(gè)試用版本,你需要在"Trial Info"頁面中設(shè)置參數(shù)。你可以選擇試用天數(shù)限制或試用次數(shù)限制和一個(gè)提醒信息框。如果你需要使用你自己的信息對話框,你需要調(diào)用如下API函數(shù)。
CheckTrial
ExecuteApplication
ExecuteTrial
GetRunApplicationFunction


帶命令行參數(shù)工作方式
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
要自動(dòng)徹底處理應(yīng)用程序你可以使用如下命令行:
c:ASProtectASProtect.exe -process d:ApplicationsMyappApp.aspr

User registration key generation
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
要使用注冊keys產(chǎn)生過程自動(dòng)進(jìn)行,你應(yīng)使用一個(gè)特別的dll- keygen.dll,這個(gè) DLL 有3個(gè)出口函數(shù)來為項(xiàng)目 文件產(chǎn)生注冊keys。
這里有 Delphi, Visual C++ and Visual Basic的實(shí)例 :
asp_keygen.inc
type
  TParams = packed record
    RegInfo       : Pointer;   // registration info
    RegInfoLen     : DWORD;
    HardwareID,               // hardware ID
    A,                       //
    E,                       // constants from project file ("Key" section)
    N             : PChar;   // /
    RegKey       : Pointer; // buffer for registration key
    RegKeySize   : DWORD; // size of a buffer for registration key
  end;
function RegistrationKeyGenerate(var Params : TParams) : DWORD;stdcall;external 'keygen.dll';
function RegistrationKeySave(FileName, RegistrySubKey, RegistryKey, RegistrationKey : PChar) : DWORD;stdcall;external 'keygen.dll';
function RegistrationKeyGenerateProject(lpProjectFileName, lpRegInfo, lpHardwareID, lpRegKeyFileName: PChar) : DWORD;stdcall;
asp_keygen.h
typedef struct _PARAMS {
  LPCVOIDRegInfo;         // address of buffer for registration information
  DWORD   RegInfoLen;// size in bytes of registration information
  LPCSTR HardwareID;       // hardware ID
LPCSTR A;             //
  LPCSTR E;             // constants from project file ('Key' section)
  LPCSTR N;             //  
  LPSTR   RegKey;         // buffer for registration key
  DWORD   RegKeySize;       // size in bytes of registration key
} PARAMS, *PPARAMS;

typedef DWORD (__stdcall *ASPRegistrationKeyGenerate)(OUT PARAMS *Params);
typedef DWORD (__stdcall *ASPRegistrationKeySave)(IN LPTSTR FileName,IN LPTSTR RegistrySubKey,IN LPTSTR RegistryKey, IN LPTSTR RegistrationKey);
typedef DWORD (__stdcall *ASPRegistrationKeyGenerateProject)(IN LPTSTR lpProjectFileName,IN LPTSTR lpRegInfo,IN LPTSTR lpHardwareID,IN LPTSTR lpRegKeyFileName);
keygen.bas
Private Type ASP_PARAMS
  RegInfo As String 'address of buffer for registration information
  RegInfoLen As Long 'size in bytes of registration information
  HardwareID As String 'hardware ID
  A As String 'constants from project file ('Key' section)
  E As String ' -//-
  N As String ' -//-
  RegKey As String 'buffer for registration key
  RegKeySize As Long 'size in bytes of registration key
End Type
Private Declare Function RegistrationKeyGenerate Lib "keygen.dll" (aspParams As ASP_PARAMS) As Long
Private Declare Function RegistrationKeySave Lib "keygen.dll" (ByVal FileName As String, ByVal RegistrySubKey As String, ByVal RegistryKey As String, ByVal RegistrationKey As String) As Long
Private Declare Function RegistrationKeyGenerateProject Lib "keygen.dll" (ByVal lpProjectFileName As String, ByVal lpRegInfo As String, ByVal lpHardwareID As String, ByVal lpRegKeyFileName As String) As Long
RegistrationKeyGenerate 函數(shù)被用于不通過項(xiàng)目文件(.aspr)來產(chǎn)生key 。要做到這點(diǎn),加密常量應(yīng)做為函數(shù)參數(shù)被傳遞,如果成功返回key的長度,否則返回0,如果RegKey緩沖區(qū)不夠大的話。
RegistrationKeySave 函數(shù)被用于建立一個(gè)注冊文件。如果成功,返回0。
RegistrationKeyGenerateProject 函數(shù)被用于產(chǎn)生基本項(xiàng)目文件(.aspr)的key。
在目錄 ExamplesKeygen 下看實(shí)例以了解怎么使用KeyGen.dll。

三、API
API 描述
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
新的ASProtect API 在版本1.1中被添加。這個(gè)API更易于使用且更優(yōu)越。
通過預(yù)先確定函數(shù)出口來使用這個(gè)API。主要意思是這樣的:ASProtect瀏覽該模塊的輸出表塊來搜索函數(shù)名,如果找到這個(gè)名字,函數(shù)的地址就記住它,然后刪除輸出表中的參考。當(dāng)模塊被加載時(shí),在不同條件下函數(shù)地址被確定,函數(shù)就可被調(diào)用。
注意:
1. 所有函數(shù)符合標(biāo)準(zhǔn)調(diào)用規(guī)范,必須被置成如下形式:
exports (for Delphi) 或 __declspec(dllexport) For ?+
2. 當(dāng)對應(yīng)用程序進(jìn)行保護(hù)時(shí)ASProtect在保護(hù)狀態(tài)窗口中列出發(fā)現(xiàn)的API函數(shù)名稱。這個(gè)確保了所有必須的函數(shù)被ASProtect發(fā)現(xiàn)。
新函數(shù)列表:
用戶注冊信息處理函數(shù)組
SetRegistrationKey
GetRegistrationInformation
GetHardwareID
獲得試用模式參數(shù)信息函數(shù)組
GetTrialDays
GetTrialExecs
試用模式下執(zhí)行控制函數(shù)組
CheckTrial
ExecuteApplication        
ExecuteTrial              
GetRunApplicationFunction
管理加密代碼塊函數(shù)組
SetDecryptionKey

VB開發(fā)者信息
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
對于VB編譯器有一些較特別的地方,用VB編譯器使用 API 函數(shù)會(huì)和使用其它編譯器不同(如 Delphi, Visual C++)。 VB API 通常只存在4個(gè)函數(shù)。
如下是它們的調(diào)用描述:
Declare Function apiGetRegistrationBuffer Lib "asprotect.dll" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Declare Function apiGetHardwareID Lib "asprotect.dll" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Declare Function apiGetTrialDays Lib "asprotect.dll" () As Long
Declare Function apiGetTrialExecs Lib "asprotect.dll" () As Long
apiGetRegistrationBuffer function passes the pointer to the lpBuffer buffer which is of size nSize and receives the string, that contains the name of the user. This is the sample of how to get the name of the registered user :
Function GetRegName() As String
Dim RegName As String
  ' Receive a Registration Info from API's apiGetRegInfo function
 
  RegName = String$(255, 0)
  GetRegName = Left(RegName, apiGetRegistrationBuffer(RegName, InStr(RegName, Chr(0)) - 1))
End Function
apiGetHardwareID function passes the pointer to the lpBuffer buffer which is of size nSize and receives the string, that contains the Hardware ID of the user. This is the sample of how to get the Hardware ID:
Function GetHardwareID() As String
Dim HardwareID As String
  ' Receive a hardware ID Info from API's apiGethardwareID function
  HardwareID = String$(255, 0)
  GetHardwareID = Left(HardwareID, apiGetHardwareID(HardwareID, InStr(HardwareID, Chr(0)) - 1))
End Function
apiGetTrialDays and apiGetTrialExecs functions return the number of remaining trial days and executions.
This is the sample of use of this call:
MsgBox "Unregistered version! You have" + Str(apiGetTrialDays) + " day(s) left !", vbCritical
To work with these functions while developing the application ASProtect.dll is used. It replaces protection functions when the application is not processed by ASProtect.
Asprotect.dll uses asprotect.ini file, in which you can specify different parameters of protection for debugging puproses.
When processing the application with ASProtect all calls to ASProtect.dll are replaced with internal function calls and including of ASProtect.dll to the final distribution is not required.
The main algorithm of work with ASProtect is shown in the sample, which is located in examplesTrialVB folder:
If you want to mark the fragments,which must be executed only in registered version, you must keep the following rules when placing the labels:
The labels format has the following format:
"[MARK_BEGINxx]" - fragment start mark
"[MARK_ENDxx]"   - fragment end mark
xx - any number, starting with 1
This is the sample of correct placnig of labels:
Const asBEGIN1 = "[MARK_BEGIN1]"
RegInfo = "Registered version" + Chr(13) + Chr(10) + "User : " + RegInfo
MsgBox RegInfo, vbInformation, "Registration Info"
Const asEND1 = "[MARK_END1]"
   
...
Const asBEGIN2 = "[MARK_BEGIN2]"
MsgBox "Registered Action !", vbInformation, "Registration Info"
Const asEND2 = "[MARK_END2]"
...
When entering the block, in which the labels are located, be sure to check the registration (using GetRegName), because if you don't, you will get an error in unregistered version. I.e. you must always do the following check:
Dim RegInfo As String
...
 
RegInfo = GetRegName
...

If Len(RegInfo) <> 0 Then
 
  ' Registered version
  Const asBEGIN1 = "[MARK_BEGIN1]"
  ...
  Const asEND1 = "[MARK_END1]"
   
 
Else
  'Unregistered version
  ...    
   
End If
Note: add new labels one by one, previously checking the correctness of work with existing ones.

四、問題解答
常見問題
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
所有保護(hù)工具的作者都稱它們的工具是最好的,因此該相信誰?你怎么讓我相信它不是一個(gè)常見的欺騙?
去選擇一個(gè)保護(hù)而不要聽信于作者 -- 沒有任何程序員會(huì)說自己的產(chǎn)品是不成功的或者它的保護(hù)有一些小錯(cuò)誤。最好的方法是參考使用過它進(jìn)行軟件保護(hù)的同事的意見(如在論壇中的壇友們)。請求軟件保護(hù)界中聲望較高的程序員來分析你的保護(hù),如果你以前的軟件被破解且收到破解者的一封E-Mail的話,請他們來測試你的新保護(hù),毫無疑問他會(huì)感興趣的。
我們的保護(hù)組可以對你的軟件保護(hù)進(jìn)行測試,然后指出不足,提出改進(jìn)建議。通過E-Mail聯(lián)系我們的保護(hù)組:
proteam@aspack.com.
當(dāng)你保護(hù)你的軟件時(shí),應(yīng)當(dāng)考慮到軟件的基本需求:
這個(gè)保護(hù)不應(yīng)該這樣:
1. 定位于公開的 DLL (OCX) 文件中
2. 大大增加了發(fā)行容量
這個(gè)保護(hù)應(yīng)該是這樣的:
1. 加密(壓縮)被保護(hù)應(yīng)用程序,最好的選項(xiàng)是PE Cryptor允許被壓縮
2. 進(jìn)行完整性效驗(yàn)
3. 防內(nèi)存補(bǔ)丁
4. 防debugger和反匯編
5. 和應(yīng)用程序建立連接(如API等等)
6. 防止偷來的key有效
我們保護(hù)的99%不會(huì)遇到它們的需求,因而你會(huì)很快地選擇你所想要的。

ASProtect 問題
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
ASProtect 問題
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
進(jìn)行過ASProtect處理后我的EXE (DLL)文件會(huì)增加多少?在保護(hù)過程處理后我需要將什么DLL (OCX)文件安裝到用戶的系統(tǒng)上?
ASProtect是一個(gè)殼保護(hù)軟件,因此要附加代碼到應(yīng)用程序上。ASProtect不需要附加任何的DLL (OCX)文件。在經(jīng)過包裝(使用ASPack壓縮器)之后,大約40K的保護(hù)代碼會(huì)附加到程序上,因此附加的大小不會(huì)大于40K。然而,由于進(jìn)行大的壓縮,如果程序大于500K的話,進(jìn)行保護(hù)后它的大小將會(huì)變得更??!
什么是加密key?
假如使用外部注冊方案的話這個(gè)參數(shù)將會(huì)被使用。如果你使用ASProtect內(nèi)建的注冊系統(tǒng)的話你可以忽略它。在實(shí)例2中有一個(gè)對它的詳細(xì)描述。
我想使用一個(gè)內(nèi)建注冊系統(tǒng),擁有ASProtect的破解者將可以從我的應(yīng)用程序中得到注冊key的可能性是什么?
不可能。對于每一個(gè)使用內(nèi)建注冊系統(tǒng)的項(xiàng)目來說,一系列隨機(jī)值將會(huì)產(chǎn)生然后將它用于計(jì)算注冊keys。
警告:不要使用使用一個(gè)項(xiàng)目文件作為另一個(gè)的模板!永遠(yuǎn)也不要給你的項(xiàng)目文件給任何人!
假如我使用內(nèi)建注冊系統(tǒng),并且我丟失了項(xiàng)目文件,那么我如何恢復(fù)數(shù)據(jù)以產(chǎn)生更多的注冊keys?
你根本恢復(fù)不了,因?yàn)樽约用艹A勘4嬖陧?xiàng)目文件中。
警告:在失敗前備份你的項(xiàng)目文件!
我的應(yīng)用程序已經(jīng)使用一個(gè)可靠的注冊系統(tǒng)一段時(shí)間了,請問我是否可以連帶我的注冊系統(tǒng)一道使用ASProtect?
是的,你可以,然而,它依賴于你注冊系統(tǒng)的結(jié)構(gòu)。如果你每個(gè)產(chǎn)品有一個(gè)加密常量,你可以使用ASProtect的全部功能(僅僅復(fù)制加密常量到一個(gè)二進(jìn)制文件并且在加密參數(shù)中指定文件路徑)。更多細(xì)節(jié)請參考實(shí)例2。
我存儲(chǔ)key信息的長度受到限制嗎?那么這個(gè)長度是多長?
在當(dāng)前版本,對于注冊信息來說沒有限制,這個(gè)最小的長度是173個(gè)字符(在當(dāng)前版本)。
耶!多么長的一個(gè)key!我的用戶一個(gè)個(gè)鍵入肯定會(huì)失?。《嗝纯尚?!只有孩子和老人才會(huì)樂于這么干!我能用一個(gè)更短的key嗎?比如說,5個(gè)或10個(gè)字符?
一個(gè)短的key基本上可以說是一個(gè)不可靠的key。不需要一個(gè)個(gè)地鍵入key,你可以用以下方法傳遞這個(gè)key:
1.作為一個(gè)附加的文件 (也就是說如: your_product_name_here.key).
這是給你用戶信息的一個(gè)例子:
親愛的用戶,
非常感謝你注冊你的產(chǎn)品!
你將會(huì)看到一個(gè)注冊文件(your_product_name_here.key)附在這封信上。
在你注冊前你應(yīng)該運(yùn)行產(chǎn)品的新版本。
接著,請從E-Mail中打開附件,然后你會(huì)看到如下信息:
'your_product_name_here.key成功導(dǎo)入注冊表!'
然后運(yùn)行產(chǎn)品你將會(huì)發(fā)現(xiàn)產(chǎn)品已注冊給了你。假如這樣的話,所有共享軟件的功能限制將會(huì)解除。
2.把注冊信息放在信中,教給你的用戶基本的操作方法:^A,^C,^V。
這是給你用戶信息的一個(gè)例子:
親愛的用戶,
非常感謝你注冊你的產(chǎn)品!
你將會(huì)在下面發(fā)現(xiàn)你的注冊key:
--- KEY BEGIN KEY ------------
KngKJOLScZeeeM8rLiNCN0s/hp9DHN
EX3lF3MTshXezxDPXIRgidiohPruvE
u0GKxCVP3ks3TWi5+NJZmhsCPkqMUh
xeOdvsZDNqTCvJq1FPbuZH4AOae0WM
bHewqtz3HI+Fkjn0jVk8nIgEI7Bb3D
mXUG4sA+tZQZ9PtwsEPwA=
--- KEY END KEY --------------
右擊信息顯示彈出菜單,所擇所有,復(fù)制,然后運(yùn)行軟件,將它粘貼觀察到試用對話框中。
然后退出軟件,再重新運(yùn)行次軟件。你會(huì)發(fā)現(xiàn)軟件已注冊給了你,假如這樣的話,所有共享軟件的功能限制將會(huì)解除。
我想使用ASProtect的注冊系統(tǒng)來代替我以前的注冊系統(tǒng),但數(shù)千的用戶使用我的軟件,我能自動(dòng)地生成注冊keys嗎?
當(dāng)然可以,已發(fā)行的 ASProtect 包含一個(gè)特別的dll -- keygen.dll, 它做基于項(xiàng)目文件和用戶信息方面的事情。你可以在這里找到一個(gè)如何使用的例子。
在未注冊版本中我可以加上什么限制?我怎么適當(dāng)?shù)匕鸭用軌K開始和結(jié)束標(biāo)志放上?
這是一個(gè)例子:
procedure CloseApplication(OptionsFile : String);
begin
  SaveCurrentProject;
  {$I includereg_crypt_begin.inc}
  SaveOptions(OptionsFile);// Blocking options save
  {$I includereg_crypt_end.inc}// in unregistered version
end;
The next example of placing labels is incorrect because of possible incorrect reaction of code optimizer - it may not include the ShowNagScreen function call to your code!
procedure CloseApplication(OptionsFile : String);
begin
  SaveCurrentProject;
  {$I includereg_crypt_begin.inc}// In unregistered version
  Exit;// we show nagscreen
  {$I includereg_crypt_end.inc}
  ShowNagScreen;
end;
下面的例子說明怎樣正確地放上標(biāo)志:
錯(cuò)誤方法:
Flag := False;
{$I includereg_crypt_begin.inc}
Flag := True;
{$I includereg_crypt_end.inc}
if Flag then
begin
  Dododo1;
  Dododo2;
  Dododo3;
end;
正確方法:
{$I includereg_crypt_begin.inc}
Dododo1;
Dododo2;
Dododo3;
{$I includereg_crypt_end.inc}

我怎么從命令行進(jìn)行操作?
如下所示:
c:ASProtectASProtect.exe -process d:ApplicationsMyappApp.aspr.

五、歷史與計(jì)劃
歷史
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
! 修正 (改變的)
+ 新加
1.2 (03-2-2001)
! 內(nèi)建精心制作的注冊方案
如果你利用內(nèi)建的注冊方案,強(qiáng)烈推薦你重新產(chǎn)生注冊加密常量和注冊keys來發(fā)送給你的用戶們。我們?yōu)槲覀儙淼男÷闊┑狼福?br>! 精心制作的實(shí)例
+ 基本指定計(jì)算機(jī)系統(tǒng)產(chǎn)生注冊keys
+ 不限制(>76個(gè)字符)長度地產(chǎn)生注冊keys
+ 添加命令行方式
1.1 (02-10-2000)
! 精心制作的保護(hù)算法
a) 加密塊標(biāo)志結(jié)構(gòu). 不要忘記升級這些文件:*.h, *.inc !!!
標(biāo)志處理方法改變?,F(xiàn)在標(biāo)志在程序代碼中不被顯示(它們也被加密了)
c) 加了密的動(dòng)態(tài)(!)標(biāo)志可被一個(gè)API函數(shù)使用

! 新加的算法使用ASProtect API. 由輸出表函數(shù)來處理。主要思想是:ASProtect查找輸出表塊的指定函數(shù)名,如果找到,它就會(huì)被保存下來,然后輸出表中的參考會(huì)被刪除。
+ Protection log now includes messages on number of found labels with REG_CRYPT_BEGIN and REG_CRYPT_END, and messages on found ASProtect API functions (in export section)
+ 增加保護(hù)文件存儲(chǔ)路徑
+ 增加去除本地機(jī)器試用期數(shù)據(jù)的按鈕
! 試用期可以正確計(jì)算, 不需要重啟機(jī)器 (老版本行為).
! Bug 修正 - 在WinNT200下檢測試用期 (在受限用戶模式)
! Bug 修正 - 在外部注冊key下的DLL保護(hù)
! Bug 修正 - 在FPU和一些VC++、PB程序下運(yùn)行


1.0 (31-5-2000)
公開發(fā)行版本.
0.962b (13-5-2000)
+ VB 實(shí)例升級
+ 增加防手工脫殼
+ 增加反debugger欺騙
! 修正VB5,VB6程序保護(hù)問題
! 修正DLL保護(hù)問題
0.961b (25-4-2000)
+ 新的壓縮器(ASPack 2.x)
+ 試用限制 (使用天數(shù)限制, 使用次數(shù)限制, 提示信息)
+ 增加黑名單(被偷注冊key數(shù)據(jù)庫)
+ 增加校驗(yàn)和以防內(nèi)存補(bǔ)丁
+ 供應(yīng)VB項(xiàng)目 (偽代碼加密和API供應(yīng)!)
+ 增加Keygen.dll
+ 新增幫助、FAQ、實(shí)例和注冊頁
0.94b (27-11-1999)
+ 供應(yīng)多項(xiàng)目文件
! CRC計(jì)算的新算法(現(xiàn)在它繞開PE頭前的所有數(shù)據(jù))
0.931a (17-10-1999)
! 當(dāng)被保護(hù)的應(yīng)用程序啟動(dòng)時(shí)的顯示bug
0.93a (27-9-1999)
! 改變代碼標(biāo)示機(jī)制(現(xiàn)在在未注冊版本中加密代碼自動(dòng)被跳過)

+ 增加產(chǎn)生keys的DLL(僅對注冊用戶開放)
+ 增加了注冊用法示范的樣本
0.921a (14-9-1999)
! 修正當(dāng)多個(gè)加密塊同時(shí)加密時(shí)的bug(多個(gè)加密塊同時(shí)加密時(shí)僅加密第一個(gè)塊)
+ 第二個(gè)加密塊加到樣本代碼中
0.92a (09-9-1999)  
+ 增加了用加密常量加密待加密塊(帶一些Delphi和VC++的實(shí)例)
0.91a (31-8-1999)  
+ 添加了簡單(官方)校驗(yàn)和檢測,可設(shè)置校驗(yàn)和錯(cuò)誤時(shí)的信息文本
+ 添加了簡單(官方)WinIce檢測,可設(shè)置發(fā)現(xiàn)WinIce時(shí)的信息文本
+ 添加了一些反內(nèi)存補(bǔ)丁程序

計(jì)劃
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
注冊keys改為日期間隔(臨時(shí)注冊keys)
注冊keys激活日期
用試用keys來激活試用期
用keys來延長試用期
當(dāng)試用期滿時(shí)顯示出對話框

六、購買與建議
如何購買
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
有兩種許可的方式可用:
開發(fā)許可 ($99) - 一臺(tái)機(jī)器一個(gè)開發(fā)者
部門許可 ($299) - 軟件公司、所有程序員
你可以選擇下面注冊方式之一:
1.通過WWW
這是最快最容易的方式. 請到如下站點(diǎn)查詢:
http://www.aspack.com/register.htm
http://www.regsoft.net/purchase.php3?produ...=31744&pc=157Xl
http://www.regsoft.net/purchase.php3?produ...=31744&pc=75Z68
2. 電話或傳真購買
開發(fā)許可可通過電話或傳真在線購買。美國用戶可以打1-888-REG-IT-80 來預(yù)定; 國外用戶打770-497-9126. 傳真通過770-497-9234. 當(dāng)購買的時(shí)候請指定下列產(chǎn)品ID號(hào):  
Product ID   - 31744   Product Code - 157Xl   (開發(fā)者許可)
Product ID   - 31744   Product Code - 75Z68   (部門許可)

升級
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
如果你注冊了ASProtect,你可以免費(fèi)升級到新版本。下載新版本,在未反安裝以前版本的條件下安裝新版本,這樣將保留你的注冊。
如果注冊key不再有效,請象第一次注冊那樣重新鍵入你的注冊key后重新運(yùn)行程序。
如果你有任何不明之處或注冊key失效請與 asprotect@aspack.com 聯(lián)系。

技術(shù)支持
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
你可以通過以下E-Mail聯(lián)系我們的技術(shù)支持組:
asprotect@aspack.com
注意:在請求技術(shù)支持前請確信你使用的是最新版本的ASProtect,最新版本可從http://www.aspack.com下載。

譯者理解:
加密常量-->RSA中的模數(shù)n
用戶提供的注冊標(biāo)識(shí)號(hào)-->RSA中的私鑰d
發(fā)送給用戶的注冊key-->RSA中的公鑰e
產(chǎn)生用戶注冊key(公鑰e)的產(chǎn)生方法:
由項(xiàng)目文件中保存的加密常量(模數(shù)n)與用戶提供的注冊標(biāo)識(shí)號(hào)(私鑰d)共同產(chǎn)生。
應(yīng)用程序判斷是否注冊方法:
由用戶機(jī)器中的注冊標(biāo)識(shí)號(hào)(私鑰d)與發(fā)送給用戶的注冊key(公鑰e)共同算出加密常量(模數(shù)n),然后用加密常量進(jìn)行解密操作。
我的理解是錯(cuò)誤的,我不知道RSA算法具體是怎樣和ASProtect結(jié)合的,有知道的朋友煩告知一下,先言謝了!
另外我的英文水平不咋的,翻譯不準(zhǔn)確,只限于粗看。

歡迎訪問譯者網(wǎng)站:http://poorss.onchina.net

                                                      rgbsky譯
                                                      2002.10.15
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
在VBA中使用Windows API
VB的API編程精粹
調(diào)用dll時(shí)會(huì)用到很多windows自定義的常量,哪里有他們的詳細(xì)介紹?
怎樣把VC 代碼轉(zhuǎn)換成VB代碼
Visual C++中調(diào)用DLL實(shí)現(xiàn)數(shù)據(jù)加密
Lua常見問題回答 Lua FAQ non
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服