软件保护工具VMProtect将许可系统集成到应用程序(8):硬件锁定

VMProtect是一种很可靠的工具,可以保护应用程序代码免受分析和破解,但只有在应用程序内保护机制正确构建且没有可能破坏整个保护的严重错误的情况下,才能实现最好的效果。

下载VMProtecticon-default.png?t=M85Bhttps://www.evget.com/product/1859/download

建筑保护总是经历两个主要步骤:开发和发布。至于许可,首先创建一个应用程序,将保护集成到其中,然后添加检查和功能限制。只有经过全面测试,才能将产品提供给用户并开始第二阶段。测试受保护的应用程序是一个复杂的过程,因为需要确保所有检查和条件跳转都能正常运行。

许可系统提供“开发者模式”(AKA“测试模式”),在此工作模式下,不对应用程序应用任何保护,并且在配置文件中调整系统对提供的序列号的反应。当应用程序没有错误并且它正确地与许可系统一起使用时,VMProtect将“测试”许可模块替换为执行实际序列号检查的真实模块。


接收硬件标识符

在锁定硬件之前,必须接收硬件的标识符,然后将标识符放入序列号中。因为将其传递给许可系统时,将检查标识符是否匹配。首先,将main()函数减少到最低限度:

int main(int argc,char ** argv)
{ 
        int nSize = VMProtectGetCurrentHWID(NULL,0); 
        char * buf =新的char [nSize]; 
        VMProtectGetCurrentHWID(buf,nSize); 
        printf(“ HWID:%s \ n”,buf); 
        删除[] buf; 
        返回0; 
}

通过运行程序,将会收到一个默认的测试硬件标识符:

HWID:myhwid

将以下行添加到ini文件中可更改标识符:

MyHWID = test

当我们事后运行程序时可以看到,系统认为“test”是PC的硬件标识符:

HWID:测试

注意:该程序仅在使用VMProtect处理后才显示真实的硬件标识符。

硬件锁定序列号

要将测试序列号锁定到硬件,应该在ini文件中再增加一行。这次,我们定义“put into”序列号的标识符:

KeyHWID = test

然后,使main()复杂一点。它将传递一个序列号并分析其获得的结果:

int main(int argc,char ** argv)
{ 
        int nSize = VMProtectGetCurrentHWID(NULL,0); 
        char * buf =新的char [nSize]; 
        VMProtectGetCurrentHWID(buf,nSize); 
        printf(“ HWID:%s \ n”,buf); 
        删除[] buf; 
        
        char * serial =“ Xserialnumber”; 
        int res = VMProtectSetSerialNumber(序列); 
        print_state(res); 
        返回0; 
}

运行代码后,将看到以下结果:

HWID:测试
状态= 0

许可系统已将当前的硬件标识符与序列号中的标识符进行了比较。标识符相等,因此VMProtectSetSerialNumber()函数返回0 –序列号匹配。

现在,让我们尝试在另一个硬件上“运行”程序:只需将ini文件中MyHWID参数的值从“test”更改为“new test”,然后再次运行程序:

HWID: new test
state = SERIAL_STATE_FLAG_BAD_HWID

这一次,许可系统返回了SERIAL_STATE_FLAG_BAD_HWID标志,这意味着真实的硬件标识符与序列号中存储的标识符不匹配。

我们在屏幕上看到的当前标识符为“new test”,而序列号为“test”。如果将ini文件中的KeyHWID参数更改为“new test”,也可以让序列号在该“hardware”上运行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ACProtect是一个对Windows下的可执行文件提供保护的软件,可以非常有效的防止盗版。通过公匙加密算法(RSA)创建并校验注册KEY,只有在RSA KEY正确的情况下,才对那些受保护的代码进行正常解码。同时,ACProtect还使用了内嵌式加密,可以有效的防止加密软件从内存中被抓取,也就是无法被脱壳。内置反调试引擎,有效的增加了破解的难度。专用的API系统,可以使ACProtect和你的软件紧密的接合在一起,这样,你就可以通过使用ACProtect来创建你的全功能评估版。试想,你既可以让用户完全感受到你的软件给他们所带来的一切实用功能,又不用花费过多时间在加密保护上,这岂不是一个一举两得的完美方案? 主要特色 嵌入式加密系统 --- 你可以自行指定程序中所需加密代码段,通过使用这个系统,那怕破解者知道你的程序的入口点(OEP)并且重建了输入表。 代码替换 ?--Acprotect在不影响软件功能的情况下,可以用ACProtect代码来替换你原程序中的某些代码,使得保护代码和被保护程序更加无缝的结合在一起。如果Acprotect被非法脱壳之后,软件就会由于部分代码无法正确还原而导致非法操作。 多态引擎--- 有效的动态变异,多态引擎产生多层解码代码,解码代码和被保护代码在你每次执行保护的时候都是变化的。可以有效对抗静态分析和动态跟踪。运行完毕之后,所有代码可以恢复到加密状态。 RSA 1024 License---通过使用RSA KEY系统,破解者无法在没有RSA密匙的情况下制作出你的软件的KeyGen,因为在通常情况下,RSA密匙只有作者本人知道。你同样可以决定,哪一些代码是需要通过RSA密匙来保护的,破解者根本无法获取你的“key.dat”。如果没有正确的KEY,受保护的代码将无法被正确解码。 API ---专用的API系统,外壳以及被保护程序可以被相互调用,从而使外壳和受保护的程序更加紧密地接合在一起。 反补丁/反载入--- 可以有效的防止你的软件被打上补丁/被装载,或者被反编译。 Anti-SoftIce --- 可以探测到Numega SoftIce (tm)和Frogsice。 反调试/反抓取/反跟踪 --- 在反调试的同时,有效的监控W32Dasm、SoftIce、TRW 2000、Turbo Debugger, Sourcer、Filemon、ExeSpy、ResSpy、RegMon、Memory Monitor等常用破解工具是否在运行。 动态代码加密/解密 --- 对你程序中指定代码提供动态加密/解密,有效防止内存补丁(memory patch)。 指定系统授权 --- 通过对用户定义的系统硬件识别识别函数,可以对用户计算机指定授权,确保了被授权的系统的唯一性。 黑名单 --- 可以将那些非法或者被公布的KEY列为黑名单,有效防止非法更新。 试用设置 --- 可以设置使用次数限制、使用日期限制或最后日期限制等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值