xp的viostor驱动无法获取磁盘序列号的分析

        深信服的viostor驱动在获取序列号的时候,多了一个IDE处理的代码,位置在+1128处。它会在刚开机加载viostor.sys时机被调用,然后去读取注册表HKLM\\SYSTEM\CurrentControlSet\Services\viostor\Parameters的IDESNCompat,若为1则有此功能,若未0则不会得到正确的磁盘序列号。相关调用栈回溯是:

对DriverEntry逆向,如下处有调用isIDESerialNumber。

NTSTATUS __stdcall DriverEntry(PDRIVER_OBJECT DriverObject, PUNICODE_STRING RegistryPath)
{NTSTATUS v2; // esichar v3; // alstruct _HW_INITIALIZATION_DATA HwInitializationData; // [esp+8h] [ebp-58h] BYREFchar v6; // [esp+44h] [ebp-1Ch]__int16 v7; // [esp+46h] [ebp-1Ah]char *v8; // [esp+48h] [ebp-18h]__int16 v9; // [esp+4Eh] [ebp-12h]char *v10; // [esp+50h] [ebp-10h]int (__stdcall *v11)(PVOID, int, int); // [esp+54h] [ebp-Ch]char v12[8]; // [esp+58h] [ebp-8h] BYREFqmemcpy(v12, "10011AF4", sizeof(v12));dword_14630 = (int)DriverObject;sub_12252(DriverObject, RegistryPath);byte_1465C = RegistryPath == 0;memset(&HwInitializationData, 0, 0x50u);v7 = 4;v8 = &v12[4];v9 = 4;v10 = v12;HwInitializationData.HwInitializationDataSize = 80;HwInitializationData.DeviceExtensionSize = (ULONG)sub_112A8;HwInitializationData.HwReceivePacket = (PHW_RECEIVE_DEVICE_SRB)sub_1149A;HwInitializationData.HwCancelPacket = (PHW_CANCEL_SRB)CancelPkt_1D70;HwInitializationData.HwRequestTimeoutHandler = (PHW_REQUEST_TIMEOUT_HANDLER)sub_115C4;HwInitializationData.PerRequestExtensionSize = (ULONG)sub_10EC4;v11 = sub_116EC;v6 = 1;*(_DWORD *)&HwInitializationData.BusMasterDMA = 1592;*(_DWORD *)&HwInitializationData.TurnOffSynchronization = 2200;HwInitializationData.HwInterrupt = (PHW_INTERRUPT)5;HwInitializationData.DmaBufferSize = 1;HwInitializationData.NameExtensionArray = (PWCHAR *)16843009;v2 = ScsiPortInitialize(DriverObject, RegistryPath, &HwInitializationData, 0);v3 = isIDESerialNumber_1128();

GetIdeFormatSerialNumber是因为DriverEntry里注册了函数sub_11D70而后被调用。调用时机也是发生在刚开机viostor刚载入时。调用时的相关栈回溯如下:

GetIdeFormatSerialNumber的反编译如下:

_BYTE *__stdcall GetIdeFormatSerialNumber(_BYTE *P)
{unsigned int v1; // esi_BYTE *result; // eaxint Length; // eax_BYTE *PoolWithTag; // ediint v5; // eaxint v6; // eaxchar DstBuf; // [esp+Ch] [ebp-Ch] BYREFint v8; // [esp+Dh] [ebp-Bh]unsigned int v9; // [esp+14h] [ebp-4h] BYREFv1 = 0;DstBuf = 0;v8 = 0;v9 = 0;if ( !P )return 0;Length = RtlStringCchLength((int)P, 0x14u, &v9);if ( Length < 0 ){DbgPrint("GetIdeFormatSerialNumber failed in RtlStringCchLength:%x", Length);return 0;}PoolWithTag = ExAllocatePoolWithTag(NonPagedPool, 0x28u, 'SEDI');if ( !PoolWithTag ){DbgPrint("GetIdeFormatSerialNumber ExAllocateWithTage failed.\n");return 0;}memset(PoolWithTag, 0, 0x28u);if ( v9 ){while ( v1 + 1 < v9 ){v5 = RtlStringCchPrintf(&DstBuf, 5, "%2x%2x", (char)P[v1 + 1], (char)P[v1]);if ( v5 < 0 )goto LABEL_16;v6 = sub_1119E(PoolWithTag, 40, &DstBuf);if ( v6 < 0 )goto LABEL_18;v1 += 2;if ( v1 >= v9 )break;}}if ( v1 + 1 == v9 ){v5 = RtlStringCchPrintf(&DstBuf, 5, "%2x", (char)P[v1]);if ( v5 < 0 ){
LABEL_16:DbgPrint("GetIdeFormatSerialNumber failed in RtlStringCbPrintf:%x", v5);}else{BYTE1(v8) = 0;v6 = sub_1119E(PoolWithTag, 40, &DstBuf);if ( v6 >= 0 )goto LABEL_15;
LABEL_18:DbgPrint("GetIdeFormatSerialNumber failed in RtlStringCbCat:%x", v6);}ExFreePoolWithTag(PoolWithTag, 'SEDI');return 0;}
LABEL_15:result = PoolWithTag;PoolWithTag[39] = 0;return result;
}

