Я создал простой сервер на C в одной системе и клиент в другой. Моя цель — взять процесс, работающий на сервере, отправить его HANDLE процесса в подключающуюся систему и с помощью ReadProcessMemory прочитать и интерпретировать определенные значения данных.
Я хорошо осведомлен о проблемах, связанных с передачей данных на разных архитектурах, и я хотел бы увидеть, возможно ли то, что я предлагаю, прежде чем пытаться решить такую сложную задачу. Мои вопросы следующие:
Является ли HANDLE просто ссылкой, в моем случае, на процесс? Это означает, что если я успешно отправлю дескриптор процесса клиенту, я ничего не смогу с ним сделать?
Если вышесказанное верно, есть ли какой-то способ, которым я могу сделать снимок или сделать дамп памяти процесса, отправить дамп через TCP (конечно, используя Winsock), а также прочитать и отсортировать память на клиенте. Если да, то будет ли этот фрагмент данных слишком большим для отправки.
Я хотел бы подчеркнуть, что чтение памяти процесса должно выполняться клиентской системой, а не сервером.
ReadProcessMemory()нельзя использовать за пределами компьютера. ЕСЛИ клиент и сервер находятся на одном компьютере, тогда он будет работать. Что касается того, как отправитьHANDLE, это просто указатель, поэтому введите его вint(32-битная система) или__int64(64-битная система) и отправьте его, а затем введите его обратно вHANDLEна другой стороне. Конечно, это означает, что и клиент, и сервер должны быть 32-битными или 64-битными процессами, поэтомуHANDLEимеет правильное значение, иначе вы рискуете усечь значение. - person Remy Lebeau   schedule 12.07.2014