加密软件VMProtect入门教程
現如今不少軟件作者為選擇一款合適的加密軟件而困惑。建議作者不要太依賴殼的保護,大多數殼是可以被攻破的,還是在自身保護上下些功夫。選擇殼的時候,更多的時候考慮其兼容性。
現在殼的發展一個趨勢就是虛擬機保護,利用虛擬機保護后,能大大提高強度,因此建議盡可能使用此類技術保護軟件。
如Themida ,WinLicense,EXECryptor等帶有虛擬機保護功能,因此得用好其SDK。
而VMProtect是一款純虛擬機保護軟件,效果很好,但也有缺點,就是會影響程序速度,因此在一些對速度要求很高的場合就不適合用了。VMProtect 1.22.3之前是免費版,可以支持EXE,DLL等文件。更高版本需要購買,其支持驅動的保護(慧都控件網支持提供最新版本免費試用,點擊下載)?,F在流行的做法,先用VMProtect將你的核心代碼處理一下,再選用一款兼容性好的殼保護。
關鍵代碼自己定位
VMProtect并不像其他加殼軟件一樣容易操作,必須告訴VMProtect你要加密的代碼具體地址,這個對使用者有一定的要求,至少要有些解密基礎。
在這以一個記事本程序為例來演示一下使用方法。
運行VMProtect后,打開NOTEPAD.EXE文件。單擊Dump標簽,輸入要加密的起始地址,光標來到要加密代碼起始地址后,點擊菜單“project/newprocedure”,會出現一個新的項目。
需要處理其他地址時,請依次操作。
注意事項:
- 用VMProtect處理,請多測試,如果不穩定,請調整被保護代碼的范圍。
- VMProtect對雙線程支持不是太好,請同一次僅處理一個線程內的代碼
用SDK標記代碼?
VMProtect 支持SDK,可以編程時插入一個標記,然后在加密時,VMProtect會認出這些標記,并在有標記的地方進行保護。編譯后,VMProtect打開生成的這個exe文件后,點擊“Project”菜單下的“New procedure”,在彈出的對話框中有SDK中的地址。
Delphi 中的標記模式:
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | asm db $EB,$10,'VMProtect begin',0 //標記開始處. end; //想保護的程序代碼 asm db $EB,$0E,'VMProtect end',0 //標記結束處. end; VC的VMProtect的宏 : #define VMBEGIN __asm //標記開始處. { _emit 0xEB _emit 0x10 _emit 0x56 _emit 0x4D _emit 0x50 _emit 0x72 _emit 0x6F _emit 0x74 _emit 0x65 _emit 0x63 _emit 0x74 _emit 0x20 _emit 0x62 _emit 0x65 _emit 0x67 _emit 0x69 _emit 0x6E _emit 0x00 } //想保護的程序代碼 #define VMEND __asm //標記結束處. { _emit 0xEB _emit 0x0E _emit 0x56 _emit 0x4D _emit 0x50 _emit 0x72 _emit 0x6F _emit 0x74 _emit 0x65 _emit 0x63 _emit 0x74 _emit 0x20 _emit 0x65 _emit 0x6E _emit 0x64 _emit 0x00 } |
下載最新版VMProtect DEMO>>
總結
以上是生活随笔為你收集整理的加密软件VMProtect入门教程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端JavaScript规范
- 下一篇: Memcached 在linux上安装笔