在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文件可能會對系統造成潛在的風險,請謹慎操作。