我正在反向工程一个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
程序下运行二进制文件,它将显示用于系统调用参数的符号值。这是解码这些论点的最简单方法。