VMProtect SDK测试

XXX的时候用得上,记录一下

1,复制VMProtectSDK32.lib和VMProtectSDK.h到工程目录,并添加头文件和库的引用:
#include "VMProtectSDK.h"
#pragma comment(lib,"VMProtectSDK32.lib")

2,然后用VMProtectBegin、VMProtectBeginVirtualization、VMProtectBeginMutation、VMProtectBeginUltra的其中一个和VMProtectEnd包含要保护的代码,例如这样:
int _tmain(int argc, _TCHAR* argv[])
{
        VMProtectBeginUltra;
        printf("VMProtect SDK Test.\n");
        system("pause");
        VMProtectEnd;
        return 0;

有的sdk里面那些是dll的导出函数,有的是宏,如果是宏的话,那个地方就会插入一个字符串作为标记。初看,宏都是一样的,都是一个跳转加上个字符串"VMProtect Begin",仔细一看,原来VMP是靠最后一个字节来区分的,宏都在这:
#define VMProtectBegin \
         __asm _emit 0xEB \
         __asm _emit 0x10 \
         __asm _emit 0x56 \
         __asm _emit 0x4D \
         __asm _emit 0x50 \
         __asm _emit 0x72 \
         __asm _emit 0x6F \
         __asm _emit 0x74 \
         __asm _emit 0x65 \
         __asm _emit 0x63 \
         __asm _emit 0x74 \
         __asm _emit 0x20 \
         __asm _emit 0x62 \
         __asm _emit 0x65 \
         __asm _emit 0x67 \
         __asm _emit 0x69 \
         __asm _emit 0x6E \
         __asm _emit 0x00 \

#define VMProtectBeginVirtualization \
         __asm _emit 0xEB \
         __asm _emit 0x10 \
         __asm _emit 0x56 \
         __asm _emit 0x4D \
         __asm _emit 0x50 \
         __asm _emit 0x72 \
         __asm _emit 0x6F \
         __asm _emit 0x74 \
         __asm _emit 0x65 \
         __asm _emit 0x63 \
         __asm _emit 0x74 \
         __asm _emit 0x20 \
         __asm _emit 0x62 \
         __asm _emit 0x65 \
         __asm _emit 0x67 \
         __asm _emit 0x69 \
         __asm _emit 0x6E \
         __asm _emit 0x01 \

#define VMProtectBeginMutation \
         __asm _emit 0xEB \
         __asm _emit 0x10 \
         __asm _emit 0x56 \
         __asm _emit 0x4D \
         __asm _emit 0x50 \
         __asm _emit 0x72 \
         __asm _emit 0x6F \
         __asm _emit 0x74 \
         __asm _emit 0x65 \
         __asm _emit 0x63 \
         __asm _emit 0x74 \
         __asm _emit 0x20 \
         __asm _emit 0x62 \
         __asm _emit 0x65 \
         __asm _emit 0x67 \
         __asm _emit 0x69 \
         __asm _emit 0x6E \
         __asm _emit 0x02 \

#define VMProtectBeginUltra \
         __asm _emit 0xEB \
         __asm _emit 0x10 \
         __asm _emit 0x56 \
         __asm _emit 0x4D \
         __asm _emit 0x50 \
         __asm _emit 0x72 \
         __asm _emit 0x6F \
         __asm _emit 0x74 \
         __asm _emit 0x65 \
         __asm _emit 0x63 \
         __asm _emit 0x74 \
         __asm _emit 0x20 \
         __asm _emit 0x62 \
         __asm _emit 0x65 \
         __asm _emit 0x67 \
         __asm _emit 0x69 \
         __asm _emit 0x6E \
         __asm _emit 0x03 \

3,编译之后,用VMProtect打开程序,点New Procedure在All Procedures里面就可以看到了标记的函数:

然后就是编译了。
SDK好啊~等下试试WL的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值