Bloqueio de programas de leitura fora da RAM alocada

-1

Eu queria saber se eu poderia manter o programa A lendo todo o meu RAM, já que ele não precisa monitorar o que o programa B está fazendo.

Também estou no windows 8.1 de 64 bits.

    
por Richard 17.02.2016 / 01:46

1 resposta

3

Os programas em execução no Windows não conseguem abordar diretamente a RAM. Eles acessam endereços virtuais. Para acessar a RAM, você precisaria do auxílio de um driver de modo kernel escrito para esse propósito. (É assim que algumas das "ferramentas sysinternals" de Mark Russinovich fazem isso: eles instalam um driver que vem empacotado como um recurso dentro do .exe.)

No que diz respeito a um programa que acessa outro, cada processo no Windows já possui seu próprio espaço de endereço virtual, separado e separado de todos os outros. isto é, o 0x10000 de um programa é completamente diferente do 0x10000 de qualquer outro. Não importa em qual endereço você tente olhar, você está sempre olhando para a instância do seu próprio processo desse endereço.

No entanto: As APIs ReadProcessMemory e WriteProcessMemory permitem que os programas façam o acesso entre processos (em termos de endereços virtuais). Para usá-los, o processo que faz o "acesso" tem que abrir outro processo com os direitos PROCESS_VM_READ ou PROCESS_VM_WRITE concedidos. Processos em execução dentro de sua sessão de usuário normalmente têm a capacidade de fazer isso uns com os outros (ou seja, o descritor de segurança na maioria dos processos permite isso para o criador do processo ... que é você).

No entanto, um programa não teria como saber onde algo de interesse estaria em outro processo. Seria uma busca longa e cansada por qualquer coisa interessante. A grande maioria das tentativas resultaria em uma área "endereço não definido", especialmente em um sistema de 64 bits, principalmente no Windows 8.1 e posterior. Mesmo dentro das áreas definidas da memória virtual, não é como se os programas etiquetassem rotineiramente suas áreas de memória com informações de contexto, como "o número da conta bancária está aqui", seguido imediatamente pelo número da conta.

Pode ser considerado um tanto arrogante que qualquer um dos seus processos possa acessar a "memória" (livremente interpretada) de qualquer outro. Mas lembre-se, tudo o que você faz sob uma identificação de login e autorização é considerado feito por parte de um único usuário. ou seja, são todos os seus dados de qualquer maneira.

Francamente, eu me preocuparia mais com dados em seu disco. Todos os arquivos que contêm seus dados foram criados por você sob o seu ID de segurança, portanto, qualquer programa que esteja sendo executado sob seu ID de segurança pode acessá-los todos. Pior, o padrão do Windows é criar todos os arquivos com acesso de leitura concedido ao grupo "Usuários" - essencialmente todos. Portanto, os programas em execução em outros IDs de segurança também podem lê-los. E, como os arquivos geralmente são bem nomeados e colocados em diretórios bem nomeados e organizados, encontrar arquivos "interessantes" como o accounts.txt não é tão difícil. A criptografia de arquivos NTFS não ajudará em um programa de espionagem que esteja sendo executado em sua própria conta. Essa é uma exposição muito maior do que o acesso à memória entre processos.

    
por 17.02.2016 / 19:58