VMProtect SDK使用日记

首先是看懂接口

#pragma once

#if defined(__APPLE__) || defined(__unix__)
#define VMP_IMPORT
#define VMP_API
#define VMP_WCHAR unsigned short
#else
#define VMP_IMPORT __declspec(dllimport)
#define VMP_API __stdcall
#define VMP_WCHAR wchar_t
#ifdef _WIN64
#pragma comment(lib, "VMProtectSDK64.lib")
#else
#pragma comment(lib, "VMProtectSDK32.lib")
#endif // _WIN64
#endif // __APPLE__ || __unix__

#ifdef __cplusplus
extern "C" {
#endif

	// protection
	// 保护相关

	// 开始常规保护
	VMP_IMPORT void VMP_API VMProtectBegin(const char *);

	// 开始虚拟保护
	VMP_IMPORT void VMP_API VMProtectBeginVirtualization(const char *);

	// 开始变异保护
	VMP_IMPORT void VMP_API VMProtectBeginMutation(const char *);

	// 开始超级保护(虚拟保护 + 变异保护)
	VMP_IMPORT void VMP_API VMProtectBeginUltra(const char *);

	// 开始虚拟按键保护
	VMP_IMPORT void VMP_API VMProtectBeginVirtualizationLockByKey(const char *);

	// 开始超级按键保护
	VMP_IMPORT void VMP_API VMProtectBeginUltraLockByKey(const char *);

	// 结束保护(上面的每一个函数都要对应一个结束保护)
	VMP_IMPORT void VMP_API VMProtectEnd(void);

	// utils
	// 杂项

	// 判断是否处于保护代码中
	VMP_IMPORT bool VMP_API VMProtectIsProtected();

	// 判断是否处于调试器中
	VMP_IMPORT bool VMP_API VMProtectIsDebuggerPresent(bool);

	// 判断是否处于虚拟机中
	VMP_IMPORT bool VMP_API VMProtectIsVirtualMachinePresent(void);

	// 判断程序CRC是否正确
	VMP_IMPORT bool VMP_API VMProtectIsValidImageCRC(void);

	// 获取加密后的char字符串
	VMP_IMPORT const char * VMP_API VMProtectDecryptStringA(const char *value);

	// 获取加密后的wchar_t字符串
	VMP_IMPORT const VMP_WCHAR * VMP_API VMProtectDecryptStringW(const VMP_WCHAR *value);

	// 释放加密后的字符串
	VMP_IMPORT bool VMP_API VMProtectFreeString(const void *value);

	// licensing
	// 许可标识

	enum VMProtectSerialStateFlags
	{
		SERIAL_STATE_SUCCESS = 0,															// 成功状态
		SERIAL_STATE_FLAG_CORRUPTED = 0x00000001,							// 损坏状态
		SERIAL_STATE_FLAG_INVALID = 0x00000002,								// 无效状态
		SERIAL_STATE_FL
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值