加密软件VMProtect入门教程

2017-07-05 10:55:52来源:oschina作者:发芽的土豆丶人点击

现如今不少软件作者为选择一款合适的加密软件而困惑。建议作者不要太依赖壳的保护,大多数壳是可以被攻破的,还是在自身保护上下些功夫。选择壳的时候,更多的时候考虑其兼容性。


现在壳的发展一个趋势就是虚拟机保护,利用虚拟机保护后,能大大提高强度,因此建议尽可能使用此类技术保护软件。


如Themida ,WinLicense,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>>

最新文章

123

最新摄影

闪念基因

微信扫一扫

第七城市微信公众平台