邪恶八进制信息安全团队技术讨论组's Archiver

pub!1c 2006-1-12 23:21

[转载]VMProtect SDK+ASProtect SDK混合编程[代码演示]

信息来源:看雪学院


刚看到VMProtect这个东东的时候真的不知道如何去使用
就用了最笨的方法...OD跟踪~跟到保护的地方然后添加地址^_^~~

说正题好了
程序具体保护实例
VMProtect SDK+ASProtect SDK保护
工具:
VMProtect 1.12
ASProtect 1.33[Cr]
相关工具可以到[url]www.pediy.com[/url]下载到

具体保护例子:
简单的字符串判断例子
内部使用
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使用说明[俄文版]
[url]http://www.polytech.ural.ru/vmprotect.htm[/url]

附件中有全部代码和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:Anskya@Gmail.com');
  Writeln('//   Web:[url]Www.Anskya.Net[/url]');
  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.

页: [1]
© 1999-2008 EvilOctal Security Team