int *ptr = 0x23AF1FC4;
*ptr = new_value;
Как изменять память процесса из загруженной в нее DLL?
Хотелось бы спросить, как можно менять память процесса из загруженной в него длл?
я впервые сталкиваюсь с этим, и даже не знаю что искать в гугле.
если писать отдельную прогу, то все ясно, WriteProcessMemory и вперед, а какие механизмы изменения памяти (переменных) доступны, если мой код начинает выполняться с DllEntryPoint?
Думается что использование той же WriteProcessMemory(GetCurrentProccess(), ... не обосновано если мы уже в памяти процесса
Цитата: Lei fang
Думается что использование той же WriteProcessMemory(GetCurrentProccess(), ... не обосновано если мы уже в памяти процесса
Почему? В чем принципиальное отличие? Разница только в том, что для текущего процесса не нужно отдельно выставлять права на запись, а в остальном все то же самое.
может есть какие-то методы манипулирования переменными и памятью в целевой программе
А просто записать данные по указателю не пробывали?
вы предлагаете просто создать указать типа int* ptr = 0x23af1fc4;
а дальше просто сделать так: ptr = численное_значение;
меня вдруг осенило :D но еще не уверен в том что правильно вас понял
Код:
давно не работал с с++
Премного всем благодарен. Думаю тема исчерпала себя :)
Цитата: Lei fang
зачем звать кого-то левого из другой комнаты переложить книжку с места на место, за твоим столом, если ты можешь сделать это сам.
я тут одно приложеньице пишу...зачем мне писать функцию на 50-80 строк кода, чтобы получить командную строку чужого процесса, если МС могли написать апи для этого? не удивляйтесь таким вещам.
а поменять можно обычной инструкцией mov, т.к. dll находится в адресном пространстве процесса(сам не проверял, но мои теоретические знания говорят, что это возможно).
Предварительно,наверное,стоит всё же атрибуты блока памяти проверять.А то вдруг там запись запрещена,например