Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
0 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 4

Запись значения в память процесса

13.10.2013, 21:16. Показов 2286. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, уважаемые Форумчане!

Небольшое продолжение проблемы с данной темы: Замена значения в запущенном процессе (ptrace(), Linux)

Итак, суть:
1. Есть запущенный процесс
2. В процессе по некоему адресу есть значение, которое нужно заменить
3. При чтении исходного значения проблем не возникает
(пользуюсь трассировкой процесса ptrace() )
3.1. Делаю PTRACE_ATTACH
3.2. Выполняю чтение с помощью PTRACE_PEEKTEXT
3.3. Делаю PTRACE_DETACH
3.4. Все происходит, как запланировано: значение читается, процесс продолжает свою работу.
4. При записи значения по этому же адресу с помощью PTRACE_POKETEXT процесс убивается (действия те же самые, что и в п.3, только передаю ptrace() в качестве аргумента PTRACE_POKETEXT)

Код:
C++
1
2
3
4
5
6
7
8
9
// Write value in memory
                        ptrace_attach(pid);
                        perror("ptrace_attach");
                        printf("Input a new value: ");
                        scanf("%u", &word);
                        ptrace(PTRACE_POKEDATA, pid, addr, word);
                        perror("ptrace(PTRACE_POKEDATA)");
                        ptrace_detach(pid);
                        perror("ptrace_detach");
В чем могут быть подводные камни? При выполнении кода, perror() выводят "Succses", что говорит о успешном выполнении. Выполнить-то он может и выполнился, а вот процесс убил...

Добавлено через 5 часов 43 минуты
UPD.

При PTRACE_POKEDATA значение в память записывается корректно и, если не останавливать трассировку, то процесс так и висит в "паузе", но если попытаться возобновить его работу - крашится.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.10.2013, 21:16
Ответы с готовыми решениями:

Реализовать двумя потоками запись в память и вывод строки с помощью семафора.
два процесса с разделенной памятью один процесс записывает строку в память другой после записи каждой строки выводит её на печать...

Неправильно записываются значения в память функцией ptrace()
Я под линукс писать только учусь, поэтому пишу, можно сказать, все, что под руку попадется, вот и взялся читер для игрушек писать по типу...

Запись в память процесса целого значения и значения типа float
Есть функции чтения/записи в память процесса: <DllImport("kernel32.dll", SetLastError:=True)> _ Private Shared Function...

2
deleted
177 / 50 / 5
Регистрация: 29.03.2013
Сообщений: 365
20.10.2013, 15:10
для тех кто не осилил ptrace рекомендую http://man7.org/linux/man-page... adv.2.html
проще кодить, да и работает быстрее
1
0 / 0 / 0
Регистрация: 30.09.2013
Сообщений: 4
20.10.2013, 17:36  [ТС]
Кстати, пытался, но почему-то g++ не определяет эту функцию, хотя библиотека подключена.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.10.2013, 17:36
Помогаю со студенческими работами здесь

Запись в память другого процесса
Как можно производить чтение/запись в память другого процесса на Visual Basic? Есть ли сайты, где можно об этом прочитать?

Запись DWORD в память другого процесса
Здравствуйте. Пытаюсь записать DWORD в память процесса. var outptr: pointer; wb: cardinal; somedata: cardinal; begin ...

Запись в память процесса без поиска окна
Во вложения я загрузил программу, которая ищет окно с определенным названием и записывает значение в память процесса. Необходимо,...

Запись значения из регистра во внешнюю память МК-51
Ребят, помогите пожалуйста, лабу надо сдать. Составить на ассемблере МК-51 и отладить программу записи значения, состоящего из...

Запись значения в память из внедренной dll
Есть в памяти процесса, например, адрес 0xAAAAAAAA в него надо записать нужное значение из внедренной в этот процесс dll. Пробовал так: ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
Программный отбор элементов справочника
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит предопределенное значение перечислений. Процедура. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru