Pergunta

No Windows, digamos que usei a injeção de DLL para entrar em outro processo. Também fiz alguns screencaptes da memória no processo em que injetei e conheço a localização dos dados que quero retirar. Digamos que haja dados no outro processo em 0XAAAAAAAA que contém um determinado valor. Como pego esse valor desse processo para que eu possa usá -lo no meu aplicativo de injeção? Como sou injetado no processo, posso usar algo como memcpy?

memcpy(value, 0xaaaaaaaa, 10);

Estou assumindo que provavelmente está mais envolvido do que isso?

Editar: Para as respostas abaixo, não vejo como o WM_COPYDATA me ajuda como é para enviar dados para outro aplicativo, não para recuperar dados de um aplicativo existente.

Foi útil?

Outras dicas

No Windows, todo processo aborda sua própria memória. Isso significa que você não pode fazer algo como memcpy com dois ponteiros que apontam para a memória de dois processos diferentes.

Você pode considerar qualquer opção de comunicação interprocessante: arquivos mapeados de memória, soquetes, tubos nomeados, mensagens de janela de evento.

Aqui estão mais informações sobre IPC

Experimente WM_COPYDATA e leve a ajuda do MSDN referente a ele.

Os seguintes mecanismos IPC são suportados pelo Windows:

Prancheta
Com
Cópia de dados
DDE
Mapeamento de arquivos
Lotes de correio
Tubos
RPC
Soquetes do Windows

Mais detalhes aqui Comunicações interprocessantes

No seu caso, eu usaria Mensagem WM_COPYDATA

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top