Мне интересно, возможно ли написать c-код для открытия и отобразить указатель памяти на / dev / mem удаленной файловой системы.Я смонтировал эту систему в / mnt / системы, из которой планирую запустить код.Я смонтировал / dev с помощью sshfs, поэтому полный путь выглядел бы как / mnt / mem из системы, где выполняется код на языке c.
По моему опыту, я мог бы открыть / mmap / dev / mem, если бы ябыл напрямую подключен к удаленной системе и получил доступ к нужным компонентам.То есть, если я изменю строку, используемую для открытия файлового дескриптора, с / mnt / mem на / dev / mem, и вместо этого скомпилирую и выполню ее локально, которая работает и выбирает ожидаемые данные регистра.
Кажется,как я могу успешно открыть и mmap в / home / что угодно в удаленной системе.Есть ли какая-то причина, по которой удаленно смонтированный / dev / mem просто не может быть открыт одинаково?
Дополнительная информация для моего случая: -Linux-дистрибутив на обеих системах -ssh, установленный на обоих -sshfs, установленный гдеЯ сделал монтирование из -У меня есть root-доступ к обеим системам
свойства / dev / mem, наблюдаемые из хост-системы:
crw-rw-rw- 1 root root 0, 08 декабря 2105 / mnt / mem
Ошибка возвращает разрешение, в котором отказано, как будто даже с привилегией root я все еще не могу открыть память таким образом, но я не уверен, почему это не должно работать, если установлено разрешение r / wво всех путях и в самой mem.
Я также выполнил монтирование sshfs, используя root и root удаленной системы.
//Mmap a target to a pointer variable/fd
struct reg_ptrs mmap_target(struct access_method_info mthd_info)
{
struct reg_ptrs mapped_ptrs;
mapped_ptrs.iic_bar = NULL;
char mem_path1[100];
strcpy(mem_path1,"/mnt/mem");
int mem_fd1;
mem_fd1 = open(mem_path1, O_RDWR);
if(mem_fd1 == -1) {
printf("Couldn't open()! %s\n", strerror(errno));
}
mapped_ptrs.iic_bar = mmap(NULL, 0x1000, PROT_READ | PROT_WRITE, MAP_SHARED, mem_fd1, 0xff0e0000);
//With pointers mapped to appropriate memory, we should be able to close these now
close(mem_fd1);
return mapped_ptrs;
} /* mmap_target */
Ожидаемые результаты будут для open () и mmap.() c функции для успешного открытия и отображения удаленно смонтированного файла / dev / mem