Форум русскоязычного сообщества Ubuntu


За новостями русскоязычного сообщества и Ubuntu в целом можно следить на нашей страничке в Google+

Автор Тема: доступ к памяти произвольного процесса  (Прочитано 2486 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн pretorean

  • Автор темы
  • Любитель
  • *
  • Сообщений: 72
    • Просмотр профиля
Требуется получить доступ к памяти произвольного процесса с целью чтения и модификации данных
Хочется услышать авторитетное мнение о том как это проще сделать
я думаю что это можно сделать следующим образом

1. прочитать в файле /proc/PID/map или /proc/PID/smap табличку распределения памяти процесса
2. открыть с правами рута файлик /dev/memory и спозиционироваться на блоки полученные в п.1.

Прокатит ли такой способ ? Как осуществлять синхронизацию совмесного доступа ? Ведь процесс не знает что в его память пишут, а ядро не занимается синхронизацией даже если выделить совмесные блоки памяти через mmap.
Может быть гуру предложат другой способ ?

Оффлайн Saha

  • Активист
  • *
  • Сообщений: 517
    • Просмотр профиля
Re: доступ к памяти произвольного процесса
« Ответ #1 : 08 Сентябрь 2008, 10:35:18 »
интересно, зачем?
Можно организовать два процесса с общей памятью, насколько я помню, и тогда все будет ОК

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: доступ к памяти произвольного процесса
« Ответ #2 : 08 Сентябрь 2008, 10:43:43 »
А не подойдут общепринятые способы межпроцессного взаимодействия - pipes, sockets, signals?
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн pretorean

  • Автор темы
  • Любитель
  • *
  • Сообщений: 72
    • Просмотр профиля
Re: доступ к памяти произвольного процесса
« Ответ #3 : 08 Сентябрь 2008, 10:52:57 »
А не подойдут общепринятые способы межпроцессного взаимодействия - pipes, sockets, signals?
если оба процесса написанны мной то вариантов межпроцесного взаимодействия множество
вопрос в том что бы получить доступ к любому произвольному процессу

Оффлайн pretorean

  • Автор темы
  • Любитель
  • *
  • Сообщений: 72
    • Просмотр профиля
Re: доступ к памяти произвольного процесса
« Ответ #4 : 08 Сентябрь 2008, 10:53:53 »
интересно, зачем?
аналог АртМани хочу сделать под любимую ОС

Оффлайн axe

  • Старожил
  • *
  • Сообщений: 1203
    • Просмотр профиля
Re: доступ к памяти произвольного процесса
« Ответ #5 : 08 Сентябрь 2008, 10:55:07 »
насколько я понимаю, речь идет не о том, чтобы организовать взаимодействие двух процессов, специально для этого предназначенных, а "влезть" в память процесса, об этом вмешательстве не подозревающем. Да еще и "синхронизацию доступа" заиметь. ИМХО, последнее точно невозможно.

Насчет первого - есть такая утилита pcat, если не ошибаюсь, на sourceforge лежит. Она предназначена для создания дампа памяти произвольного процесса. Вот в ее исходники было бы полезно глянуть

Оффлайн pretorean

  • Автор темы
  • Любитель
  • *
  • Сообщений: 72
    • Просмотр профиля
Re: доступ к памяти произвольного процесса
« Ответ #6 : 08 Сентябрь 2008, 10:57:19 »
насколько я понимаю, речь идет не о том, чтобы организовать взаимодействие двух процессов, специально для этого предназначенных, а "влезть" в память процесса, об этом вмешательстве не подозревающем. Да еще и "синхронизацию доступа" заиметь. ИМХО, последнее точно невозможно.

Насчет первого - есть такая утилита pcat, если не ошибаюсь, на sourceforge лежит. Она предназначена для создания дампа памяти произвольного процесса. Вот в ее исходники было бы полезно глянуть
на другом форуме мне тож сказали что синхронизация невозможна
меня смужает зыбкость первого пункта, получить бы таблицу распределния памяти процесса программно а не путем парсинга текстового файла
щя поищу утилитку, любопытно

Оффлайн pretorean

  • Автор темы
  • Любитель
  • *
  • Сообщений: 72
    • Просмотр профиля
Re: доступ к памяти произвольного процесса
« Ответ #7 : 08 Сентябрь 2008, 11:07:21 »
на sf.net есть pcat - Product-centric web-based extranet. Ability to manage a catalog of products (product details, images, documents and related products), customer-specific product pricing and availability. Java/MySQL web application.
но это похоже не то

ссылочку не дадите ?

upd:
это оно ? http://packages.ubuntu.com/hardy/tct
« Последнее редактирование: 08 Сентябрь 2008, 11:09:48 от pretorean »

Оффлайн axe

  • Старожил
  • *
  • Сообщений: 1203
    • Просмотр профиля
Re: доступ к памяти произвольного процесса
« Ответ #8 : 08 Сентябрь 2008, 11:13:49 »
upd:
это оно ? http://packages.ubuntu.com/hardy/tct

да, судя по всему, в состав тулкита входит правильный pcat.

Оффлайн Saha

  • Активист
  • *
  • Сообщений: 517
    • Просмотр профиля
Re: доступ к памяти произвольного процесса
« Ответ #9 : 08 Сентябрь 2008, 11:13:58 »
что-то интересное нашел тут:
http://gazette.linux.ru.net/lg81/sandeep.html
http://gazette.linux.ru.net/lg83/sandeep.html
http://gazette.linux.ru.net/lg85/sandeep.html

ptrace() -- это системный вызов, который дает возможность одному процессу управлять исполнением другого. Он так же позволяет изменять содержимое памяти трассируемого процесса.
« Последнее редактирование: 08 Сентябрь 2008, 11:22:20 от Saha »

Оффлайн axe

  • Старожил
  • *
  • Сообщений: 1203
    • Просмотр профиля
Re: доступ к памяти произвольного процесса
« Ответ #10 : 08 Сентябрь 2008, 11:23:08 »
вот еще похожая тулза:
http://sourceforge.net/projects/memsniff/

Оффлайн pretorean

  • Автор темы
  • Любитель
  • *
  • Сообщений: 72
    • Просмотр профиля
Re: доступ к памяти произвольного процесса
« Ответ #11 : 08 Сентябрь 2008, 11:34:57 »
понял, вызов ptrace() нужно использовать
в pcat тож через него сделано

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: доступ к памяти произвольного процесса
« Ответ #12 : 09 Сентябрь 2008, 16:06:45 »
Подумалось тут.
А можно запустить этот процесс в gdb и модифицировать его память сколько и как угодно.
У gdb и язычок скриптовой есть...

Когда еще DOS была жива, мы именно так в какую-то игруху играли, под турбо-дебаггером.
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

Оффлайн pretorean

  • Автор темы
  • Любитель
  • *
  • Сообщений: 72
    • Просмотр профиля
Re: доступ к памяти произвольного процесса
« Ответ #13 : 09 Сентябрь 2008, 16:08:39 »
Подумалось тут.
А можно запустить этот процесс в gdb и модифицировать его память сколько и как угодно.
У gdb и язычок скриптовой есть...

Когда еще DOS была жива, мы именно так в какую-то игруху играли, под турбо-дебаггером.
можно попробывать

Оффлайн wl

  • Старожил
  • *
  • Сообщений: 1393
    • Просмотр профиля
Re: доступ к памяти произвольного процесса
« Ответ #14 : 09 Сентябрь 2008, 16:15:24 »
Дальше - больше! :)
Ведь есть gdb, единственный и неповторимый (интеловские и zerodb - не в счет  8) ),
а есть всякие ddd, kdbg, Eclipse Debugger front-end, фронтенд к gdb в Code::Blocks и KDevelop и т.п.

Так, можно еще один фронтенд написать, со специфическим уклоном в читерство.

Тьфу, блин, идея не нова: http://ubuntuforums.org/showthread.php?t=562259
На свете феньки есть такие, брат Горацио, которых лохи просто не секут. (Шекспир, "Гамлет", вольный перевод)

 

Страница сгенерирована за 0.078 секунд. Запросов: 24.