在Linux上解码mmap()标志

时间:2018-12-01 22:25:41

标签: linux mmap

我正在对ELF二进制文件进行逆向工程,在程序集中,我可以看到在将flags参数设置为0x22的情况下调用了mmap()。

如何解码该标志代表什么?

根据http://man7.org/linux/man-pages/man2/mmap.2.html,可通过在标志之间执行“或”运算来形成标志值。

因此,0x22可能如下所示:

0x20 || 0x2

通过在Linux上查找头文件,我认为应该是:MAP_PRIVATE || MAP_ANONYMOUS

对吗?

头文件中还提到了其他一些标志。

谢谢。

1 个答案:

答案 0 :(得分:1)

否,您必须使用按位或而不是逻辑或,所以

#include <sys/mman.h>

然后在flags系统调用的mmap参数中,此值就是您想要的值:

(MAP_PRIVATE | MAP_ANONYMOUS)

如果在strace程序下运行二进制文件,它将显示用于syscall args的符号值。这是解码这类参数的最简单方法。