首页
社区
课程
招聘
VS2012中如何使用 vmprotect 的SDK
发表于: 2015-8-14 12:37 11296

VS2012中如何使用 vmprotect 的SDK

2015-8-14 12:37
11296
我知道VC中可以这样使用VMP的SDK 高级版本 不支持ASM内联汇编 怎么使用啊
#define  VMPBEGIN \
    __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  VMPEND \
  __asm _emit 0xEB \
    __asm _emit 0x0E \
    __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 0x65 \
    __asm _emit 0x6E \
    __asm _emit 0x64 \
    __asm _emit 0x00
有了上面的define,在需要加密的地方只需要两句话就行了,可以到处多插一点:
代码:
VMPBEGIN
//需要加密的代码片断
VMPEND

我知道VC中可以这样使用VMP的SDK 高级版本 不支持ASM内联汇编 怎么使用啊

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (2)
雪    币: 4889
活跃值: (2275)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
直接包含VMProtectSDK.h,调用dll的导出函数不行吗?

#pragma once

#ifdef _WIN64
        #pragma comment(lib, "VMProtectSDK64.lib")
#else
        #pragma comment(lib, "VMProtectSDK32.lib")
#endif

#ifdef __cplusplus
extern "C" {
#endif

// protection
__declspec(dllimport) void __stdcall VMProtectBegin(const char *);
__declspec(dllimport) void __stdcall VMProtectBeginVirtualization(const char *);
__declspec(dllimport) void __stdcall VMProtectBeginMutation(const char *);
__declspec(dllimport) void __stdcall VMProtectBeginUltra(const char *);
__declspec(dllimport) void __stdcall VMProtectBeginVirtualizationLockByKey(const char *);
__declspec(dllimport) void __stdcall VMProtectBeginUltraLockByKey(const char *);
__declspec(dllimport) void __stdcall VMProtectEnd(void);

// utils
__declspec(dllimport) BOOL __stdcall VMProtectIsDebuggerPresent(BOOL);
__declspec(dllimport) BOOL __stdcall VMProtectIsVirtualMachinePresent(void);
__declspec(dllimport) BOOL __stdcall VMProtectIsValidImageCRC(void);
__declspec(dllimport) char * __stdcall VMProtectDecryptStringA(const char *value);
__declspec(dllimport) wchar_t * __stdcall VMProtectDecryptStringW(const wchar_t *value);
__declspec(dllimport) BOOL __stdcall VMProtectFreeString(void *value);

// licensing
enum VMProtectSerialStateFlags
{
        SERIAL_STATE_FLAG_CORRUPTED                        = 0x00000001,
        SERIAL_STATE_FLAG_INVALID                        = 0x00000002,
        SERIAL_STATE_FLAG_BLACKLISTED                = 0x00000004,
        SERIAL_STATE_FLAG_DATE_EXPIRED                = 0x00000008,
        SERIAL_STATE_FLAG_RUNNING_TIME_OVER        = 0x00000010,
        SERIAL_STATE_FLAG_BAD_HWID                        = 0x00000020,
        SERIAL_STATE_FLAG_MAX_BUILD_EXPIRED        = 0x00000040,
};
#pragma pack(push, 1)
typedef struct
{
        WORD                        wYear;
        BYTE                        bMonth;
        BYTE                        bDay;
} VMProtectDate;
typedef struct
{
        INT                                nState;                                // VMProtectSerialStateFlags
        wchar_t                        wUserName[256];                // user name
        wchar_t                        wEMail[256];                // email
        VMProtectDate        dtExpire;                        // date of serial number expiration
        VMProtectDate        dtMaxBuild;                        // max date of build, that will accept this key
        INT                                bRunningTime;                // running time in minutes
        BYTE                        nUserDataLength;        // length of user data in bUserData
        BYTE                        bUserData[255];                // up to 255 bytes of user data
} VMProtectSerialNumberData;

#pragma pack(pop)
__declspec(dllimport) INT  __stdcall VMProtectSetSerialNumber(const char * SerialNumber);
__declspec(dllimport) INT  __stdcall VMProtectGetSerialNumberState();
__declspec(dllimport) BOOL __stdcall VMProtectGetSerialNumberData(VMProtectSerialNumberData *pData, UINT nSize);
__declspec(dllimport) INT  __stdcall VMProtectGetCurrentHWID(char * HWID, UINT nSize);

// activation
enum VMProtectActivationFlags
{
        ACTIVATION_OK = 0,
        ACTIVATION_SMALL_BUFFER,
        ACTIVATION_NO_CONNECTION,
        ACTIVATION_BAD_REPLY,
        ACTIVATION_BANNED,
        ACTIVATION_CORRUPTED,
        ACTIVATION_BAD_CODE,
        ACTIVATION_ALREADY_USED,
        ACTIVATION_SERIAL_UNKNOWN,
        ACTIVATION_EXPIRED
};

__declspec(dllimport) INT __stdcall VMProtectActivateLicense(const char *code, char *serial, int size);
__declspec(dllimport) INT __stdcall VMProtectDeactivateLicense(const char *serial);
__declspec(dllimport) INT __stdcall VMProtectGetOfflineActivationString(const char *code, char *buf, int size);
__declspec(dllimport) INT __stdcall VMProtectGetOfflineDeactivationString(const char *serial, char *buf, int size);

#ifdef __cplusplus
}
#endif
2015-8-14 13:16
0
雪    币: 22
活跃值: (458)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
非常感谢 我试试!
2015-8-14 13:37
0
游客
登录 | 注册 方可回帖
返回
//