在Linux上解码mmap()标志



我正在反向工程一个ELF二进制文件,在程序集中,我可以看到mmap((是在flags参数设置为0x22的情况下调用的。

如何解码此标志所代表的内容?

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

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

0x20 || 0x2

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

这是正确的吗?

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

谢谢。

不,您必须使用位或而不是逻辑或,因此

#include <sys/mman.h>

稍后在mmap系统调用的flags参数中,这个值似乎是您想要的:

(MAP_PRIVATE | MAP_ANONYMOUS)

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

最新更新