日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

VMProtect SDK完全避坑指南

發布時間:2025/3/21 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 VMProtect SDK完全避坑指南 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 前言
    • 編譯VMProtect Demo
    • 生成機器碼
    • 替換密鑰對
    • 生成序列號
    • 總結

前言

在編寫軟件的時候,通常會有這樣一個需求,需要對自己寫的軟件實現一機一碼加密保護,并且最好能夠限制使用時間。拋開現有的網絡驗證系統之外,最安全可靠的莫過于VMP的加密系統了。

但是網上關于SDK的使用資料幾乎沒有一套完整的說明文檔,清一色全是各種坑。這里筆者整理一下在研究VMP SDK過程中遇到的各種坑,手把手教你實現一個帶時間驗證的加密系統和注冊機。

編譯VMProtect Demo

https://bbs.pediy.com/thread-201173.htm

首先需要去看雪下載這個SDK的Demo,上面演示了幾乎所有的VMP SDK功能。這個工程作者是用VS2013寫的,我這里用VS2017編譯

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-AJ8xNCTQ-1615006331516)(VMP SDK完全避坑指南.assets/1614959989942.png)]

接著安裝一下VMP,我這里用最新的3.4版本

然后開始編譯工程,首先來解決第一個報錯

嚴重性 代碼 說明 項目 文件 行 禁止顯示狀態 錯誤 C1047 對象或庫文件“KeyGen32.lib”是使用比創建其他對象所用編譯器舊的編譯器創建的;請重新生成舊的對象和庫 VMProtect C:\Users\87321\Desktop\VMProtect演示SDK加密DEMO\VMProtect\VMProtect\LINK 1

將下面這個路徑中的文件全部復制到工程目錄中

C:\Users\Public\Documents\VMProtect\KeyGen\DLL\Lib

直接替換即可,然后再次編譯

出現第二個錯誤

#ifdef _WIN64 #pragma comment(lib, "KeyGen64.lib") #else #pragma comment(lib, "KeyGen32.lib") #endif // _WIN64

這里需要將上面這段代碼復制到工程的主對話框類中

然后再次編譯

即可編譯通過

生成機器碼

接著我們需要將生成的exe放到VMP中進行編譯,因為代碼中的API實際上只是一個標記,只有通過VMP編譯之后,才會產生實際效果

直接將生成的exe拖入軟件,在授權里選擇通用

然后編譯Demo

編譯完成之后運行,然后點擊獲取硬件碼。這樣就獲取到了我們的硬件ID。

替換密鑰對

我們不光需要對文件進行加密,還需要有一個自己的注冊機,用于生成序列號,所以這里就需要用到密鑰對。

在菜單->項目->導出密鑰對中,將密鑰對導出

然后將密鑰對替換到上面的代碼里,進行重新編譯之后再用VMP進行加殼。

生成序列號

接著我們需要通過密鑰對來生成注冊碼

注意不要用這上面的創建注冊文件,這個Demo創建的注冊文件始終是校驗不通過的,具體原因未知,這里算是一個坑。

我們直接用官方的Demo來生成序列號

C:\Users\Public\Documents\VMProtect\KeyGen\DLL\MSVC

這個路徑下的工程就是序列號的生成Demo

同樣將導出的密鑰對復制到工程中,并且注釋掉原先的代碼。接著修改代碼

VMProtectSerialNumberInfo si = {0}; si.flags = HAS_HARDWARE_ID | HAS_TIME_LIMIT; si.nRunningTimeLimit = 1; si.pHardwareID = "fDRhHcnVyCnHFwrfCgl17hbady4GpPOlljzXmQ==";

flags設置為硬件綁定和時間限制,nRunningTimeLimit時間限制為1分鐘,接著pHardwareID填入自己的機器碼

然后生成一個密鑰對

創建一個名為license.lic的文件,放到同路徑下

[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-TcdyVdSa-1615006331531)(VMP SDK完全避坑指南.assets/1614961554506.png)]

點擊檢測注冊文件,密鑰驗證通過

接著過一會再次點擊檢測注冊文件,提示密鑰驗證失敗,這是因為密鑰的有效時間過了。關于到期時間,可以通過分解注冊碼進行獲取。

總結

到這里就完成了一個完整的帶時間限制的VMP虛擬機保護軟件+注冊機,各位可以任意為自己寫的軟件添加保護功能了。其余的功能請自行探索。如果發現其他新奇好玩的功能或者踩過的坑請務必一起分享交流。

總結

以上是生活随笔為你收集整理的VMProtect SDK完全避坑指南的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。