开源代码里面没有IDE处理代码,只有一种逻辑

初步看GetIdeFormatSerialNumber和isIDESerialNumber都比较简单,基本没有用到全局变量,应该可以直接抄反编译代码。因为我没有编译出xp版本viostor的环境,所以没法做实验了。

通过DeviceIoControl(SMART_RCV_DRIVE_DATA)来查询磁盘序列号。若采用深信服的viostor.sys,则可查询到outputbuffer+0x24处是正确的磁盘序列号文字。

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

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

相关文章

十问亿级神经元类脑计算机:AI领域有望突破,哪些还需火候

来源&#xff1a;澎湃新闻近日&#xff0c;浙江大学联合之江实验室共同研制成功了中国首台基于自主知识产权类脑芯片的类脑计算机&#xff08;Darwin Mouse&#xff09;。研究团队在9月1日的成果发布会上指出&#xff0c;该类脑计算机在神经元规模上超越了德国海德堡大学的Brai…

网络加载空页面

空页面的显示很常用&#xff0c;所以自己做了一个通用的空页面显示&#xff0c;先看效果图 在有网络的时候正常加载显示&#xff0c;在没有网络的时候自动加载空页面&#xff0c;点击空页面重新加载网络请求的一个功能 1&#xff1a;定义一个xml页面&#xff0c;页面布局是一个…

excel有的单元文字可以超出单元格_excel单元格斜线

excel表格的强大功能&#xff0c;给办公带来了很多便捷&#xff0c;但是有很多强大的功能&#xff0c;其实我们都还不会用&#xff0c;如在做报表时&#xff0c;要用到给单元格加两条斜线&#xff0c;三条斜线时&#xff0c;有时就不知道怎么弄&#xff0c;两条或许会&#xff…

百度地图发布专网地图时空数据托管平台,构建智慧城市数字底盘

来源&#xff1a;百度地图“新基建”浪潮下&#xff0c;智慧城市的建设和发展进一步提速&#xff0c;作为智慧城市数字基础设施的地理信息系统&#xff0c;其数据体量也极大增长&#xff0c;对海量GIS数据集成、存储、管理、计算、表达、分析和应用等有关技术的创新发展提出了急…

word取消空格显示为点

其实就是编辑标记的隐藏与显示问题 看这里 这就是“显示/隐藏编辑标记”按钮&#xff0c;加深颜色时就会和我的文章一样有点点&#xff0c;再点击一下就好啦。

cad细等线体不显示_CAD图纸乱码、钢筋符号不显示解决办法(内含万能字体)

好课推荐&#xff1a;零基础CAD&#xff1a;点我CAD室内&#xff1a;点我 周站长CAD&#xff1a;点我CAD机械&#xff1a;点我 Bim教程&#xff1a;点我CAD建筑&#xff1a;点我CAD三维&#xff1a;点我全屋定制&#xff1a;点我 ps教程&#xff1a;点我苹果版CAD:点我 3dmax教…

长达1500年之久的争论:意识是连续的还是离散的?心理物理学家给出了新的回答...

来源&#xff1a;brainnews两种主要理论推动了由Saint Augustine发起的长达1500年之久的争论&#xff1a;意识是连续的&#xff08;即我们在每一个时间点都有意识&#xff09;&#xff0c;还是离散的&#xff08;即我们只在特定的时刻有意识&#xff09;&#xff1f; 9月3日发表…

kind富文本编辑器_在VueJs中集成UEditor 富文本编辑器

来源 | http://www.mshady.com/archives/378在vue的项目中遇到了需要使用富文本编辑器的需求&#xff0c;在github上看了很多vue封装的editor插件&#xff0c;很多对图片上传和视频上传的支持并不是很好&#xff0c;最终还是决定使用UEditor。这类的文章网上有很多&#xff0c;…

彭博社 : 中国稀土——美欧的苦恼

文章来源&#xff1a;彭博社作者&#xff1a;Joe Deaux图片、视频来源&#xff1a;网络编辑&#xff1a;江上波对于那些用于电动汽车、风力涡轮机等领域的稀有原材料&#xff0c;美国和欧洲提高产量、降低对中国依赖性的雄心壮志将面临很多障碍&#xff0c;包括更高的成本和环境…

