VMProtect使用说明

xiaoxiao2021-02-28  49

VMProtect使用说明

一.    接口说明//开始保护处标记(对应于功能设置:反调试、内存保护等等)VMProtectBegin(const char *);//开始虚拟化代码处标记(包括保护设置)VMProtectBeginVirtualization(const char *);//开始变异代码处标记(包括保护设置)VMProtectBeginMutation(const char *);//开始虚拟+代码变异标记处VMProtectBeginUltra(const char *);VMProtectBeginVirtualizationLockByKey(const char *);VMProtectBeginUltraLockByKey(const char *);//保护结束处标记VMProtectEnd(void);//检测调试BOOL VMProtectIsDebuggerPresent(BOOL);//检测虚拟机BOOL VMProtectIsVirtualMachinePresent(void);//映像文件CRC校验BOOL VMProtectIsValidImageCRC(void);//解密被保护的名为字符串Achar * VMProtectDecryptStringA(const char *value);//解密被保护的名为字符串Wwchar_t * VMProtectDecryptStringW(const wchar_t *value);二.    使用方法1.    保护函数必须有始有终出现VMProtectBegin、VMProtectBeginVirtualization、VMProtectBeginMutation、VMProtectBeginUltra必须有相对应的VMProtectEnd结束。比如:void FunName(){VMProtectBegin(“FunName”); //最好用函数名,否则会出现重名冲突.....VMProtectEnd();}2.    保护的单元是函数,而不是整个EXE代码比如://不保护void fun1(char* msg){    char* szmsg = "fun1 none vm";    OutputDebugString( szmsg );}//虚拟化保护int fun2( int x, int y ){    int n = x + y;    VMProtectBeginVirtualization("fun2");    OutputDebugString( "x+y= %d" );    VMProtectEnd();    return n;}//虚拟化和变异保护void fun3(){    VMProtectBeginUltra("fun3");    fun1("fun3 call fun1");    VMProtectEnd();    fun2( 2, 4 );}3.    保护嵌套情况void main(){    char* szMsg = "proxxb vm sapmle!";        //不被保护        VMProtectBegin("main"); //被保护    OutputDebugString( "vm protect test." );    //被保护    fun1(szMsg);     //函数内部自己去保护    fun2( 2, 4 ); //函数内部自己去保护    fun1(szMsg);  //函数内部自己去保护    fun3();        //不被保护    VMProtectEnd();    getchar(); //不被保护}4.    字符串保护应使用VMProtectDecryptStringA或VMProtectDecryptStringW函数保护名为字符串,被保护后,明晚字符串不再出现在内存,除非被解密的那一刻!char* Decrypt( char* key, char* buffer, long length ){    VMProtectBeginUltra("Decrypt");    ....VMProtectEnd();}调用方法:Decrypt(VMProtectDecryptStringA(“DecryptKey”),    //此时密文密钥被解密buffer,512);5.    其它函数,暂时不用

转载请注明原文地址: https://www.6miu.com/read-2626486.html

最新回复(0)