提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:黄竹雯|2019-04-26 10:34:34.000|阅读 447 次
概述:VMProtect 是一种很可靠的工具,可以保护应用程序代码免受分析和破解,但只有在应用程序内保护机制正确构建且没有可能破坏整个保护的严重错误的情况下,才能实现最好的效果。本文主要介绍在使用VMProtect前,先准备一个项目。
#慧都22周年庆大促·界面/图表报表/文档/IDE/IOT/测试等千款热门软控件火热促销中>>
相关链接:
VMProtect 是一种很可靠的工具,可以保护应用程序代码免受分析和破解,但只有在应用程序内保护机制正确构建且没有可能破坏整个保护的严重错误的情况下,才能实现最好的效果。
接下来我们一起来看一个非常简单的应用程序,它只包含一个表单(Form1),一个文本元素(Edit1)和一个按钮(Button1)。该应用程序的工作方式如下:单击Button1时,应用程序会检查输入的密码是否正确并显示相应的消息。

这里使用的是一种非常简单的算法来检查密码:第一步,我们将其转换为数字形式,然后我们通过除以17来计算余数。如果输入密码的数字表示除以17的余数等于13,则密码正确。Delphi上的密码检查程序实现如下:
function TForm1.CheckPassword: Boolean;
begin
Result:=(StrToIntDef(Edit1.Text, 0) mod 17=13);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if CheckPassword then
MessageDlg('Correct password', mtInformation, [mbOK], 0)
else
begin
MessageDlg('Incorrect password', mtError, [mbOK], 0);
Edit1.SetFocus;
end;
end;
保护程序和功能的选择可以通过三种方式完成:
使用MAP文件来定义受保护代码的边界有一个很重要的优点。几乎所有具有局部变量或使用堆栈来保存寄存器和/或中间计算结果的过程或函数都有所谓的序言(prologue)和结尾(epilogue),它们相应地位于编译过程或函数的开头和结尾:
push ebp \ mov ebp, esp \ prologue push 00 / push ebx / ... pop ebx \ pop ecx \ epilogue pop ebp / ret /
由于现代编译器的工作方式,代码标记从不包含功能的序言和结尾。即使开始和结束之间的 CheckPassword 函数的整个代码都包含在标记中。对于黑客来说,只需要修改函数的序言让程序不执行虚拟化代码可能就足够了。 对于CheckPassword 函数,可以按如下方式完成:
mov eax, 1 ret
注意:
如果使用MAP文件来选择用于虚拟化的代码片段,则序言和结尾也被虚拟化,从而显着提高受保护程序的防黑客能力。此外,一个虚拟化函数是从另一个虚拟化函数调用的,控件在它们之间传输而不实际跳转到被调用函数的地址(在这种情况下,调用是一个简单的跳转到虚拟机解释器的字节码内的另一个地址)。 这也加强了对程序的保护,因为黑客对入口点的所有修改都没有用。使用虚拟化函数时,只有在从未受保护或变异的代码片段调用受保护函数时,才会将控制权转移到虚拟化函数的入口点。
下篇文章将给大家介绍 VMProtect 准备项目之使用MAP文件,敬请期待~ 如果你有任何问题或建议,请在下方留言噢。
VMProtect 在线订购 低至¥710 (税前),立即购买正版VMProtect>>>
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@hmdbvip.cn




Parasoft C/C++test是一款专为C/C++代码设计的自动化测试工具,通过静态代码分析、单元测试和运行时错误检测等功能,帮助开发团队在早期发现并修复缺陷,提升代码质量和开发效率 。在实际使用中,尤其是在VC6此类旧版开发环境中执行单元测试时,可能会因环境兼容性问题触发链接错误。
本文主要介绍如何在MVVM应用程序中使用虚拟源,欢迎下载最新版组件体验!
Aspose.Slides for Java使用户能够轻松地操作幻灯片、添加注释和转换文件。其易用性和集成能力提高了工作效率,使开发人员能够专注于更关键的任务。
在嵌入式软件测试领域,对交叉编译代码进行单元测试是一大挑战。Parasoft C/C++test作为专业的C/C++测试工具,能够与劳特巴赫Trace32调试器深度集成。下面会详细介绍如何在C++test中配置Trace32调试器,实现对PowerPC架构程序的单元测试,涵盖环境设置、项目导入到测试执行的全过程。
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@hmdbvip.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢
永利最大(官方)网站 