翻譯|使用教程|編輯:陳津勇|2020-01-02 14:44:13.570|閱讀 817 次
概述:許可系統API是VMProtect API及其SDK的組成部分。使用API可以指定序列號并檢索有關它的所有信息,包括是否適合該程序、序列號是否已過期、該產品注冊到的名稱等等。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
VMProtect是一種很可靠的工具,可以保護應用程序代碼免受分析和破解,但只有在應用程序內保護機制正確構建且沒有可能破壞整個保護的嚴重錯誤的情況下,才能實現最好的效果。
本文介紹許可API函數的相關內容。
免費下載VMProtect體驗版 優惠購買VMProtect正式版
許可系統API是VMProtect API及其SDK的組成部分。使用API可以指定序列號并檢索有關它的所有信息,包括是否適合該程序、序列號是否已過期、該產品注冊到的名稱等等。同樣,API提供了程序在其上運行的計算機的硬件標識符。
VMProtectSetSerialNumber
此函數將序列號加載到許可系統。調用語法:
int VMProtectSetSerialNumber(const char * SerialNumber);輸入的SerialNumber參數必須包含一個指向以null結尾的字符串('\ 0')的指針,該字符串包含以64為基數的序列號。該函數返回序列號狀態標志的位掩碼,與VMProtectGetSerialNumberState()返回的掩碼相同。您可以在下面閱讀有關標志的更多信息。如果函數返回0,則序列號為“good”。
VMProtectGetSerialNumberState
此函數返回通過調用VMProtectSetSerialNumber()指定的序列號的狀態標志。
int VMProtectGetSerialNumberState();如果至少設置了一個標志,則序列號有問題。如果設置了至少一位,該程序將無法運行。下表列出了標志及其值的詳細說明:
Flag |
值 | 描述 |
SERIAL_STATE_FLAG_CORRUPTED |
0×00000001 |
許可系統已損壞。原因可能是:保護項目的設置錯誤,嘗試破解。 |
SERIAL_STATE_FLAG_INVALID |
0×00000002 |
序列號不正確。如果許可系統無法解密序列號,則設置該標志。 |
SERIAL_STATE_FLAG_BLACKLISTED |
0×00000004 |
序列號與產品匹配,但在VMProtect中列為黑色。 |
SERIAL_STATE_FLAG_DATE_EXPIRED |
0×00000008 |
序列號已過期。可通過調用VMProtectGetSerialNumberData()獲得有關到期日期的詳細信息。 |
SERIAL_STATE_FLAG_RUNNING_TIME_OVER |
0×00000010 |
該程序的運行時間已用完。您可以通過調用VMProtectGetSerialNumberData()獲得有關程序運行時間的詳細信息。 |
SERIAL_STATE_FLAG_BAD_HWID |
0×00000020 |
硬件標識符與密鑰中指定的硬件標識符不匹配。 |
SERIAL_STATE_FLAG_MAX_BUILD_EXPIRED |
0×00000040 |
序列號與受保護程序的當前版本不匹配。可通過調用VMProtectGetSerialNumberData()獲得此序列號匹配的程序的最大構建日期。 |
此函數獲取有關通過調用VMProtectSetSerialNumber()獲得的序列號內容的信息。調用語法:
bool VMProtectGetSerialNumberData(VMProtectSerialNumberData * Data,int Size);第一個參數是指向VMProtectSerialNumberData結構的指針,將在其中寫入所有必要的信息。第二個參數是第一個參數中傳遞的結構的大小。需要控制結構的格式。如果許可系統已損壞(請參見SERIAL_STATE_FLAG_CORRUPTED標志)、提供的結構地址為零或傳遞的結構大小不正確,則該函數返回FALSE。在其他情況下,該函數返回TRUE,并將有關序列號的所有信息記錄到提供的地址中。以下是該結構的要素:
元素 | 類型 | 描述 |
nState |
int |
指示密鑰狀態的位標志掩碼。與VMProtectGetSerialNumberState()返回的類似。 |
wUserName |
wchar_t[256] |
UNICODE中的客戶名稱,以空值結尾。 |
wEMail |
wchar_t[256] |
客戶使用UNICODE的電子郵件,以零結尾。 |
dtExpire |
VMProtectDate |
密鑰到期日期。VMProtectDate結構的格式如下所述。 |
dtMaxBuild |
VMProtectDate |
給定密鑰可以使用的最大產品生產日期。VMProtectDate結構的格式如下所述。 |
bRunningTime |
int |
該程序將運行的分鐘數(一個會話的最長持續時間)。以分鐘為單位的值,從程序啟動時算起。 |
nUserDataLength |
unsigned char |
bUserData字段中用戶數據的長度。 |
bUserData |
unsigned char[255] |
用戶數據放入密鑰中。實際的字節數在nUserDataLength中指定。 |
元素 | 類型 | 描述 |
wYear |
無符號短 |
年 |
bMonth |
無符號字符 |
月份,從1開始 |
bDay |
無符號字符 |
天,從1開始 |
int VMProtectGetCurrentHWID(char * HWID,int大小);第一個參數是指向寫入標識符的存儲區的指針。第二個參數是該區域的大小。該函數返回寫入的字節數,包括尾隨的零字節('\ 0')。如果第一個參數中提供了NULL,則該函數返回存儲硬件標識符所需的字節數。下面是使用該函數的正確方法:
int nSize = VMProtectGetCurrentHWID(NULL, 0); // get the required buffer size char *pBuf = new char[nSize]; // allocate memory for the buffer VMProtectGetCurrentHWID(pBuf, nSize); // obtain the identifier // use the identifier delete [] pBuf; // release memory
有關 VMProtect 更多資源,請聯系了解
雙“旦”狂歡鉅惠,領優惠券購VMProtect享折上折>>>本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn