原创 判断程序的执行环境是VM收藏
老V的代码 很古老的
抗VM分析
mov ecx, 0Ah ; CX=function# (0Ah=get_version)
mov eax, 'VMXh' ; EAX=magic
mov dx, 'VX' ; DX=magic
in eax, dx ; specially processed io cmd
; output: EAX/EBX/ECX = data
cmp ebx, 'VMXh' ; also eax/ecx modified (maybe vmw/os ver?)
je under_VMware
bool IsInsideVMWare()
{
bool rc = true;
__try
{
__asm
{
push edx
push ecx
push ebx
mov eax, 'VMXh'
mov ebx, 0 // any value but not the MAGIC VALUE
mov ecx, 10 // get VMWare version
mov edx, 'VX' // port number
in eax, dx // read port
// on return EAX returns the VERSION
cmp ebx, 'VMXh' // is it a reply from VMWare?
setz [rc] // set return value
pop ebx
pop ecx
pop edx
}
}
__except(EXCEPTION_EXECUTE_HANDLER)
{
rc = false;
}
return rc;
}
bool IsInsideVPC()
{
bool rc = false;
__try
{
_asm push ebx
_asm mov ebx, 0 // Flag
_asm mov eax, 1 // VPC function number
// call VPC
_asm __emit 0Fh
_asm __emit 3Fh
_asm __emit 07h
_asm __emit 0Bh
_asm test ebx, ebx
_asm setz [rc]
_asm pop ebx
}
// The except block shouldn't get triggered if VPC is running!!
__except(IsInsideVPC_exceptionFilter(GetExceptionInformation()))
{
}
return rc;
}
给个通用判断的方法,不管VMWare或VirtuaPC都有效
int DCVM ()
{
unsigned char m[2+4], rpill[] = "/x0f/x01/x0d/x00/x00/x00/x00/xc3";
*((unsigned*)&rpill[3]) = (unsigned)m;
((void(*)())&rpill)();
printf ("idt base: %#x/n", *((unsigned*)&m[2]));
if (m[5]>0xd0) printf ("虚拟机/r/n", m[5]);
else printf ("真实机器/r/n");
return 0;
}
相关推荐
Nodejs vm/vm2沙箱逃逸
什么是沙箱:沙箱就是能够像一个集装箱一样,把你的应用“装”起来的技术。这样,应用与应用之间,就因为有了边界而不至于相互干扰而被装进集装箱的应用,也可以被方便地搬来搬去。什么是VM:VM就是虚拟环境,虚拟机,VM的特点就是不受环境的影响,也可以说他就是一个 沙箱环境 (沙箱模式给模块提供一个环境运行而不影响其它模块和它们私有的沙箱)类似于docker,docker是属于 Sandbox(沙箱) 的一种。简而言之,vm提供了一个干净的独立环境,提供测试。
虚拟机检测
下面资料比较老了,记录下只为增加下了解 虚拟机后门检测(IN) __try { __asm { push edx push ecx push ebx mov eax, 'VMXh' mov ebx, 0 // 将ebx设置为非幻数’VMXH’的其它值 mov ecx, 10 // 指定功能号,用于获取VMWare版本,当它为x14时...
【VM服务管家】VM4.0软件使用_1.1 环境配置类
对于实际生产场景中,则是希望间隔耗时越短越好。点击坐标左下角“Win”图标,搜索处输入“gpedit.msc”->按“确定”,打开“本地组策略编辑器”,然后“计算机配置”->“Windows 设置”->“安全设置”->“本地策略”->“安全选项”->“用户帐户控制:以管理员批准模式运行所有管理员”,改为已禁用。1)管理员权限下,安装VM4.0维护20220415的安装包,截止20220505,最新补丁为20220505,建议用户打上最新补丁,若VM4.0维护版2022年5月份之后的有完整包,也可直接使用。
恶意代码分析实战 14 反虚拟机技术
恶意代码用存在漏洞的x86指令来确定自己是否运行在虚拟机中。使用IDA载入脚本文件。给出了地址。第一处:这串字符串进行了修改。查看调用函数的位置。使用OD查看,EAX被赋值为了00DDCC000h,将会跳转,而不会创建线程。第二处:检测虚拟机特征。检测到之后,删除自身。第三处:检测到之后不会执行创建服务的操作。使用OD检查可知,所有的操作都会失效。可能与虚拟机的内核数量有关。sidt指令:多核机器上进行实验,ECX寄存器的值不是0xFF,所以失效。
【VM服务管家】VM4.2平台SDK_6.1 环境配置类
在 Lab VIEW 中通过.net 容器调用第三方库是最简单的方式(当然前提是第三库有.Net 封装),幸运的是,海康机器人的算法平台 SDK 刚好有.net 的封装,使用.net 的封装库,调用者不需要管理内存(绝大多数情况下不需要关心内存的申请和释放),更加激动人心的是,Lab VIEW 开发者调用 VM SDK,是不需要事先了解 SDK 内部 的工作原理,不需要深入理解它的框架,就可以快速开发属于自己的视觉应用。操作步骤:选择项目所在的路径,勾选需要引用的模块,也可以全部引用。
【VM服务管家】VM4.0平台SDK_2.1环境配置类
第三步,启动二次开发导入工具(“\VisionMaster4.0.0\Development\V4.0.0 \ComControls\Tool\ImportRef.exe”),Module(sp)的路径在生成工程Debug下的Module(sp)文件夹,项目所在路径为bin文件的上一层,在选择完指定的路径之后,需要选择引用模块的dll以及是否选择相对路径,最后点击确定,完成环境配置。现象:在VM二次开发中,有些引用需要手动添加,如引用VMControls.WPF.dll进行在渲染控件上绘图。
20145326蔡馨熤《计算机病毒》——高级静态分析(2)
20145326蔡馨熤《计算机病毒》——高级静态分析(2) 尝试使用IDA PRO分析文件lab05-01.dll,回答如下问题: 1.PSLIST导出函数做了什么? 首先在view中选择exports窗口,然后找到PSLIST导出函数。 双击PSLIST,然后按空格键,转换为图形模式,这样的话,观察更直观。 双击第一个call语句。看看有什么发现。如图所示。...
node.js--vm沙箱逃逸初探
前几天遇到一个考察vm沙箱逃逸的题目,由于这个点是第一次听说,所以就花时间了解了解什么是沙箱逃逸。此篇文章是对于自己初学vm沙箱逃逸的学习记录,若记录知识有误,欢迎师傅们指正。就只针对于node.js而言,沙箱和docker容器其实是差不多的,都是将程序与程序之间,程序与主机之间互相分隔开,但是沙箱是为了隔离有害程序的,避免影响到主机环境。为什么node.js语言要引入沙箱,这就要说说js语言中的作用域(也叫上下文)。------->输出undefined-------->输出100。
2022-03-07 Unity 3D 镜头叠加
参考资料:http://blog.sina.com.cn/s/blog_799860f90102vmxh.html 需求:camera_1和camera_2,将camera_2的画面叠加到camera_1上。 设置camera_2的Depth值大于camera_1的值, 然后Clear Flags值设为"Depth only" 并将camera_2的背景透明度设为0(没有看见在哪里设置透明度,没有设置,也达到我想要的需求了),即可完成将camera_2的画面叠加到camera_1的画面上去。 ...
Node.js中的VM模块详解:执行JavaScript代码的虚拟机
VM模块是Node.js的内置模块之一,用于在运行时执行JavaScript代码。它提供了一种在Node.js环境中创建独立的JavaScript虚拟机实例的方式,以便在隔离的环境中执行代码。这种隔离性使得VM模块非常有用,特别是在需要动态执行代码、运行用户提供的脚本或实现沙箱环境时。
手把手教你用Gazebo插件实现阿克曼底盘仿真(附Navigation2适配指南)
本文提供了一份完整的ROS2 Navigation2与Gazebo阿克曼底盘仿真全栈指南。从阿克曼运动学原理出发,详细讲解了如何构建URDF/SDF模型、集成gazebo_ros_ackermann_drive插件并进行PID调优,并重点阐述了如何深度适配Navigation2,包括配置Ackermann运动模型、调整规划器与恢复行为,最终实现从建图到自主导航的全流程仿真。
判断程序的执行环境是VM
来段老V的代码 很古老的抗VM分析 mov ecx, 0Ah ; CX=function# (0Ah=get_version) mov eax, VMXh ; EAX=magic mov dx, VX ; DX=magic in eax, dx ; specially
Python邮件自动化实战:基于imaplib和email库的高效邮件管理方案
本文详细介绍了如何使用Python的imaplib和email库实现高效邮件自动化管理。通过实战案例展示自动收取、解析邮件、下载附件等核心功能,帮助开发者快速构建企业级邮件处理系统,大幅提升工作效率。特别适合需要处理大量邮件的金融、数据分析等场景。
idea程序参数,VM选项,环境变量
idea程序参数,VM选项,环境变量
如何用ggplot2绘制专业级双侧柱状图展示GO富集结果(附完整代码)
本文详细介绍了如何使用R语言的ggplot2包绘制专业级双侧柱状图展示GO富集结果,包括数据预处理、基础图形构建、高级样式定制和出版级细节调整。通过完整的代码示例和实用技巧,帮助生物信息学研究人员高效可视化高通量数据,提升学术图表的质量和可读性。
学Simulink——基于Simulink的输入-输出线性化精确转矩控制
本文详细介绍了基于Simulink的永磁同步电机(PMSM)输入-输出线性化(IOL)精确转矩控制方法。针对传统解耦控制在非线性转矩特性下的局限性,提出通过精确反馈线性化实现转矩指令与实际转矩的严格线性关系。文章系统阐述了IOL原理、PMSM控制器推导过程,并提供了完整的Simulink建模步骤,包括电机模型搭建、IOL控制器实现和闭环系统构建。通过仿真对比验证了IOL方法在转矩跟踪精度、动态响应和参数鲁棒性方面的显著优势,最后讨论了工程实现要点和扩展应用方向。该方法为高性能伺服系统开发提供了有效解决方案。
node之vm2库,js沙盒环境
vm2 是一个用于在 Node.js 中创建沙盒环境的模块。它提供了一种安全执行 JavaScript 代码的方式,可以隔离和限制代码的访问权限,防止恶意代码对系统造成损害。创建沙盒环境:vm2 允许你创建一个虚拟机实例(VM),在该实例中运行 JavaScript 代码。这个虚拟机实例是一个隔离的环境,与主 Node.js 进程相互独立,可以在其中执行代码。限制访问权限:vm2 允许你限制代码对系统资源的访问权限。你可以控制代码能否访问全局对象、模块、文件系统和网络等资源,从而提供更高的安全性。
Classic AUTOSAR精讲专栏目录
欢迎大家来到钢琴上的汽车软件创建的《Classic AUTOSAR精讲系列专栏》,期待在这里能够与大家一起进步,分享成功,分享喜悦!下面蓝色的文章标题都是传送门,点击直接跳转到对应文章。
终极指南:如何使用vm2构建安全的用户自定义脚本执行环境
在现代应用开发中,执行用户自定义脚本是一项常见需求,但安全风险也随之而来。**vm2**作为Node.js生态中领先的沙箱解决方案,能够在隔离环境中运行不受信任的代码,同时提供白名单控制的Node.js内置模块访问。本文将通过实战案例,展示如何利用vm2构建安全可靠的用户脚本执行环境,保护你的应用免受恶意代码攻击。 ## 📦 快速入门:vm2的安装与基础配置 ### 一键安装步骤 使用np
2026华为OD机试(C++)真题【E卷+A卷+B卷+C卷+D卷】目录+在线OJ
华为OD机试真题题库【E卷+A卷+B卷+C卷+D卷】目录,C++实现。
飞牛NAS新增虚拟机功能,如果使用虚拟机网卡直通安装ikuai软路由(如何解决OVS网桥绑定失败以及打开ovs后无法访问飞牛nas等问题)
飞牛NAS新增虚拟机功能,如果使用虚拟机网卡直通安装ikuai软路由
CANN/hcomm HCCL-VM虚拟执行环境
HCCL-VM is a virtual execution environment for high-performance collective communication targeting Huawei Ascend NPU cards. This tool enables the development and functional verification of HCCL collec
第十二天:Python字典(Dict)详解
字典(Dictionary)是Python中最强大的数据类型之一,它是一种可变的、无序的键值对(key-value)集合。字典中的元素是通过键(key)来存取的,而不是通过偏移量(如列表中的索引)。 字典的核心特性包括: 键值对结构:每个元素由一个键和一个值组成,中间用冒号(:)分隔 无序性:字典中的元素没有固定的顺序(Python 3.7+版本中字典会保持插入顺序,但不应依赖此特性进行顺序操作) 可变性:可以动态地添加、修改或删除键值对 键的唯一性:字典中的键必须是唯一的,如果重复,后面的键值对会覆盖
补环境:vm2 transformer.js 源码分析
throw makeNiceSyntaxError('Use of internal vm2 state variable', code, filename, internStateValiable.start,SyntaxError: Use of internal vm2 state variable
android 蓝牙通讯demo
android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。
假人有限元模型
假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用
OpenClaw 中的 OpenProse VM 系统提示词强制:把专用 Agent 实例变成 .prose 程序执行器
OpenProse 是一套以"AI 会话即图灵完备计算机"为理念的多 Agent 编排语言(`.prose` 程序),而 `system-prompt.md` 正是这套体系里负责"身份强制"的关键提示词附加块:它把某个 Agent 实例锁死为 OpenProse VM(虚拟机),使其只能执行 `.prose` 程序,拒绝一切无关请求。本文以该文档为骨架,结合 OpenClaw 仓库中 OpenPr
C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片
基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正
3223



被折叠的 条评论
为什么被折叠?



