反转对 mmap() 的调用
逆向工程
C
2021-07-01 16:55:16
1个回答
对于签名mmap
IS
void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offset);
4294967295 在被视为有符号整数时与 -1 相同。
这些mmap
电话实际上看起来像
mmap(
NULL, /*addr*/
321, /*length*/
PROT_EXEC | PROT_READ | PROT_WRITE, /*prot*/
MAP_ANONYMOUS | MAP_PRIVATE, /*flags*/
-1, /*fd*/
0 /*offset*/
)
现在根据手册页,
地图_匿名
映射不受任何文件的支持;它的内容被初始化为零。fd 和 offset 参数被忽略;但是,如果指定了 MAP_ANONYMOUS(或 MAP_ANON), 某些实现要求 fd 为 -1,并且便携式应用程序应确保这一点。MAP_ANONYMOUS 与 MAP_SHARED 结合使用仅在内核 2.4 之后的 Linux 上受支持。
它说如果MAP_ANONYMOUS
已指定,那么我们可以使用-1
asfd
来解释您的问题。