【发布时间】:2021-01-20 05:02:40
【问题描述】:
如果知道(0x6A6F7444),如何从特定地址读取mmap函数? 我试过了:
mmap(0x6A6F7444, 100, PROT_READ | PROT_WRITE, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0)
但它不起作用。编译说:
warning: passing argument 1 of ‘munmap’ makes pointer from integer without a cast [-Wint-conversion]
【问题讨论】:
-
请比“不起作用”更好地描述行为。究竟观察到了什么?
-
编译说:警告:传递 'munmap' 的参数 1 使指针从整数而不进行强制转换 [-Wint-conversion]
-
请记住,
0x6A6F7444未与内存页面(通常为 4KiB)对齐,100的页面大小也未对齐,并且该函数调用可能会返回错误。如果发生这种情况,我会尝试使用mmap((void *)0x6A6F7000, 4096, ...)。 -
@Restman 请edit 带有该信息的问题。如果您询问错误,您应该提供实际错误,这应该是常识。另外,请注意第一个参数只是一个提示,除非设置了
MAP_FIXED,否则操作系统可能不会实际使用该地址。但如果设置了MAP_FIXED,那么addr也需要进行页面对齐。