加密軟件VMProtect入門教程

現如今不少軟件作者爲選擇一款合適的加密軟件而困惑。建議作者不要太依賴殼的保護,大多數殼是可以被攻破的,還是在自身保護上下些功夫。選擇殼的時候,更多的時候考慮其兼容性。

現在殼的發展一個趨勢就是虛擬機保護,利用虛擬機保護後,能大大提高強度,因此建議儘可能使用此類技術保護軟件。

ThemidaWinLicense,EXECryptor等帶有虛擬機保護功能,因此得用好其SDK。

VMProtect是一款純虛擬機保護軟件,效果很好,但也有缺點,就是會影響程序速度,因此在一些對速度要求很高的場合就不適合用了。VMProtect 1.22.3之前是免費版,可以支持EXE,DLL等文件。更高版本需要購買,其支持驅動的保護(慧都控件網支持提供最新版本免費試用,點擊下載)。現在流行的做法,先用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>>

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章