我想用VMProtect's Markers來標記包含應該受保護的字符串常量的代碼塊。Delphi 7 - VMProtect實現的一些錯誤
uses VMProtectSDK;
VMProtectBegin(MARKER_NAME);
...
VMProtectEnd;
// DELPHI FUNCTION EXAMPLE :
procedure TForm1.Button1Click(Sender: TObject);
begin
VMProtectBegin('Test marker');
if StrToIntDef(Edit1.Text, 0) mod 17=13 then
MessageDlg(VMProtectDecryptStringA('Correct password'), mtInformation, [mbOK], 0)
else
begin
MessageDlg(VMProtectDecryptStringA('Incorrect password'), mtError, [mbOK], 0);
Edit1.SetFocus;
end;
VMProtectEnd;
end;
我試圖實現它,但我得到了一些錯誤:
[Error] Unit1.pas(xx): Unterminated string
[Error] Unit1.pas(xx): ')' expected but identifier 'Krypt1' found
[Error] Unit1.pas(xx): Unterminated string
[Error] Unit1.pas(xx): Missing operator or semicolon
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
如何解決這個問題呢?我可以問你教我如何編寫正確的代碼行(或示例)。
我在我的Delphi 7代碼的實現:
procedure TForm1.IdMappedPortTCP1Execute(AThread: TIdMappedPortThread);
var Payload, Host, Header, Krypt1, Krypt2:String;
begin
VMProtectBegin
('
Krypt1 := EncryptString('website.com', 'pwd');
Krypt2 := EncryptString('website.net', 'pwd');
');
VMProtectEnd;
if (pos('CONNECT',athread.NetData)<>0) or (pos('HTTP',athread.NetData)<>0) then begin
if host.Text = 'Host' then begin
Payload := 'GET http://'+Krypt1+'/ HTTP/1.1'+#13#10;
Host := AddHeader(AThread.NetData,'Host: '+Krypt2+''#13#10);
AThread.NetData := Payload+Host;
end;
end;
end;
我希望得到任何幫助。
乾杯, RZV
您提供的節目究竟是如何從Delphi代碼調用,具有特定的代碼示例的鏈接。 (這是兩張圖片之間的內容)很明顯,你發佈的代碼是無效的Delphi代碼(你不能像在這裏完成的那樣將兩行源代碼作爲函數參數傳遞)。仔細閱讀鏈接頁面,並研究它提供的代碼,這確實會加密嵌入的**字符串常量** - 它不會以您嘗試使用它的方式加密**變量**,因爲這些內容變量在編譯時不知道.. – 2015-04-01 22:28:04
謝謝。那麼,你能幫我寫一個基於上述VMWare的delphi7函數來在我的代碼中使用嗎? – RzV 2015-04-02 00:42:45
你能解釋一下VMWare是如何突然出現的。你能不能認識到你問過關於編譯錯誤的問題?我希望你不要指望我們爲你寫程序。 – 2015-04-02 08:59:47