程序具体保护实例
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:[email protected]');
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.