当前位置: 首页 > news >正文

sfc_os!SfcValidateDLL函数分析之cache文件版本

第一部分:

0: kd> dx -id 0,0,ffffffff89ce3d88 -r1 (*((sfc_os!_COMPLETE_VALIDATION_DATA *)0x12380e0))
(*((sfc_os!_COMPLETE_VALIDATION_DATA *)0x12380e0))                 [Type: _COMPLETE_VALIDATION_DATA]
[+0x000] Original         [Type: _IMAGE_VALIDATION_DATA]
[+0x058] Cache            [Type: _IMAGE_VALIDATION_DATA]
[+0x0b0] New              [Type: _IMAGE_VALIDATION_DATA]
[+0x108] RestoreFromReal  : 0 [Type: int]
[+0x10c] RestoreFromCache : 0 [Type: int]
[+0x110] RestoreFromMedia : 0 [Type: int]
[+0x114] NotifyUser       : 0 [Type: int]
[+0x118] BadCacheEntry    : 0 [Type: int]
[+0x11c] EventLog         : 0x0 [Type: unsigned long]
0: kd> dx -id 0,0,ffffffff89ce3d88 -r1 (*((sfc_os!_IMAGE_VALIDATION_DATA *)0x12380e0))        [+0x000] Original
(*((sfc_os!_IMAGE_VALIDATION_DATA *)0x12380e0))                 [Type: _IMAGE_VALIDATION_DATA]
[+0x000] DllVersion       : 0x500020ece0000 [Type: unsigned __int64]
[+0x008] DllCheckSum      : 0xcb39 [Type: unsigned long]
[+0x00c] SignatureValid   : 0 [Type: int]
[+0x010] FilePresent      : 1 [Type: int]
[+0x014] FileName         [Type: unsigned short [32]]

0: kd> dx -id 0,0,ffffffff89ce3d88 -r1 (*((sfc_os!_IMAGE_VALIDATION_DATA *)0x1238138))        [+0x058] Cache
(*((sfc_os!_IMAGE_VALIDATION_DATA *)0x1238138))                 [Type: _IMAGE_VALIDATION_DATA]
[+0x000] DllVersion       : 0x0 [Type: unsigned __int64]
[+0x008] DllCheckSum      : 0x0 [Type: unsigned long]
[+0x00c] SignatureValid   : 0 [Type: int]
[+0x010] FilePresent      : 0 [Type: int]
[+0x014] FileName         [Type: unsigned short [32]]

第二部分:

   //
// get the version information for both files (the cached version and the
// current version)
//

    SfcGetValidationData( &RegVal->FileName,
&RegVal->FullPathName,
RegVal->DirHandle,
hCatAdmin,
&ImageValData->Original);

    {
UNICODE_STRING FullPath;
WCHAR Buffer[MAX_PATH];

        RtlZeroMemory( &ImageValData->Cache, sizeof(IMAGE_VALIDATION_DATA) );

        FileName = FileNameOnMedia( RegVal );
RtlInitUnicodeString( &ActualFileName, FileName );


ASSERT(FileName != NULL);

        wcscpy(Buffer, SfcProtectedDllPath.Buffer);
pSetupConcatenatePaths( Buffer, ActualFileName.Buffer, UnicodeChars(Buffer), NULL);
RtlInitUnicodeString( &FullPath, Buffer );

0: kd> dv
vrd = 0x0112916c
hCatAdmin = 0x01c0caf8
ActualFileName = "pidgen.dll"


ASSERT(FileName != NULL);

        wcscpy(Buffer, SfcProtectedDllPath.Buffer);
pSetupConcatenatePaths( Buffer, ActualFileName.Buffer, UnicodeChars(Buffer), NULL);
RtlInitUnicodeString( &FullPath, Buffer );

0: kd> dv
vrd = 0x0112916c
hCatAdmin = 0x01c0caf8
ActualFileName = "pidgen.dll"
FullPath = "c:\windows\system32\dllcache\pidgen.dll"
Buffer = unsigned short [260]


第三部分:

0: kd> t
Breakpoint 19 hit
sfc_os!SfcGetValidationData:
001b:768377e5 55              push    ebp
0: kd> kc
#
00 sfc_os!SfcGetValidationData
01 sfc_os!SfcValidateDLL
02 sfc_os!SfcQueueValidationThread
03 kernel32!BaseThreadStart
0: kd> dv
FileName = 0x007cf510 "pidgen.dll"
FullPathName = 0x007cf508 "c:\windows\system32\dllcache\pidgen.dll"
DirHandle = 0x00000010
hCatAdmin = 0x01c0caf8
ImageValData = 0x01238138
FileHandle = 0x77f7b0f8

http://www.xdnf.cn/news/1327573.html

相关文章:

  • python的社区互助养老系统
  • 【实时Linux实战系列】实时平台下的图像识别技术
  • 微软AD国产化替换倒计时——不是选择题,而是生存题
  • 初识线段树
  • 电影购票+票房预测系统 - 后端项目介绍(附源码)
  • 114. 二叉树展开为链表
  • 华为云之开发者空间云主机使用体验【玩转华为云】
  • RH134 运行容器知识点
  • 【QT入门到晋级】进程间通信(IPC)-socket(包含性能优化案例)
  • 面试题储备-MQ篇 3-说说你对Kafka的理解
  • 如何使用DeepSeek解析长pdf的文本
  • 需求开发广告系列 Gmail广告投放教程
  • 跨域信息结构:四界统一的动态机制
  • 大模型 + 垂直场景:搜索/推荐/营销/客服领域开发新范式与技术实践
  • 机器学习概念(面试题库)
  • 智慧校园中IPTV融合对讲:构建高效沟通新生态
  • [激光原理与应用-305]:光学设计 - 单个光学元件(纯粹的光学元件)的设计图纸的主要内容、格式与示例
  • 北京国标调查:以科学民意调查赋能决策,架起沟通与信任的桥梁(满意度调查)
  • PicoShare 文件共享教程:cpolar 内网穿透服务实现跨设备极速传输
  • 数控滑台的功能与应用范围
  • 如何用给各种IDE配置R语言环境
  • 大数据云原生是什么
  • 如何计算 PCM 音频与 YUV/RGB 原始视频文件大小?
  • 【AI】算法环境-显卡、GPU、Cuda、NVCC和cuDNN的区别与联系
  • JVM垃圾回收(GC)深度解析:原理、调优与问题排查
  • 牛津大学xDeepMind 自然语言处理(2)
  • kkfileview预览Excel文件去掉左上角的跳转HTM预览、打印按钮
  • 浅看架构理论(二)
  • ‌关于人工智能(AI)的发展现状和未来趋势的详细分析!
  • Kubernetes 简介