gpt4 book ai didi

linux - Linux 上的 RAM 访问

转载 作者:太空宇宙 更新时间:2023-11-04 10:40:43 26 4
gpt4 key购买 nike

我想从 Linux 内核(通过用户空间或内核空间)访问(读取和写入)所有 RAM(使用物理地址),我们可以这样做吗?用户空间的可能性和限制是什么?我们可以使用可加载内核模块在多大程度上做到这一点?

感谢和问候,维伦德拉纳特

最佳答案

您可以使用 mmap 从用户空间访问物理地址。

#include <sys/types.h>
#include <unistd.h>
#include <sys/stat.h>
#include <sys/mman.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>

#define PHY_ADDR 0x807feff

int main()
{
int i;
unsigned int *addr;

int fd = open( "/dev/mem", O_RDWR | O_SYNC );
if( fd < 0 )
{
perror( "Error opening file /dev/mem" );
return 1;
}

addr = (unsigned int *) mmap( 0, getpagesize(), PROT_READ | PROT_WRITE, MAP_SHARED, fd, PHY_ADDR );
if( addr == NULL )
{
perror( "Error mapping" );
return 1;
}
for( i = 0; i < 256 / 4; i++ )
printf( "addr: %X\tval: %X\n", addr + i, *( addr + i ) );

if( munmap( addr, getpagesize() ) == -1 )
{
perror( "Error unmaping" );
return 1
}

close( fd );
return 0;
}

关于linux - Linux 上的 RAM 访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35307264/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com