【问题标题】:Decoding mmap() flags on Linux在 Linux 上解码 mmap() 标志
【发布时间】:2018-12-01 22:25:41
【问题描述】:

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

如何解码这个标志所代表的含义?

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

所以,0x22 可能如下所示:

0x20 || 0x2

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

对吗?

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

谢谢。

【问题讨论】:

    标签: linux mmap


    【解决方案1】:

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

    #include <sys/mman.h>
    

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

    (MAP_PRIVATE | MAP_ANONYMOUS)
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-11
      • 1970-01-01
      • 2020-07-20
      • 1970-01-01
      • 1970-01-01
      • 2010-11-06
      相关资源
      最近更新 更多