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