首页
社区
课程
招聘
[分享]ACCESS_MASK 定义的编程资料
发表于: 2013-8-22 15:02 3976

[分享]ACCESS_MASK 定义的编程资料

2013-8-22 15:02
3976
ACCESS_MASK的定义
在DDK中, ACCESS_MASK是一个ULONG

typedef ULONG ACCESS_MASK;
typedef ACCESS_MASK *PACCESS_MASK;

API操作不同对象时, 需要的ACCESS_MASK 也不同.

访问标记 由通用部分 + 附加部分 组成.

通用访问标记
//
//  The following are masks for the predefined standard access types
//

#define DELETE                           (0x00010000L)
#define READ_CONTROL                     (0x00020000L)
#define WRITE_DAC                        (0x00040000L)
#define WRITE_OWNER                      (0x00080000L)
#define SYNCHRONIZE                      (0x00100000L)

#define STANDARD_RIGHTS_REQUIRED         (0x000F0000L)

#define STANDARD_RIGHTS_READ             (READ_CONTROL)
#define STANDARD_RIGHTS_WRITE            (READ_CONTROL)
#define STANDARD_RIGHTS_EXECUTE          (READ_CONTROL)

#define STANDARD_RIGHTS_ALL              (0x001F0000L)

#define SPECIFIC_RIGHTS_ALL              (0x0000FFFFL)

//
//  These are the generic rights.
//

#define GENERIC_READ                     (0x80000000L)
#define GENERIC_WRITE                    (0x40000000L)
#define GENERIC_EXECUTE                  (0x20000000L)
#define GENERIC_ALL                      (0x10000000L)



附加访问标记 根据操作对象的不同 而不同.
找到了一篇文章, 详细的阐述了 ACCESS_MASK的定义, 包括通用标记和附加标记.
http://blogs.msdn.com/b/openspecification/archive/2010/04/01/about-the-access-mask-structure.aspx

原文附件以后如果下载不到了,可以在本帖下载: About_the_ACCESS_MASK_Structure.rar

当我们重构或逆向一个工程时, 会遇到一些魔法数. 有关 ACCESS_MASK 的重构和逆向,可以参考本文.

e.g.
重构前:
	Status = KernelOpenFile(FileFullPath,
	                        &hFile,
	                        0x100020, 
	                        0x80, 
	                        1, 
	                        1, 
	                        0x20);

重构后:
	Status = KernelOpenFile(FileFullPath,
	                        &hFile,
	                        SYNCHRONIZE | FILE_EXECUTE,
	                        0x80, 
	                        1, 
	                        1, 
	                        0x20);


重构后,工程中就不会留下一堆的魔法数. 提高了工程的可读性和可维护性.

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

上传的附件:
收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 284
活跃值: (3624)
能力值: ( LV5,RANK:75 )
在线值:
发帖
回帖
粉丝
2
LZ的东西一直很规范,看着清爽
2013-8-22 15:09
0
游客
登录 | 注册 方可回帖
返回
//