当前位置: 首页 > 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.dtcms.com/a/339535.html

相关文章:

  • “R语言+遥感”的水环境综合评价方法实践技术应用
  • 告别 Dify 工作流,让 NL2SQL 落地更直接
  • 【动态规划:路径问题】最小路径和 地下城游戏
  • JCTools Spsc:单生产者-单消费者无锁队列
  • 使用 Map 存储值和使用对象object储存的区别
  • 18.web api 9
  • C++高频知识点(二十七)
  • three.js学习记录(第三节:平面几何体BufferGeometry)
  • ADSP-21565开发板和ADSP-21569开发板的底板设计区别
  • ComfyUI 里的 Prompt 插值器(prompt interpolation / text encoder 插值方式)的含义和作用!
  • 通信方式:命名管道
  • nuc设置脚本开机自启动
  • 9.Ansible管理大项目
  • 实现LoRa通信与低功耗流程(无SPI中断)
  • Pegasus,HBASE,Redis比较
  • UML常见图例
  • 源代码部署 LAMP 架构
  • C++小游戏NO.1游戏机
  • 通过分布式系统的视角看Kafka
  • Gemini CLI 最近版本更新说明(v0.1.17~v0.1.22)
  • pyecharts可视化图表K线图_Candlestick:从入门到精通 (进阶版)
  • 技术分享:跨域问题的由来与解决
  • AP6275S AMPAK正基WiFi6模块方案与应用
  • 阀门漏水超声波检测类产品有哪些?
  • 【habitat学习一】Habitat-Lab 配置键文档详解(CONFIG_KEYS.md)
  • 进程间通信(信号、共享内存)
  • 17.web api 8
  • STM32之beep、多文件、延迟、按键以及呼吸灯
  • 大模型部署基础设施搭建 - LlamaFactory
  • Java优选算法——滑动窗口