加密解密软件VMProtect入门使用教程(四):准备项目

news2024/11/27 1:31:05

VMProtect是新一代软件保护实用程序。VMProtect支持德尔菲、Borland C Builder、Visual C/C++、Visual Basic(本机)、Virtual Pascal和XCode编译器。

同时,VMProtect有一个内置的反汇编程序,可以与Windows和Mac OS X可执行文件一起使用,并且还可以链接编译器创建的MAP文件,以快速选择要保护的代码片段。

为了轻松实现应用程序保护任务的自动化,VMProtect实现了内置脚本语言。VMProtect完全支持Windows系列的32/64位操作系统(从Windows 2000开始)和Mac OSX(从版本10.6开始)。重要的是,无论目标平台如何,VMProtect都支持所有范围的可执行文件,即Windows版本可以处理Mac OS X版本的文件,反之亦然。

VMProtect最新下载

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 文件以及程序的可执行文件。MAP 文件包含有关应用程序所有过程和功能的名称和地址的所有必要信息。如果使用 MAP 文件,您可以选择要通过名称保护的过程和函数。使用 MAP 文件,每次重新编译项目时,VMProtect 都会自动确定过程和函数的新地址。
  • 使用插入到应用程序源代码中的标记。标记是 VMProtect 用来确定受保护片段边界的特殊标记。此外,VMProtect 支持具有预定义编译类型的标记。当您只想保护函数或过程的一部分时,使用标记是有意义的。使用标记允许您指定要保护的字符串常量的代码部分。
  • 通过可执行文件中受保护过程的地址。与上述两种方式相比,这种方式使用起来不太方便。每次修改和重新编译应用程序时,您都必须重新指定所有地址。对于没有可用源代码的应用程序,建议使用这种类型的保护。

使用 MAP 文件定义受保护代码的边界还有一个更重要的优势。几乎所有具有局部变量或使用堆栈保存寄存器和/或中间计算结果的过程或函数都有所谓的序言和结语,它们相应地位于已编译过程或函数的开头和结尾:

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 文件来选择用于虚拟化的代码片段,则序言和结尾也会被虚拟化,从而提高受保护程序的防黑客攻击能力。此外,如果一个虚拟化函数被另一个虚拟化函数调用,则控制权在它们之间转移而不实际跳转到被调用函数的地址(在这种情况下,调用是简单地跳转到虚拟机解释器字节码中的另一个地址)。这也加强了对程序的保护,因为黑客对入口点所做的所有修改都变得毫无用处。使用虚拟化函数时,仅当从未受保护或变异的代码片段调用受保护函数时,才会将控制权转移到虚拟化函数的入口点。如有软件下载需求,请私信我~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/513373.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【2023 年第三届长三角高校数学建模竞赛】B 题 长三角新能源汽车发展与双碳关系研究 新能源汽车销售相关数据160M+下载

【2023 年第三届长三角高校数学建模竞赛】B 题 长三角新能源汽车发展与双碳关系研究 新能源汽车销售相关数据160M下载 1 题目 《节能与新能源汽车技术路线图 2.0》提出至 2035 年,新能源汽车市场占比超过 50%,燃料电池汽车保有量达到 100 万辆&#xff…

想做外贸却没有头绪?来看看这篇文章

海关总署公布最新数据:今年前4个月,我国外贸进出口总值13.32万亿元,同比增长5.8%,其中出口7.67万亿元,同比增长10.6%;进口5.65万亿元,同比增长0.02%。月度调查显示,出口订单增加的企…

图解LeetCode——238. 除自身以外数组的乘积

