Unconfigured Ad Widget

Collapse

Anúncio

Collapse
No announcement yet.

[Análise] Random Key

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

  • Font Size
    #1

    Tutorial [Análise] Random Key

    Novamente aqui , dessa vez vou fazer uma analise um pouco mais complicada do que a última que falava sobre keygen, aliás vou fazer um random key , sim um gerador de chaves randômicas para o Perfect Keylogger 1.68.



    Como podemos ver nosso registro é composto de 16 caracteres , como sempre vamos debugar , abra ele no OllyDbg e execute , como podemos notar você também não acertou o código logo de cara como eu , vou usar uma técnica chama back to user que consiste em pausar o programa no OllyDbg (F12) e retornar com ALT+F9 com isso vá até a mensagem de erro e aperto OK , vamos ser jogados logo abaixo da MessageBox de erro se olharmos mais acima vemos um PUSH 00448140 que empurra a string "_r <()<1-Z2[l5,^" para STACK e logo abaixo um PUSH EAX empurrando novamente essa string pra EAX e uma CALL , vamos colocar um Breakpoint (F2) nela e reiniciar o programa .

    Dessa vez nosso programa parou nessa CALL , vamos entrar nela com F8 , nossa rotina é essa:



    Primeiramente antes da imagem temos a medida das duas strings , a medida da string hardcoded que é "_r <()<1-Z2[l5,^" que equivale a 16 e a do nosso nome , no meu caso 7 , temos uma exigências feitas por ele em relação a medida:

    1- Se a medida do nome for menor do que a do hardcoded devemos completar com as letras do nome até chegar a medida exata
    Gustavo = 7
    GustavoGustavoGu = 16

    2-Se a medida do nome for maior do que a do hardcoded toda diferença deve ser usada novamente no calculo
    Gustavo membro do UBCT = 22
    22-16 = 6

    Os 6 primeiros caracteres do serial gerado vão novamente entrar na rotina para no novo calculo.

    O calculo é o seguinte :

    //^ = XOR , % = resto da divisão
    ( ( (nome[1]^hardcoded[1]) %25) +65)
    nome++;
    hardcoded++;


    Separei por prioridades de calculos , primeiramente o XOR depois o resto da divisão e por fim a soma com 65 , sim o calculo é só esse , eu resolvi fazer um random key para não ter que manipular tanto a string nome e também para ter algo constante como um nome com 16 caracteres e seus respectivos 16 caracteres de serial, alguns programas que usam o serial HD ou outras informações do sistema para o calculo de serial utilizando uma técnica parecida com essa mas diferente de um random key , o serial é único e constante para cada máquina , já o random key gera várias combinações de nome e serial corretos.

    Bem como o usuário não vai passar informação para nosso random key , vamos precisar da nossa array de letras e uma array com a hardcoded , ambos com o mesmo número de caracteres , em segundo lugar usar um comando que gere números randomicos inteiros para percorrer nossa array de letras , mas somente essa array porque a array que contém o hardcoded deve seguida em ordem correta.

    Também vamos precisar de uma variavel auxiliar para guardar o número randomico , porque ?
    Simples , não poderiamos deixar de usar ela já que nosso comando que gera randomico cria números diferentes a cada execução precisariamos de uma variavel para guardar o mesmo valor para exibir como a letra escolhida pelo programa para o nome de usuário

    E por fim duas váriaveis para concatenar todas as letras de nome e serial separadamente para mostrar na tela.

    Com isso em mente vejam meu source em python:

    Código:
    import random                   # importa o modulo random
    contador=0                                     #contador para auxiliar no nosso While
    hard_coded='_r <()<1-Z2[l5,^'      #Hardcoded
    seq_letra='PAMLINDAGOSTOSAA' #Minha array de letras
    acumula_nome='' #vai acumular as letras do nome
    acumula_serial='' #vai acumular as letras do serial
    while contador<16: #Isso vcs ja sabem repetir até o contador atingir 16 que é o número de caracteres que vai gerar
      randomico=random.randint(0,15) #Variavel que vai armazenar o comando que gera números randomicos de 0 a 15 , lembrando de que a string começa em 0
      copia_randomico=randomico #Armazena a copia do número gerado pela variavel acima
      acumula_nome=acumula_nome+chr(ord(seq_letra[copia_randomico])) #Acumula as letras escolhidas pelo random
      acumula_serial=acumula_serial+chr((((ord(seq_letra[randomico])^ord(hard_coded[contador]))%25)+65)) #Acumula o nosso calculo já feito
      contador=contador+1 #Atribui
    print "Name :  %s" %acumula_nome  #Exibe  o nome
    print "Serial: %s" %acumula_serial    #Exibe o serial
    Bem espero que tenham entendido bem , segue no final meu random key em python e também em C:

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

    Gustavo .
    07/07/09

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

  • Font Size
    #2
    è isso ai gustavo , muito bom seus materiais ...sempre curti suas materias , sei que é bom no que faz

    abraço

    Comment


    • Font Size
      #3
      Valeu cara
      @creatinguseless

      Comment


      • Font Size
        #4
        parese ser muito bom

        valeu



        Durante os tempos de mentiras universais, dizer a verdade se torna um ato revolucionário

        Comment


        • Font Size
          #5
          Realmente muito boa matéria e de fácil entendimento... fiz a leitura por completo e não ficou dúvida alguma.

          parabéns cara!

          Abraços!
          Eu Vim pra Revolucionar!!

          Comment


          • Font Size
            #6
            Parabéns, ótimo tópico e bem explicado...
            Vlw por compartilhar...

            Abraços

            Comment


            • Font Size
              #7
              muito bom o tuto só tem q explica + a fundamentaçãoe teorica pra faze isso mas gostei do topico
              sigpic

              Comment


              • Font Size
                #8
                Bruno , keygen é uma arte que ainda estou engatinhando , seu aprendizado precisa de vários outros requisitos como programação é claro , entendimento de Assembly e algoritmos.

                Pretendo ainda nessa semana postar algo sobre manipulação de strings e afins em python que por sinal está se saindo muito bem nesse assunto e também postar vários sources que tenho aqui para alguns crackmes que resolvi , mas muito obrigado pela sugestão
                @creatinguseless

                Comment


                • Font Size
                  #9
                  Postado Originalmente por Gustavo Ver Post
                  Bruno , keygen é uma arte que ainda estou engatinhando , seu aprendizado precisa de vários outros requisitos como programação é claro , entendimento de Assembly e algoritmos.

                  Pretendo ainda nessa semana postar algo sobre manipulação de strings e afins em python que por sinal está se saindo muito bem nesse assunto e também postar vários sources que tenho aqui para alguns crackmes que resolvi , mas muito obrigado pela sugestão
                  otimo... aguardando ^^
                  sigpic

                  Comment


                  • Font Size
                    #10
                    How do I know if my iPhone is permanently locked?

                    My old phone had a memo recorder, but I have looked everywhere on the Iphone for one.



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

                    Comment


                    • Font Size
                      #11
                      Já tinha lido, só vim mesmo pra dizer ..
                      GRANDEEEEEEEEEEEEEEEEEEE GUGAA .. hUAshHASa ..

                      bju gatinho .. lol


                      Reversing is my life!
                      brcrackers.org

                      Comment


                      • Font Size
                        #12
                        vc é bom no que faz
                        Bem-aventurado o homem que acha sabedoria, e o homem que adquire conhecimento; Provérbios 3:13

                        Comment

                        X
                        Working...
                        X