VMProtect SDK+ASProtect SDK保护

本文提供了使用VMProtect和ASProtect SDK进行代码保护的详细实例,包括如何通过SDK将验证代码保护起来,以及如何使用外部ASProtect进行保护。文章还包含了完整的代码示例和SDK下载链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

程序具体保护实例
VMProtect SDK+ASProtect SDK保护
工具:
VMProtect 1.12
ASProtect 1.33[Cr]
相关工具可以到www.pediy.com下载到

具体保护例子:
简单的字符串判断例子, 附件下载
内部使用
VMProtect SDK将验证代码保护起来
外部使用ASProtect保护
具体实例看代码

关于使用VMProtect的保护代码的一点说明
想简单的确定自身保护位置可以使用两种方法
以Delphi为例子
1.
在工程编译选项中:
Project->Options->Linker
选项卡中的Map File选项中~将单选框选择Detailed
然后在VMProtect添加保护代码中会看到函数地址
2.就是直接使用SDK代码
asm                              //使用VMProtect的SDK
  db $EB,$10,'VMProtect begin',0
end;

asm
  db $EB,$0E,'VMProtect end',0
end;
//---the end---
VMProtect使用说明[俄文版]
http://www.polytech.ural.ru/vmprotect.htm

附件中有全部代码和SDK:
代码:
 
program Test; {$APPTYPE CONSOLE} uses   Windows; function AGenKey:string;      //数组动态生成免得别别人从内存中看出来 const   Aint : array[0..9] of Char = ('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');   Achr  : array[0..25] of Char = ('A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',                                   'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',                                   'U', 'V', 'W', 'X', 'Y', 'Z'); begin   {key=H8E8A4R8T}   asm                              //使用VMProtect的SDK     db $EB,$10,'VMProtect begin',0   end;   Result := Concat(Achr[7],Aint[8],Achr[4],Aint[8],Achr[0],Aint[4],Achr[17],Aint[8],Achr[19]);   asm     db $EB,$0E,'VMProtect end',0   end; end; var   StrSN:String; begin   Writeln('//////////////////////////////////////////');   Writeln('//    VMProtect SDK+ASProtect SDK Example');   Writeln('//    Coded By:Anskya');   Writeln('//    Email:Anskya@Gmail.com');   Writeln('//    Web:Www.Anskya.Net');   Writeln('//////////////////////////////////////////');   Writeln('');   Writeln('');   Write('输入注册码:');   Readln(StrSN);   {$I reg_crypt_begin.inc}         //使用ASProtect的SDK   asm                              //使用VMProtect的SDK     db $EB,$10,'VMProtect begin',0   end;   if StrSN=AGenKey then   begin     Writeln('恭喜注册成功');   end else   begin     Writeln('^_^注册失败!');   end;   asm     db $EB,$0E,'VMProtect end',0   end;   {$I reg_crypt_end.inc}   Readln; end.
不少软件作者为选择一款合适的加密软件而困惑。建议作者不要太依赖壳的保护,大多数壳是可以被攻破的,还是在自身保护上下些功夫。选择壳的时候,更多的时候考虑其兼容性。 目前流行的一些壳可以参考一下这里: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 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值