一、题目 给你一个整数数组 nums,返回 数组 answer ,其中 answer[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积 。 题目数据 保证 数组 nums之中任意元素的全部前缀元素和后缀的乘积都在 32 位 整数范围内。 请不要使用除法,且在 O(n…

SoringBoot——pom文件:starter

先来看一看: 这次我们来介绍SpringBoot的pom文件的另一个好玩的地方:starter。 starter的中文含义是启动器,所以有时候我们在Maven仓库找依赖的时候,如果开启了自动翻译就会经常会看见一个奇怪的词叫做某某弹簧启动器&#xff0…

2023年河北沃克高位承重货架最新中标项目|中国沈阳某大型集团高位重型横梁式货架项目建设初期

【项目名称】高位重型横梁式货架项目 【承建单位】河北沃克金属制品有限公司 【合作客户】中国沈阳某大型集团 【建设时间】2023年5月上旬 【建设地域】中国沈阳地区 【项目客户需求】 本次沈阳高位重型横梁式货架项目合作的沈阳某大型集团中国变压器行业规模最大的制造企…

AIGC的发展与机遇

陈老老老板🦸 👨‍💻本文专栏:赠书活动专栏(为大家争取的福利,免费送书)试一下文末赠书,讲一些科普类的知识 👨‍💻本文简述:本篇内容的引用都已征…

Protobuf: 高效数据传输的秘密武器

当涉及到网络通信和数据存储时,数据序列化一直都是一个重要的话题;特别是现在很多公司都在推行微服务,数据序列化更是重中之重,通常会选择使用 JSON 作为数据交换格式,且 JSON 已经成为业界的主流。但是 Google 这么大…

《理解了实现再谈网络性能》读书笔记

文章目录 内核是如何接收网络包的1.1 Linux⽹络收包总览1.2 linux 启动创建ksoftirqd进程网络子系统初始化协议栈注册网卡驱动初始化启动网卡 1.3 迎接数据的到来硬中断处理ksoftirqd 内核线程处理软中断网络协议栈处理IP协议层处理 完整流程 内核是如何接收网络包的 1.1 Linu…

使用阿里云服务器建站WordPress博客网站上线全流程

使用阿里云服务器快速搭建网站教程,先为云服务器安装宝塔面板,然后在宝塔面板上新建站点,阿里云服务器网以搭建WordPress网站博客为例,来详细说下从阿里云服务器CPU内存配置选择、Web环境、域名解析到网站上线全流程: …

常见概率分布及图像

概率分布 文章目录 概率分布[toc]1 离散概率分布1.1 伯努利分布1.2 二项分布1.3 泊松分布 2 连续概率分布2.1 均匀分布2.2 指数分布2.3 正态分布2.4 卡方分布2.5 Student分布3.5 F分布 1 离散概率分布 1.1 伯努利分布 随机变量 X X X仅取两个值, X 0 , 1 X0,1 X0…

【2023 年第三届长三角高校数学建模竞赛】C 题 考研难度知多少 考研情况相关数据下载

【2023 年第三届长三角高校数学建模竞赛】C 题 考研难度知多少 1 题目 C 题 考研难度知多少 据相关媒体报道,2023 年考研可以称得上是“最难”的一年,全国研究生报考人数突破新高达到 474 万人、部分考研学生感染新冠带病赴考、保研名额增多 挤压考研…

依次判断数组a1中的每个元素是否小于数组a2中对应位置的每个元素numpy.less()

【小白从小学Python、C、Java】 【计算机等考500强证书考研】 【Python-数据分析】 依次判断数组a1中的每个元素 是否小于数组a2中对应位置的每个元素 numpy.less() 选择题 以下程序的运行结果是? import numpy as np a1np.array([1,2,3]) a2np.array([3,2,1]) print("【…

消息推送平台的实时数仓?flink消费kafka消息入到hive

上一次比较大的更新是做了austin的预览地址,把企业微信的应用和机器人消息各种的消息类型和功能给完善了。上一篇文章也提到了,austin常规的功能已经更新得差不多了,剩下的就是各种细节的完善。 不知道大家还记不记得我当时规划austin时&…

免费使用的在线Axure原型工具找到了!

在线 Axure 工具替代即时设计,不需要安装插件,直接在浏览器中打开 Axure 原型文件,操作更加便捷。除了支持 Axure,即时设计还兼容 Figma、Sketch、AdobeXD 等更多文件类型,可用于线框设计、UI/UX 设计、原型交互、免切…

linux内核:笔记3-网络数据包收发流程

1.网络分层中,内核协议栈负责实现网络层和传输层 2.内核对用户进程提供socket接口用以调用 3.Linux内核包含链路层驱动用来驱动网络设备 4.内核网络层用来实现IP、ICMP以及IGMP 5.内核层传输层用来实现TCP和udp协议 6.内核源码中网络设备驱动对应的代码位于dri…

KDZD-100A触摸屏回路电阻测试仪

一、简介 测试仪是根据电力执行标准DL/T845.4-2004,采用高频开关电源技术和数字电路技术相结合设计而成。它适用于开关控制设备回路电阻的测量。其测试电流采用国家标准推荐的直流100A。可在电流100A的情况下直接测得回路电阻,并用数字显示出来。测量准确…

劝你们不要去外包,两年外包生涯做完,感觉自己废了一半....

先说一下自己的情况。大专生,17年通过校招进入湖南某软件公司,干了接近5年的点点点,今年年上旬,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了五年的功能测试…

​TPAMI 2023 | 无监督域适应语义分割新视角:统一图像和特征层次的对齐

©PaperWeekly 原创 作者 | 陈超奇 单位 | 香港大学 研究方向 | 迁移学习 论文标题: I2F: A Unified Image-to-Feature Approach for Domain Adaptive Semantic Segmentation 论文链接: https://arxiv.org/abs/2301.01149(预印版&#x…

了解微服务技术栈

在了解微服务技术栈之前,我们先通过图片去了解微服务技术的类别。 微服务技术体系 技术栈模块图 微服务技术对比 服务框架 用JAVA技术开发微服务,比较主流的选择有:Spring Cloud 和 Dubbo。 Spring Cloud是在Spring基础上构建的,…

机器学习之朴素贝叶斯二、情感分析实践

目录标题 一、什么是朴素贝叶斯?二、利用朴素贝叶斯进行情感分析1. 数据类别说明2. 什么是词袋模型3. 数据展示4. 利用词袋模型进行词表构建5. 到了这一步,我们的前期工作都已经准备好了,有了样本的向量化数据,开始进行 朴素贝叶斯…