翻譯|使用教程|編輯:李顯亮|2020-01-07 14:49:03.517|閱讀 891 次
概述:WinLicense使用SecureEngine?保護技術,該技術能夠以較高優先級運行其代碼,以實現前所未有的保護技術。SecureEngine?宏允許使用SecureEngine?與應用程序進行交互,從而使應用程序和SecureEngine?可以作為一個整體運行。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
WinLicense是一個功能強大的保護系統,為希望保護其應用程序免受高級逆向工程和軟件破解的軟件開發人員設計。WinLicense使用SecureEngine®保護技術,該技術能夠以最高優先級運行其代碼,以實現前所未有的保護技術。
SecureEngine®宏允許使用SecureEngine®與應用程序進行交互,從而使應用程序和SecureEngine®可以作為一個整體運行。要將SecureEngine®宏包含到應用程序中,需要在應用程序源代碼中指定這些宏。 當SecureEngine®打算保護應用程序時,它將在應用程序內找到這些宏并將所需的操作應用于每個特定的宏。
SecureEngine®提供給軟件開發人員的不同宏如下:
如果你還沒有使用過WinLicense,可以點擊此處下載最新版測試。
當前版本的SecureEngine支持本機應用程序的宏(使用C / C ++,Delphi,Visual Basic等開發)。 請注意,這些宏不適用于.NET語言或以PCode模式編譯的Visual Basic。
要將宏應用于特定的代碼塊,必須使用“ MacroName_START”標記標記該塊的開頭,并使用“ MacroName_END”標記標記該塊的結尾。
限制條件
為了成功地將SecureEngine®宏插入您的應用程序,需要滿足一些條件。 如果不滿足以下任何條件,則WinLicense在打開要保護的文件時將顯示一條錯誤消息。 條件如下:
void MyFunction(void) { VM_START // your code VM_START <--- nested!!! // your code VM_END // your code VM_END }
特定編程語言的用法
function TfmMain.GetCRC32(FileName: string): string; begin {$I VM_Start.inc} // the following block of code is protected with an "VM" macro BuildCRCTable; CRC := $FFFFFFFF; AssignFile(F, FileName); FileMode := 0; Reset(F); {$I VM_End.inc} // end of "VM" macro GetMem(Buffer, SizeOf(B)); {$I Registered_Start.inc} // the following block of code is protected with a "Registered" macro repeat FillChar(b, SizeOf(b), 0); BlockRead(F, b, SizeOf(b), e); for i := 0 to (e-1) do CRC := RecountCRC(b[i], CRC); until (e < 255) or (IOresult <> 0); {$I Registered_End.inc} // end of "Registered" macro {$I Mutate_Start.inc} // the following block of code is protected with an "Mutate" macro FreeMem(Buffer, SizeOf(B)); CloseFile(F); CRC := Not CRC; Result := '$' + HextL(CRC); {$I Mutate_End.inc} // end of "Mutate" macro end;
LRESULT CALLBACK MainHandler(HWND hDlg, UINT message, WPARAM wParam, LPARAM lParam) { switch (message) { case WM_INITDIALOG: VM_START // the following block of code is protected with a "CodeReplace" macro if (WLRegGetStatus(NULL) == 1) { WLRegGetLicenseInfo(Name, Company, ExtraData); SetDlgItemText(hDlg, IDC_NAMEEDIT, Name); SetDlgItemText(hDlg, IDC_COMPANYNAME, Company); SetDlgItemText(hDlg, IDC_EXTRAEDIT, ExtraData); } VM_END // end of "VM" macro return TRUE; case WM_COMMAND: if (LOWORD(wParam) == IDCANCEL) { MUTATE_START // the following block of code is protected with an "Encode" macro EndDialog(hDlg, LOWORD(wParam)); MUTATE_END // end of "Mutate" macro return TRUE; } break; } return FALSE; }
Private Sub CheckStatusButton_Click() If AppStatus <> 1 Then Call VarPtr("VMStart") TrialDaysLeftLabel.Caption = WLTrialDaysLeft TrialExecLeftLabel.Caption = WLTrialExecutionsLeft MinutesLabel.Caption = WLTrialGlobalTimeLeft RuntimeLabel.Caption = WLTrialRuntimeLeft Call VarPtr("VMEnd") End If End Sub
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn