WINTRUST!_GetMessage函數分析之CRYPT32!CryptSIPGetSignedDataMsg函數的作用是得到nt5inf.cat的信息

UEDIT打開nt5inf.cat。

第一部分:

BOOL _GetMessage(CRYPT_PROVIDER_DATA *pProvData)
{
DWORD?????????????? dwMsgEncoding;
SIP_SUBJECTINFO???? *pSubjInfo;
SIP_DISPATCH_INFO?? *pSip;

??? DWORD?????????????? cbEncodedMsg;
BYTE??????????????? *pbEncodedMsg;

??? DWORD?????????????? dwMsgType;
HCRYPTMSG?????????? hMsg;
HCRYPTPROV????????? hProv;

??? dwMsgEncoding?? = 0;
dwMsgType?????? = 0;

??? switch(pProvData->pWintrustData->dwUnionChoice)
{
case WTD_CHOICE_CATALOG:
if ((_ISINSTRUCT(CRYPT_PROVIDER_DATA, pProvData->cbStruct, fRecallWithState)) &&
(pProvData->fRecallWithState) &&
(pProvData->hMsg))
{
return(TRUE);
}

??????????? pSip??????? = pProvData->pPDSip->pCATSip;
pSubjInfo?? = pProvData->pPDSip->psSipCATSubjectInfo;
break;

??????? case WTD_CHOICE_BLOB:
case WTD_CHOICE_FILE:
pSip??????? = pProvData->pPDSip->pSip;
pSubjInfo?? = pProvData->pPDSip->psSipSubjectInfo;
break;

??????? default:
pProvData->padwTrustStepErrors[TRUSTERROR_STEP_FINAL_OBJPROV] = TRUST_E_NOSIGNATURE;
return(FALSE);
}

??? cbEncodedMsg = 0;

??? pSip->pfGet(pSubjInfo, &dwMsgEncoding, 0, &cbEncodedMsg, NULL);

??? if (cbEncodedMsg == 0)
{
pProvData->padwTrustStepErrors[TRUSTERROR_STEP_SIP] = GetLastError();
pProvData->padwTrustStepErrors[TRUSTERROR_STEP_FINAL_OBJPROV] = TRUST_E_NOSIGNATURE;
return(FALSE);
}

??? if (!(pbEncodedMsg = (BYTE *)pProvData->psPfns->pfnAlloc(cbEncodedMsg)))
{
pProvData->dwError = GetLastError();
pProvData->padwTrustStepErrors[TRUSTERROR_STEP_FINAL_OBJPROV] = TRUST_E_SYSTEM_ERROR;
return(FALSE);
}

??? if (!(pSip->pfGet(pSubjInfo, &dwMsgEncoding, 0, &cbEncodedMsg, pbEncodedMsg)))
{
pProvData->padwTrustStepErrors[TRUSTERROR_STEP_SIP] = GetLastError();
pProvData->padwTrustStepErrors[TRUSTERROR_STEP_FINAL_OBJPROV] = TRUST_E_NOSIGNATURE;

??????? pProvData->psPfns->pfnFree(pbEncodedMsg);

??????? return(FALSE);
}

倒數第三個參數是0

第二部分:


0: kd> p
WINTRUST!_GetMessage+0x90:
001b:76804d15 751d??????????? jne???? WINTRUST!_GetMessage+0xaf (76804d34)
0: kd> p
WINTRUST!_GetMessage+0xaf:
001b:76804d34 50????????????? push??? eax
0: kd> dv
pProvData = 0x00096934
dwMsgType = 0
pbEncodedMsg = 0x01e00020 ""
dwMsgEncoding = 0x10001
cbEncodedMsg = 0x96934
1: kd> bc 33
1: kd> ?0x96934
Evaluate expression: 616756 = 00096934
0: kd> db 0x01e00020
01e00020? 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00? ................

01e00030? 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00? ................
01e00040? 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00? ................
01e00050? 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00? ................
01e00060? 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00? ................
01e00070? 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00? ................
01e00080? 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00? ................
01e00090? 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00? ................
0: kd> p
WINTRUST!_GetMessage+0xb0:
001b:76804d35 8d4508????????? lea???? eax,[ebp+8]
0: kd> p
WINTRUST!_GetMessage+0xb3:
001b:76804d38 50????????????? push??? eax
0: kd> p
WINTRUST!_GetMessage+0xb4:
001b:76804d39 6a00??????????? push??? 0?? ??? ??? ?倒數第三個參數是0
0: kd> p
WINTRUST!_GetMessage+0xb6:
001b:76804d3b 8d45fc????????? lea???? eax,[ebp-4]
0: kd> p
WINTRUST!_GetMessage+0xb9:
001b:76804d3e 50????????????? push??? eax
0: kd> p
WINTRUST!_GetMessage+0xba:
001b:76804d3f 53????????????? push??? ebx
0: kd> p
WINTRUST!_GetMessage+0xbb:
001b:76804d40 ff5708????????? call??? dword ptr [edi+8]
0: kd> r
eax=007ce990 ebx=01c527f0 ecx=00096934 edx=00290c14 esi=007cea00 edi=01c51a78
eip=76804d40 esp=007ce968 ebp=007ce994 iopl=0???????? nv up ei pl nz na po nc
cs=001b? ss=0023? ds=0023? es=0023? fs=003b? gs=0000???????????? efl=00000202
WINTRUST!_GetMessage+0xbb:
001b:76804d40 ff5708????????? call??? dword ptr [edi+8] ds:0023:01c51a80={CRYPT32!CryptSIPGetSignedDataMsg (75c82759)}
0: kd> p
WINTRUST!_GetMessage+0xbe:
001b:76804d43 85c0??????????? test??? eax,eax

第三部分:


0: kd> dv
pProvData = 0x00096934
dwMsgType = 0
pbEncodedMsg = 0x01e00020 "0???"
dwMsgEncoding = 0x10001
cbEncodedMsg = 0x96934
0: kd> db 0x01e00020
01e00020? 30 83 09 69 2f 06 09 2a-86 48 86 f7 0d 01 07 02? 0..i/..*.H......
01e00030? a0 83 09 69 1f 30 83 09-69 1a 02 01 01 31 0b 30? ...i.0..i....1.0

01e00040? 09 06 05 2b 0e 03 02 1a-05 00 30 83 09 57 31 06? ...+......0..W1.
01e00050? 09 2b 06 01 04 01 82 37-0a 01 a0 83 09 57 21 30? .+.....7.....W!0
01e00060? 83 09 57 1c 30 0c 06 0a-2b 06 01 04 01 82 37 0c? ..W.0...+.....7.
01e00070? 01 01 04 10 bb fd 30 fb-6f a3 d9 40 82 26 85 87? ......0.o..@.&..
01e00080? 87 cd 89 4b 17 0d 32 34-30 39 31 35 30 33 34 35? ...K..2409150345
01e00090? 30 36 5a 30 0e 06 0a 2b-06 01 04 01 82 37 0c 01? 06Z0...+.....7..
0: kd> dv
pProvData = 0x00096934
dwMsgType = 0
pbEncodedMsg = 0x01e00020 "0???"
dwMsgEncoding = 0x10001
cbEncodedMsg = 0x96934


第四部分:參考信息

0: kd> kc
#
00 WINTRUST!CryptSIPGetSignedDataMsg
01 CRYPT32!CryptSIPGetSignedDataMsg
02 WINTRUST!_GetMessage
03 WINTRUST!SoftpubLoadMessage
04 WINTRUST!_VerifyTrust
05 WINTRUST!WinVerifyTrust
06 sfc_os!SfcValidateFileSignature
07 sfc_os!SfcGetValidationData
08 sfc_os!SfcValidateDLL
09 sfc_os!SfcQueueValidationThread
0a kernel32!BaseThreadStart

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/95032.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/95032.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/95032.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

編譯esp32報錯解決辦法

報錯信息:CMake Error at build/CMakeFiles/git-data/grabRef.cmake:48 (file):file failed to open for reading (No such file or directory):這個錯誤是由于 Git 的安全檢查導致的。從錯誤信息可以看出,Git 檢測到了"可疑的所有權"&#xf…

【AI】常見8大LLM大語言模型地址

序號AI名稱地址1 ChatGPT (OpenAI)https://chat.openai.com/2Gemini (Google personal AI assistant)https://gemini.google.com/app3Grok (xAI Grok LLM)https://x.ai/4DeepSeek (DeepSeek AI chatbot)DeepSeek5Claude (Anthropic Claude AI)App unavai…

軟件系統的部署方式:單機、主備(冷主備、熱主備)、集群

一、單機部署單機部署是將軟件系統所有組件(應用、數據庫等)部署在單臺服務器上,架構簡單、成本低但存在單點故障風險,適用于低負載或測試場景。一臺服務器壞了,軟件系統無法服務。二、主備(冷主備、熱主備…

從體驗到系統工程丨上手評測國內首款 AI 電商 App

作者:王晨(望宸) 產品界面,往往體現了產品的設計哲學,界面是產品的第一入口。 近期,1688 推出了 1688 AI App,這貌似是國內第一個電商領域的獨立 AI App 應用(若不是,歡…

QML QQuickImage: Cannot open: qrc:/images/shrink.png(已解決)

此問題是 在 QT Quick 項目 顯示圖片的時候 遇到,顯示:QML QQuickImage: Cannot open: qrc:/images/shrink.png,不能 打開 圖片。為了解決此問題,找了很多資料,雖然是比較簡單,但對于初學者來說&#xff0c…

maven scope 詳解

Maven 的 scope用于定義依賴項在項目構建生命周期中的可見性和傳遞性,控制依賴在編譯、測試、運行等階段的可用性及是否被打包到最終產物中。以下是詳細解析:?? ??一、Scope 的核心作用????生命周期控制??決定依賴在編譯、測試、運行階段的可用…

Python的一次實際應用:利用Python操作Word文檔的頁碼

Python的一次實際應用:利用Python操作Word文檔的頁碼 需求:一次性處理24個文檔的頁碼。 文檔詳情: 1、每個word文檔包含800頁左右,每一頁包含一個標題和一張圖片。 2、由于圖片有橫排也有豎排,因此,每頁文檔…

Android15 GKI版本分析Kernel Crash問題

環境介紹編譯主機:amd64 Ubuntu 22.04Android源碼:Android15 GKIKernel版本:Linux 6.16Android構建系統:bazel構建工具鏈:gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/bin/aarch64-none-linux-gnu-定位Linux…

rocky 9部署Zabbix監控

一、rocky安裝 需要注意在設置root用戶密碼時,勾選ssh遠程連接 安裝完成后直接用root登錄 1. 網絡配置 輸入nmtui 進入網絡配置界面 選擇 Edit a connection,再選擇接口 ens3 IPV4更改為Maual 手動模式 根據實際環境配置IP地址 重啟網絡 systemctl …

從9.4%到13.5%:ICDM2025錄取率觸底反彈,競爭壓力稍緩

近日,ICDM 2025公布了論文錄用結果。本次大會共收到785篇有效論文投稿,最終,共有106篇常規論文和70篇短論文被接收,總體接收率為22.4%,其中全文論文的接收率為13.5%。與前年9.4%、去年11.09%的錄取率相比,I…

linux上安裝methylkit -- 安全下車版 (正經版: Linux環境下安裝methylKit的實踐與避坑指南)

題外話: 我踩過的坑,都將成為我寫貼的素材!(ㄒoㄒ) 整整安裝了兩天,這里面的滋味懂的都懂。 希望開發作者持續維護。 希望有人或者作者持續打包成sigularity鏡像使用,并且直接傳到github上,傳到docker上下…

【leetcode】114. 二叉樹展開為鏈表

文章目錄題目題解1. 遞歸2. 迭代3. 右指針重排,始終將右子樹添加到左子樹的最右題目 114. 二叉樹展開為鏈表 題解 1. 遞歸 先序遍歷然后將數組操作 for i in range(1, len(res)):prev, curr res[i - 1], res[i]prev.left Noneprev.right curr# Definition fo…

Vibe Coding、AI IDE/插件

概述 Vibe Coding,氛圍編程,AI輔助編程,三劍客: Google Gemini:OpenAI GPT:Anthropic Claude: IDE Cursor 基于VS Code開發。 特性: AI驅動的代碼生成:輸入想要的…

Unity高級UI拖動控制器教程

在游戲開發過程中,UI組件的拖動功能是一個常見的需求。特別是在需要實現拖動、邊界檢測、透明度控制以及動畫反饋等功能時,編寫一個高級UI拖動控制器將非常有用。在本文中,我們將創建一個支持多種Canvas模式和更精確邊界檢測的高級UI拖動控制…

零基礎上手:Cursor + MCP 爬取 YouTube 視頻數據

前言 大模型與 AI 應用越來越普及的今天,實時、穩定地獲取網絡數據變得尤為重要。無論是做內容分析、趨勢研究還是自動化任務,爬取和處理數據始終是繞不開的一環。 傳統爬蟲往往面臨封禁、驗證碼、動態渲染等難題,而 Bright Data MCP&#x…

frp 一個高性能的反向代理服務

文章目錄項目概述核心特性系統架構快速開始1. 下載安裝2. 服務端快速配置3. 客戶端快速配置4. 驗證連接配置文件說明代理類型TCP/UDP 代理HTTP/HTTPS 代理安全代理 (STCP/SUDP)P2P 代理 (XTCP)插件系統靜態文件服務HTTP/SOCKS5 代理協議轉換使用場景遠程辦公Web 服務發布游戲服…

Android -第二十一次技術總結

一、activity與Fragment的通信有哪些?使用接口進行通信的邏輯與代碼示例使用接口通信的核心是解耦,通過定義一個接口作為通信契約,讓 Fragment 不依賴于具體的 Activity 類型。1. 定義通信接口(在 Fragment 內)首先&am…

【算法】78.子集--通俗講解

通俗易懂講解“子集”算法題目 一、題目是啥?一句話說清 給你一個不含重復元素的整數數組,返回所有可能的子集(包括空集和它本身)。 示例: 輸入:nums = [1,2,3] 輸出:[[], [1], [2], [1,2], [3], [1,3], [2,3], [1,2,3]] 二、解題核心 使用回溯法(遞歸)或位運算來…

Cherrystudio的搭建和使用

1、下載和安裝 Cherry Studio 官方網站 - 全能的 AI 助手 2、配置LLM 3、聊天助手 3.1 添加和編輯助手 3.2 選擇LLM 3.3 對話聊天 4、配置MCP 4.1 安裝MCP執行插件 4.2 安裝 node和npm Node.js — Download Node.js npm -v 10.9.3 node -v v22…

基于Matlab結合膚色檢測與卷積神經網絡的人臉識別方法研究

近年來,隨著人工智能與計算機視覺技術的發展,人臉識別在人機交互、安防監控、身份認證等領域得到了廣泛應用。本文提出了一種基于 MATLAB 平臺,結合 膚色檢測與卷積神經網絡(CNN) 的人臉識別方法。該方法首先利用膚色模…