在 Linux 下,/proc/mem 文件是一个虚拟文件,可以用来读取和写入物理内存。下面是使用 C 语言实现读取 /proc/mem 文件实现内存的读写的示例代码:
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#define MEM_FILE "/proc/mem"
int main() {
int fd;
unsigned char *mem_buf;
// 打开 /proc/mem 文件
if ((fd = open(MEM_FILE, O_RDWR)) == -1) {
perror("open");
exit(1);
}
// 分配一块内存缓冲区
mem_buf = (unsigned char *) malloc(1024);
// 从物理地址为 0x1234 的位置开始读取 1024 字节数据到缓冲区中
lseek(fd, 0x1234, SEEK_SET);
read(fd, mem_buf, 1024);
// 把缓冲区中的数据写入物理地址为 0x5678 的位置
lseek(fd, 0x5678, SEEK_SET);
write(fd, mem_buf, 1024);
// 关闭文件和释放缓冲区空间
close(fd);
free(mem_buf);
return 0;
}
注意:直接操作物理内存可能会对系统造成严重的影响,需要谨慎处理。建议只在测试环境下进行尝试,并遵循相关安全规范。