![]() |
Чтение/запись в памяти приложения на Delphi
Выручайте неопытного. Задача: написать программу с целью изменения данных в адресе памяти другого приложения или попросту редактора памяти.
Допустим, нужное значение находится по адресу $001695A0, программа должна преобразовать его в текст и вывести. Всем кто откликнется, буду благодарен. |
Предлагаю решение :внедрить DLL в чужое адресное пространство пример на эту тему можно посмотреть у Джеффри Рихтера "Программирование под Windows для профессионалов"
или вот по этому адресу есть статья с примерами http://codeproject.com/threads/winspy.asp |
Если охота сделать без DLL. То можно использовать функции ReadProcessMemory/WriteProcessMemory
|
Вот абсолютно рабочая функция получающая текст активного таба в чужом процессе . Правда на С++, но механизм , я думаю понятен.
Код:
//--------------------------------------------------------------------------------- |
Цитата:
|
Так написал же уже.
Порядок такой : Сначала нужно получить хендл процесса. Eсли известен хендл какого либо окна этого процесса то функция GetWindowThreadProcessId вернёт processID . Открываем по этому ID процесс и получаем хендл процесса - hProcess. hProcess = OpenProcess( PROCESS_VM_OPERATION | PROCESS_VM_READ | PROCESS_VM_WRITE, FALSE, ProcessId) И читаем по адресу ReadProcessMemory(hProcess,адрес с которого читаем ,буфер куда читаем, сколько нужно прочитать байт, количество прочитанных байт); Пишем аналогично (только осторожно чтобы не завалить апликацию) WriteProcessMemory(hProcess, адресс по которому пишем, адрес того что пишем, сколько байт хотим записать,сколько на самом деле записали) Все функции - WindowsAPI, так-что в делфи проблем быть не должно ;) |
alexey_ma
Только нужно добавить, что если мы пишем в чужой процесс, неплохо было бы перед этим сделать VirtualAllocEx в нём, дабы не завалить его. rtfm |
Не, судя по вопросу, он хочет изменить данные по определенному адресу, в этом случае аллокацию делать не нужно, но почти наверняка завалим процесс.
Кстати в коде который я привел выше есть вызов VirtualAllocEx |
| Часовой пояс GMT +4, время: 12:07. |
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.