首页
社区
课程
招聘
[求助]VMProtect的使用
发表于: 2006-3-15 11:24 14870

[求助]VMProtect的使用

2006-3-15 11:24
14870
收藏
免费 7
支持
分享
最新回复 (3)
雪    币: 47147
活跃值: (20450)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
2
不少软件作者为选择一款合适的加密软件而困惑。建议作者不要太依赖壳的保护,大多数壳是可以被攻破的,还是在自身保护上下些功夫。选择壳的时候,更多的时候考虑其兼容性。
目前流行的一些壳可以参考一下这里:http://www.pediy.com/tools/packers.htm

现在壳的发展一个趋势就是虚拟机保护,利用虚拟机保护后,能大大提高强度,因此建议尽可能使用此类技术保护软件。
如Themida ,WinLicense,EXECryptor等带有虚拟机保护功能,因此得用好其SDK。

另外,VMProtect是一款纯虚拟机保护软件,效果很好,但也有缺点,就是会影响程序速度,因此在一些对速度要求很高的场合就不适合用了。VMProtect 1.22.3之前是免费版,可以支持EXE,DLL等文件。更高版本需要购买,其支持驱动的保护。现在流行的做法,先用VMProtect将你的核心代码处理一下,再选用一款兼容性好的壳保护。

1.关键代码自己定位

VMProtect并不像其他加壳软件一样容易操作,必须告诉VMProtect你要加密的代码具体地址,这个对使用者有一定的要求,至少要有些解密基础。
在这以一个记事本程序为例来演示一下使用方法。
运行VMProtect后,打开NOTEPAD.EXE文件。单击Dump标签,输入要加密的起始地址,光标来到要加密代码起始地址后,点击菜单“project/new procedure”,会出现一个新的项目



需要处理其他地址时,请依次操作。

注意事项:
1.用VMProtect处理,请多测试,如果不稳定,请调整被保护代码的范围。
2.VMProtect对双线程支持不是太好,请同一次仅处理一个线程内的代码

2.用SDK标记代码

VMProtect v1.2以上支持SDK了,可以编程时插入一个标记,然后在加密时,VMProtect会认出这些标记,并在有标记的地方进行保护。编译后,VMProtect打开生成的这个exe文件后,点击“Project”菜单下的“New procedure”,在弹出的对话框中有SDK中的地址。

Delphi 中的标记模式

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
}


2006-3-15 11:38
0
雪    币: 214
活跃值: (40)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
谢谢,仔细研究一下
2006-3-15 11:55
0
雪    币: 252
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
pxf
4
不会用啊~~~
2006-5-16 11:07
0
游客
登录 | 注册 方可回帖
返回
//