使用 IDA 解析 FLAGS 位

逆向工程 艾达 反编译 六线谱
2021-06-10 04:16:08

在反汇编二进制文件时,IDA 反编译器将调用反编译为mmap(0x80000000, 4096, 7, 50, -1, 0);虽然反编译本身没有任何问题,但将flags解码为已知助记符的 OR 表达式可能更有用,例如MAP_SHARED|MAP_PRIVATE(如在 的手册页中mmap)。有什么办法可以帮助 IDA 显示它(当然,除了我自己编写插件)?

1个回答

在 IDA 中,您可以通过 Enums 视图 ( shift+ F10)定义枚举枚举设置了“位域”位(可以在枚举编辑和创建对话框中找到同名复选框)。不能为具有重叠成员位的枚举设置此位。

一旦枚举是位域枚举,将反汇编视图中的任何操作数设置为该枚举将显示在立即操作数中设置的位值的所有枚举成员。

如果函数原型使用枚举名称作为变量类型,IDA 将尝试将使用它的操作数自动设置为相同的枚举,尽管这并不总是发生。

IIRC MAP 枚举已经映射到 IDA 的已知枚举中,因此添加它应该很容易,无需手动定义它。