解码 Linux 上的 mmap() 标志
Decoding mmap() flags on Linux
我正在对一个 ELF 二进制文件进行逆向工程,在程序集中,我可以看到调用了 mmap() 并将标志参数设置为 0x22。
我如何解码这个标志代表什么?
根据:http://man7.org/linux/man-pages/man2/mmap.2.html,flags值可以通过在flags之间进行OR运算得到。
因此,0x22 可能如下所示:
0x20 || 0x2
查了一下Linux上的头文件,我想,应该是:MAP_PRIVATE || MAP_ANONYMOUS
对吗?
头文件中还提到了一些其他标志。
谢谢。
不,你必须使用按位或而不是逻辑或,所以
#include <sys/mman.h>
然后在 mmap
系统调用的 flags
参数中,这个值就是你想要的值:
(MAP_PRIVATE | MAP_ANONYMOUS)
如果您 运行 在 strace
程序下的二进制文件,它将显示用于系统调用参数的符号值。这是解码这些参数的最简单方法。
我正在对一个 ELF 二进制文件进行逆向工程,在程序集中,我可以看到调用了 mmap() 并将标志参数设置为 0x22。
我如何解码这个标志代表什么?
根据:http://man7.org/linux/man-pages/man2/mmap.2.html,flags值可以通过在flags之间进行OR运算得到。
因此,0x22 可能如下所示:
0x20 || 0x2
查了一下Linux上的头文件,我想,应该是:MAP_PRIVATE || MAP_ANONYMOUS
对吗?
头文件中还提到了一些其他标志。
谢谢。
不,你必须使用按位或而不是逻辑或,所以
#include <sys/mman.h>
然后在 mmap
系统调用的 flags
参数中,这个值就是你想要的值:
(MAP_PRIVATE | MAP_ANONYMOUS)
如果您 运行 在 strace
程序下的二进制文件,它将显示用于系统调用参数的符号值。这是解码这些参数的最简单方法。