Array
(
)

Keylogger

Waldemorte
   - 21 set 2004

Estou montado um keylogger, mas algumas funções necessárias ainda não consegui desenvolver...

1) Como oculto completamente a aplicação? (sem inclusive aquela ´piscada´ na barra de tarefas)

2) Como retorno o nome da aplicação ou da janela que está sendo logada? Para filtrar determinados programas.

3) Como envio, de forma simples, o arquivo gerado por e-mail?

Pessoal, sei que já existem várias questões sobre esse assunto, mas todas ela bem picadas ou incompletas...

Preciso monitorar determinados usuários do meu sistema...
Agradeço quem puder ajudar!


Nildo
   - 21 set 2004

Levando em consideração que é APENAS para monitorar os usuários do sistema, para uso LEGAL, e seus usuários estando cientes diante esta situação. Mas você disse:


Citação:
Preciso monitorar determinados usuários do meu sistema...


Se você precisa monitorar determinados usuários do SEU sistema, para que a necessidade em saber de qual aplicação veio a tecla pressionada?


Citação:

1) Como oculto completamente a aplicação? (sem inclusive aquela ´piscada´ na barra de tarefas)

Antes das criações dos forms no seu DPR, você utiliza o comando:

#Código


Application.ShowMainForm := False;


Isso evita que seu form seja mostrado ou aquela piscada na barra de tarefas. Quanto à não aparecer no CTRL+ALT+DEL você tem que registrar sua aplicação como sendo um serviço do Windows, mas isso se for no Windows 98. De uma pesquisada no Google que você acha coisas interessantes.


Citação:

2) Como retorno o nome da aplicação ou da janela que está sendo logada? Para filtrar determinados programas.


Se sua DLL for injetada em todos os processos, você pode enviar ao seu formulário, alem da tecla pressionada, o resultado da API GetCurrentProcessId. Mas se você estiver hookando as mensagens de Tecla Pressionada, creio eu que não seja possível. Mas você pode burlar isso pegando o Handle do Form que está em foco usando a API GetForegroundWindow. Já que se o cara pressionou uma tecla, quem recebe essa mensagem e vai processá-la é o formulário/aplicação que estiver no topo, no caso a API getForegroundWindow retorna o handle da janela que está no topo.


Citação:

3) Como envio, de forma simples, o arquivo gerado por e-mail?


Pesquise aqui no fórum, esse assunto já foi abortado muitas vezes.
Ps.: Eu respondí sua mensagem levando em consideração que o uso deste aplicativo não é para uso maléfico, e sim para propósito educacional. Caso contrário, favor desconsiderar minha mensagem.

Um abraço


Waldemorte
   - 21 set 2004

Ow, cara! Valew memso pela ajudar, mas... Vc tem como me explicar melhor o esquema do handle?

Muito obrigado!


Nildo
   - 21 set 2004

Handle é uma identificação de um objeto. Cada objeto possui um handle diferente. O Handle de um formulário seu nunca vai ser igual a nenhum outro handle de outro formulário em todo o Sistema Operacional.
Esse handle é atribuido em tempo de execução, automaticamente pelo seu sistema operacional, e não pode ser alterado.
Você pode pegar o título da janela ativa com a seguinte função que eu fiz:

#Código


function Titulo_Janela_Ativa: PChar;
var
Titulo: PChar;
Tamanho: Integer;
janela: THandle;
begin
janela := GetForegroundWindow;
Tamanho := GetWindowTextLength( Janela ) + 1;
Titulo := PChar( AllocMem( Tamanho ) );
GetWindowText( Janela, Titulo, Tamanho );

Result := Titulo;
end;



Waldemorte
   - 21 set 2004

Cara, muito obrigado!!! Sua ajuda foi muito útil pra mim!

Consegui fazer uma boa parte do que eu precisava, agora é só enfeitar, hehehe!

Qualquer coisa, posso contar com a sua juda de novo?

Brigadão! :P


Nildo
   - 21 set 2004

Pode sim Walter. :wink: