检查是否在DWORD中设置了某些位

use*_*973 1 c++

我的问题:我正在查看IMAGE_SECTION_HEADER结构的特征成员.我想知道某个部分是否可执行.我该如何检查?特征成员是a DWORD,我希望能够知道它是否包含值IMAGE_SCN_MEM_EXECUTE(0x20000000).这个计算结果怎么样?我猜我必须使用模运算符,但不知道如何.

Vio*_*ffe 7

if (imageSectionHeader.Characteristics & IMAGE_SCN_MEM_EXECUTE)
{
   // Do work here...
}
Run Code Online (Sandbox Code Playgroud)

这称为掩蔽.您使用掩码屏蔽该CharacteristicsIMAGE_SCN_MEM_EXECUTE以查看是否设置了这些特定位.如果IMAGE_SCN_MEM_EXECUTE掩码中设置的所有位也都设置在Characteristics值中,则上述条件才为真.