对的,这是可能的。枚举必须设置为“位域”类型,并且必须正确设置位掩码。将光标放在枚举名称上(在 Enums 视图中)并按 Ctrl-N;在出现的对话框的左下角有一个名为“位域”的复选框。
如果所有值都是独立的,那么每个值的位掩码就是值本身;如果存在包含枚举值的子字段,则这些子字段必须具有相同的掩码。我不知道 HttpQueryInfo() 的确切细节,所以我对枚举部分使用了 0xFFFF 的掩码,并假设高 16 位是独立的标志。你需要的是这样的:
HTTP_QUERY_FLAG_REQUEST_HEADERS value 0x80000000 mask 0x80000000
HTTP_QUERY_CONTENT_TYPE value 1 mask 0x0000FFFF
...
HTTP_QUERY_CONNECTION value 23 mask 0x0000FFFF
HTTP_QUERY_ACCEPT value 24 mask 0x0000FFFF
...
但是,修改现有枚举可能非常困难。如果存在需要屏蔽的值(“blah is阻碍”或某些此类腐烂),则无法将枚举切换为“位域”,但如果枚举未设置为“位域”,则 IDA 不会让您设置枚举成员的掩码。最好从头开始构建一个新的枚举。