Вопрос

допустим, в Windows я использовал внедрение DLL для входа в другой процесс.Я также сделал несколько скриншотов памяти процесса, в который я ввел, и знаю расположение данных, которые я хочу извлечь.Допустим, в другом процессе есть данные по адресу 0xaaaaaaaa, которые содержат определенное значение.Как мне извлечь это значение из этого процесса, чтобы я мог использовать его в своем инъекционном приложении?Поскольку я вовлечен в процесс, могу ли я просто использовать что-то вроде memcpy?

memcpy(value, 0xaaaaaaaa, 10);

Я предполагаю, что это, вероятно, более сложное дело, чем это?

Редактировать:Что касается ответов ниже, я не вижу, как WM_COPYDATA помогает мне, поскольку это для отправки данных в другое приложение, а не для извлечения данных ИЗ существующего приложения.

Это было полезно?

Решение

Другие советы

В Windows каждый процесс обращается к своей собственной памяти.Это означает, что вы не можете сделать что-то вроде memcpy, имеющего два указателя, которые указывают на память двух разных процессов.

Вы можете рассмотреть любой вариант межпроцессного взаимодействия:файлы с отображением в память, сокеты, именованные каналы, сообщения окна событий.

Вот более подробная информация о МПК

Попробуйте WM_COPYDATA и воспользуйтесь справкой из MSDN, относящейся к нему.

Следующие механизмы IPC поддерживаются Windows:

Буфер обмена
КОМ
Копирование данных
DDE
Сопоставление файлов
Почтовые слоты
Трубы
RPC
Розетки для окон

более подробная информация здесь Межпроцессные коммуникации

в вашем случае я бы использовал Сообщение WM_COPYDATA

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top