反射应用二:利用反射加配置文件实现多数据库的访问

在上一篇文章中讲解了什么是反射&#xff0c;以及利用反射可以获取程序集里面的哪些内容。在平时的项目中&#xff0c;可能会遇到项目需要使用多种数据库&#xff0c;这篇文章中将会讲解如何利用反射实现访问多种数据库。 项目整体结构如下图所示&#xff1a; 1、Database.Inst…

2020未来科学大奖获奖名单揭晓

来源&#xff1a;高分子科技9月6日上午&#xff0c;2020 年未来科学大奖重磅揭晓&#xff0c;三大奖项获奖者分别为&#xff1a;未来科学大奖生命科学奖获奖者&#xff1a;张亭栋、王振义未来科学大奖物质科学奖获奖者&#xff1a;卢柯未来科学大奖数学与计算机科学奖获奖者&am…

与40mhz信道不兼容设置_物理信道发射功率

先上图与HSDPA有关的三个物理信道HS_SICH(TS2),HS_PDSCH(TS3,4,5),HS_SCCH(TS6).&#xff11;、 PCCPCH_power:PCCPCH承载BCH&#xff0c;为TS0时隙码道1和码道2的功率之和&#xff0c;以固定功率发射&#xff0c;一般设为30dBm。根据具体无线环境&#xff0c;可以优化设置…

带父节点的平衡二叉树_深入理解(二叉树、平衡二叉树、B-Tree、B+Tree )的区别

一、背景一般说MySQL的索引&#xff0c;都清楚其索引主要以B树为主&#xff0c;此外还有Hash、RTree、FullText。本文简要说明一下MySQL的BTree索引&#xff0c;以及和其相关的二叉树、平衡二叉树、B-Tree&#xff0c;相关的知识网上很多&#xff0c;为了方便自己更快、清楚的了…

2020年中国新基建人工智能产业链全景图深度分析汇总(附完整企业名单)

来源&#xff1a;北京物联网智能技术应用协会“新基建”是与传统基建相对应&#xff0c;结合新一轮科技革命和产业变革特征&#xff0c;面向国家战略需求&#xff0c;为经济社会的创新、协调、绿色、开放、共享发展提供底层支撑的具有乘数效应的战略性、网络型基础设施。其中“…

Word设置子标题跟随上级标题变化

1 先看看结果吧&#xff0c;结果可实现子标题跟随上级标题变动 2 设置各级标题 2.1 对于1级标题-“标题1”&#xff0c;修改标题样式样式基准&#xff1a;“正文”格式&#xff1a;段落&#xff1a;大纲级别&#xff1a;1级2.2 对于2级标题-“标题2”&#xff0c;修改标题样…

2压缩备份数据库_MySQL数据库备份

前端监控&#xff1a;www.webfunny.cn &#xff1b;只需要简单几步&#xff0c;就可以搭建一套属于自己的前端监控系统&#xff0c;快来试试吧。(github&#xff1a;webfunny_monitor)一、mysqldump 简介mysqldump 是 MySQL 自带的逻辑备份工具。它的备份原理是通过协议连接到 …

人工智能和物联网:智慧城市的交通管理

来源&#xff1a;帮尼资讯当今的智慧城市由不断重塑城市地区的先进技术提供发展驱动力。人工智能和物联网对于世界的运作越来越不可或缺。基于云的服务、物联网、分析平台和许多AI工具正在改变城市居民与环境互动和在环境中出行的方式。纽约市AI咨询和开发机构Blue Orange Digi…

Linux 计划任务

1.计划任务&#xff1a;at一次性计划任务。 &#xff08;1&#xff09;/etc/init.d/atd status   #查看at命令是否开启。 &#xff08;2&#xff09;yum -y install at     #安装at命令 命令&#xff1a; # 一次性计划任务。命令&#xff1a;at 09:14 /回车    at&g…

李德毅院士:基于驾驶脑的智能驾驶车辆硬件平台架构

来源&#xff1a;中国工程院院刊转自&#xff1a;智车科技导 读&#xff1a; 智能驾驶车辆试验平台是人工智能科学、认知科学、控制科学等多个学科领域的最新理论与实践的成果&#xff0c;也是研究智能驾驶理论与技术的基础。不同智能驾驶试验平台的传感器型号、数量、安装位置…

jdk+Tomcat环境搭建

jdk安装与环境变量配置测试Java是否安装好&#xff0c;可以利用cmd命令提示符进行测试。在界面中输入Java&#xff0c;然后回车&#xff1b;得到下图所示的内容&#xff0c;说明安装成功了&#xff0c;可以进行环境变量配置了。进行环境变量配置&#xff0c;首先新建环境变量&a…