将现有内存数据段映射到另一个内存段 解决方案:代码:输出:

问题描述

正如标题所示,我想问一下我是否有办法将可执行文件的数据段映射到另一个内存,以便对第二个内存的任何更改都在第一个内存上立即更新。我最初的想法是使用mmap,但是不幸的是mmap需要文件描述符,而且我不知道以某种方式在运行的进程内存中打开文件描述符的方法。我尝试使用shmget / shmat在流程数据段(&__ data_start)上创建共享内存对象,但是我又失败了(尽管那可能是我的错误,因为我不熟悉shm API)。我发现一个类似的问题是:Linux mapping virtual memory range to existing virtual memory range?,但是答复没有帮助。欢迎任何想法。

谢谢。

一些伪代码如下:

extern char __data_start,_end;

char test = 'A';

int main(int argc,char *argv[]){
  size_t size = &_end - &__data_start;
  char *mirror = malloc(size);
  magic_map(&__data_start,mirror,size); //this is the part I need.
  printf("%c\n",test) // prints A

  int offset = &test - &__data_start;
  *(mirror + offset) = 'B';
  printf("%c\n",test) // prints B
  free(mirror);
  return 0;
}


解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)