找不到 csrss.exe
Posted
技术标签:
【中文标题】找不到 csrss.exe【英文标题】:Unable to find csrss.exe 【发布时间】:2020-12-15 18:17:02 【问题描述】:我正在尝试以数字方式验证一些 Windows 进程,其中之一是 csrss.exe。
我尝试了两种技术,第一种是这样的:
IntPtr phCertStore = IntPtr.Zero;
IntPtr phMsg = IntPtr.Zero;
IntPtr ppvContext = IntPtr.Zero;
int pdwMsgAndCertEncodingType = 0;
int pdwContentType = 0;
int pdwFormatType = 0;
if (!Crypt32.CryptQueryObject(
Wincrypt.CERT_QUERY_OBJECT_FILE,
@"C:\windows\system32\csrss.exe",
Wincrypt.CERT_QUERY_CONTENT_FLAG_ALL,
Wincrypt.CERT_QUERY_FORMAT_FLAG_ALL,
0,
ref pdwMsgAndCertEncodingType,
ref pdwContentType,
ref pdwFormatType,
ref phCertStore,
ref phMsg,
ref ppvContext
))
Console.WriteLine((new Win32Exception(Marshal.GetLastWin32Error())).Message);
Console.ReadLine();
return;
int pcbData = 0;
if (!Crypt32.CryptMsgGetParam(phMsg, Wincrypt.CMSG_ENCODED_MESSAGE, 0, null, ref pcbData))
Console.WriteLine((new Win32Exception(Marshal.GetLastWin32Error())).Message);
Console.ReadLine();
return;
byte[] pvData = new byte[pcbData];
Crypt32.CryptMsgGetParam(phMsg, Wincrypt.CMSG_ENCODED_MESSAGE, 0, pvData, ref pcbData);
var signedCms = new SignedCms();
signedCms.Decode(pvData);
try
signedCms.CheckSignature(false);
Console.WriteLine("Signature check passed");
catch (Exception e)
Console.WriteLine(e.Message);
finally
Crypt32.CryptMsgClose(phMsg);
Crypt32.CertCloseStore(phCertStore, 0);
Console.ReadLine();
第二个是这样的:
ProcessStartInfo processStartInfo = new ProcessStartInfo(@"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe", $"Get-AuthenticodeSignature -FilePath " + "\"C:\\windows\\system32\\csrss.exe\"");
processStartInfo.RedirectStandardOutput = true;
processStartInfo.UseShellExecute = false;
Process process = new Process();
process.StartInfo = processStartInfo;
process.Start();
process.WaitForExit();
string output = process.StandardOutput.ReadToEnd();
Console.WriteLine(output);
但是,这两个都说找不到文件!复制到另一个 powershell 实例中的完全相同的 powershell 参数有效!如果我将任何路径更改为另一个签名文件,它就可以工作! 我什至尝试以管理员身份运行,但仍然找不到文件! 我做错了什么?
【问题讨论】:
你的项目设置是什么?确保未选中 x64 并选中 x86。 如果您的进程是 32 位的,它将找不到该文件,因为它在SysWOW64
中不存在。
【参考方案1】:
解决此问题的方法是使用正确的位数。
【讨论】:
以上是关于找不到 csrss.exe的主要内容,如果未能解决你的问题,请参考以下文章