Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Как изменять память процесса из загруженной в нее DLL?

408
21 июня 2011 года
Lei fang
265 / / 01.10.2005
Здравствуйте.
Хотелось бы спросить, как можно менять память процесса из загруженной в него длл?
я впервые сталкиваюсь с этим, и даже не знаю что искать в гугле.

если писать отдельную прогу, то все ясно, WriteProcessMemory и вперед, а какие механизмы изменения памяти (переменных) доступны, если мой код начинает выполняться с DllEntryPoint?

Думается что использование той же WriteProcessMemory(GetCurrentProccess(), ... не обосновано если мы уже в памяти процесса
278
21 июня 2011 года
Alexander92
1.1K / / 04.08.2008
Цитата: Lei fang

Думается что использование той же WriteProcessMemory(GetCurrentProccess(), ... не обосновано если мы уже в памяти процесса



Почему? В чем принципиальное отличие? Разница только в том, что для текущего процесса не нужно отдельно выставлять права на запись, а в остальном все то же самое.

408
21 июня 2011 года
Lei fang
265 / / 01.10.2005
ну дело в эстетических соображениях :) зачем звать кого-то левого из другой комнаты переложить книжку с места на место, за твоим столом, если ты можешь сделать это сам.
может есть какие-то методы манипулирования переменными и памятью в целевой программе
277
21 июня 2011 года
arrjj
1.7K / / 26.01.2011
А просто записать данные по указателю не пробывали?
408
21 июня 2011 года
Lei fang
265 / / 01.10.2005
хм...
вы предлагаете просто создать указать типа int* ptr = 0x23af1fc4;
а дальше просто сделать так: ptr = численное_значение;
меня вдруг осенило :D но еще не уверен в том что правильно вас понял
278
21 июня 2011 года
Alexander92
1.1K / / 04.08.2008
Да, это самый простой путь, согласен.

 
Код:
int *ptr = 0x23AF1FC4;
*ptr = new_value;
408
21 июня 2011 года
Lei fang
265 / / 01.10.2005
точно, забыл про *
давно не работал с с++
Премного всем благодарен. Думаю тема исчерпала себя :)
316
21 июня 2011 года
Alm3n
889 / / 29.05.2009
Цитата: Lei fang
зачем звать кого-то левого из другой комнаты переложить книжку с места на место, за твоим столом, если ты можешь сделать это сам.


я тут одно приложеньице пишу...зачем мне писать функцию на 50-80 строк кода, чтобы получить командную строку чужого процесса, если МС могли написать апи для этого? не удивляйтесь таким вещам.
а поменять можно обычной инструкцией mov, т.к. dll находится в адресном пространстве процесса(сам не проверял, но мои теоретические знания говорят, что это возможно).

7
21 июня 2011 года
@pixo $oft
3.4K / / 20.09.2006
Предварительно,наверное,стоит всё же атрибуты блока памяти проверять.А то вдруг там запись запрещена,например
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог