在Linux系统中,可以使用`/dev/mem`设备文件来读取指定内存地址的数据。以下是一个示例代码,可以读取指定内存地址的数据:
```c
#include #include #include #define MEM_DEV "/dev/mem" #define MEM_ADDR 0x10000000 // 例:读取地址0x10000000处的数据 int main() { int mem_fd; void *mem_ptr; // 打开/dev/mem设备文件 mem_fd = open(MEM_DEV, O_RDONLY); if (mem_fd < 0> perror("open"); return 1; } // 映射物理内存到用户空间 mem_ptr = mmap(NULL, getpagesize(), PROT_READ, MAP_SHARED, mem_fd, MEM_ADDR); if (mem_ptr == MAP_FAILED) { perror("mmap"); close(mem_fd); return 1; } // 读取指定内存地址的数据 printf("Data at address 0x%X: 0x%X\n", MEM_ADDR, *(unsigned int*)mem_ptr); // 解除映射并关闭文件 munmap(mem_ptr, getpagesize()); close(mem_fd); return 0; } ``` 请注意,需要以root权限运行该程序,因为读取/dev/mem设备文件需要特权权限。此外,操作/dev/mem文件可能会对系统造成潜在的风险,请谨慎操作。