ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Windows驱动开发学习记录-在内核中返回错误但用户层不提示错误

2022-07-19 13:02:39  阅读:278  来源: 互联网

标签:Status 错误 对话框 Windows 用户 错误码 0x80070000 内核


  最近学习SSDT inline hook中有个需要是想静默的过滤用户行为,也即在驱动中用户行为返回错误,但又想让用户层不提示错误。查了许久,在一帖子里有回复说定义一个错误码为:

#define STATUS_SILENT_RETURN            (0x80070000)

    

  即定义错误码为0x80070000。

 

一个magic number。

win2k源代码private\ntos\rtl\error.c:
ULONG
RtlNtStatusToDosErrorNoTeb (
IN NTSTATUS Status
)
函数体中:
else if ((Status & 0xffff0000) == 0x80070000) {

//
// The status code was a win32 error already.
//

return(Status & 0x0000ffff);
}


  也就是如果内核返回0x80070000,错误代码就会被转换成0,应用层使用GetLastError()获得的返回值就是0,因为0表示没有错误,所以就不会弹出错误对话框。

  用这个magic number来取代STATUS_ACCESS_DENIED,会比较“优雅”。.

  原帖链接:

[求助]Hook NtCreateProcessEx怎样做可以让系统不弹错误对话框呢?

标签:Status,错误,对话框,Windows,用户,错误码,0x80070000,内核
来源: https://www.cnblogs.com/ImprisonedSoul/p/16493678.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有