Ir para conteúdo
Faça parte da equipe! (2024) ×

[C#] Memory Hacking: Write Process Memory


lipinf
 Compartilhar

Posts Recomendados

Eae galera,

Hoje vô demonstrar exemplo de uso da função Write Process Memory na linguem C# :]

 

No caso, irei criar um programinha que escreve algo em um precesso alvo.

 

Crie um projeto,

No form coloque 2 textbox , 1 label e um botão :]

textbox1 = Nome do processo

textbox2 = valor a ser escrito

Label = Pid (Identificador do processo)

Botão = Escreve no Processo alvo

 

Importe:

É necessário se cadastrar para acessar o conteúdo.

 

Adicione estas 2 funções:

É necessário se cadastrar para acessar o conteúdo.

 

No seu form dê 2 clicks no botão e coloque:

É necessário se cadastrar para acessar o conteúdo.

 

Agora Explicando :]

 

Process[] pid = Process.GetProcessesByName(textBox1.Text):

Instancia um array do tipo Process e armazena os objetos(processos) encontrados em cada posição do array.

 

IntPtr hProcess = OpenProcess(0x1F0FFF, false, ProcessID):

Abre o processo com a determinada PID(ProcessID) com todos os direitos(0x1F0FFF), armazena valor da handle em hProcess.

 

WriteProcessMemory(MemoryOpen(ProcessID), mAddress, Buffer, Buffer.Length, null):

Escreve no processo alvo(Valor da handle aberta), na address(mAddress) o valor(buffer) de tamanho(Buffer.Length), armazena o numero de bytes escritos e retorna verdadeiro caso tudo ocorra bem =D.

 

CloseHandle(MemoryOpen(pid[0].Id)):

Quando você terminar com a handle OpenProcess, se lembrar de usar a função CloseHandle para fechar a mesma :]

 

Sobre o Unsafe

No C# afim de manter os tipos seguros e confiáveis, não trabalha com suporte a aritmética de ponteiro. Porém usando o unsafe, você pode definir um contexto unsafe (sem proteção) nos ponteiros que poderão ser usados.

O unsafe como a própria palavra já diz quer dizer sem segurança, que é necessário para qualquer operação envolvendo ponteiros.

No caso, o WriteProcessMemory é uma função Unsafe, logo o método write também tem que ser do tipo Unsafe.

 

Para poder rodar sua aplicação pelo Visual C# vá nas propriedades do seu projeto e marque a caixinha Allow Unsafe Code ;D

 

 

Espero que tenham gostado ^^

Abraços e até a próxima.

By Lipinf =D

Link para o comentário
Compartilhar em outros sites

Muito bom , muitas pessoas ja me perguntaram como usar o WriteProcessMemory no C# ,agora irei passar esse tópico...

É necessário se cadastrar para acessar o conteúdo.

Nessa linha ae , pode trocar por isso :

if(MemoryOpen(ProcessID) == IntPtr.Zero)

 

da certo , hehe

Parabéns bro.

abraços!

Link para o comentário
Compartilhar em outros sites

Vlws NOOB =D

Simsim, pode por isso tb, tinha me esquecido já que tinha uma constante própria pra valores de ponteiro igual a 0, de qualquer forma fica ae as 2 opções rsrs

Nobeta sempre simulando o IDE *-*

 

Vlws por comentar no meu tópico.

Abraço ae parceiro.

Link para o comentário
Compartilhar em outros sites

Este tópico está impedido de receber novos posts.
 Compartilhar

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...

Informação Importante

Nós fazemos uso de cookies no seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies , caso contrário, vamos supor que você está bem para continuar.