Ir para conteúdo
  • Cadastre-se

Luciano

Membros
  • Total de itens

    2
  • Registro em

  • Última visita

Reputação

4 Neutral

Últimos Visitantes

O bloco dos últimos visitantes está desativado e não está sendo visualizado por outros usuários.

  1. Depois de quase 2 dias, consegui fazer o Keygen. Todo o problema estava em fazer cálculo do endereço 00401221(imul eax,eax)com valores altos, pois quanto maior a quantidade de caracteres do nome, maior o valor. Quando o nome era pequeno, funcionava normalmente, caso contrário ocorria erros de estouro. Segue as tentativas e soluções: Usei variáveis numéricas do tipo Integer. Funcionava com nomes menores. Substituí as variáveis para o tipo Long. Funcionava com nomes até 22 caracteres, mas o resultado do cálculo para "imul eax,eax", retornava valor ligeiramente diferente. Descobri que para calcular o "imul eax,eax", estava usando "eax=eax^2" (eax elevado a 2), visto que em matemática equivale multiplicar um numero por ele mesmo, mas este cálculo retorna sempre um valor do tipo Double, que causava a diferença. Alterei para "eax=eax*eax", que retorna o valor do tipo dos operandos, neste caso do tipo Long . Para ultrapassar a barreira dos 22 caracteres, pois mais que isso causava estouro, substituí as variáveis para o tipo BigInteger(System.Numerics do .Net Framework 4). Limite agora é 49, acima a key gerada não funciona(já está de bom tamanho😂). Ultrapassada a barreira dos 22 caracteres, a função "Hex(eax)" passou a dar erro, pois ultrapassava o limite da função quanto o valor de eax era alto. Para substituir a função Hex, depois de googlear, descobri a função ToString("X"). Agora tudo funcionando👌😀. Abaixo o código-fonte em VB.Net: Imports System.Numerics Public Class Form1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click TxtKey.Text = Keygen(TxtName.Text) End Sub Private Function Keygen(Name As String) As String Dim EAX, EBX, ECX As BigInteger EAX = 0 : EBX = 0 : ECX = 0 For Each C As Char In Name EAX = Asc(C) EBX = EAX EAX = EAX << 4 EBX = EBX >> 5 EAX = EAX Xor EBX EAX = EAX + &H26 EAX = EAX Xor ECX ECX = ECX + EAX Next EAX = &HC0DEF EAX = EAX - ECX EAX = EAX * EAX Keygen = "CM2-" & Hexa(ECX) & "-" & Hexa(EAX) End Function Private Function Hexa(Valor As BigInteger) As String Hexa = Valor.ToString("X") If Hexa.Length > 8 Then Hexa = Hexa.Substring(Hexa.Length - 8, 8) End Function End Class
  2. Luciano

    KeyGen em VB.NET/C#

    Olá galera! Estou tentando criar um KeyGen para o Crackme em anexo, mas estou esbarrando com limitações do tamanho das variáveis numéricas. Quando o nome escolhido para gerar a chave é muito grande, causa estouro. Como sou novo em programação, não sei se é falta de conhecimento ou limitação das linguagens de programação que utilizo. Será que alguém aqui no forum poderia fazer a gentileza de criar uma keygen simples em VB.Net ou C# para este crack e disponibilizar o código fonte para eu poder analisar como foi feito. Desde já agradeço. Esta é a parte do código que faz a verificação a chave: 004011F6 8D35 84624000 lea esi,dword ptr ds:[406284] 004011FC 33C9 xor ecx,ecx 004011FE 0FBE06 movsx eax,byte ptr ds:[esi] 00401201 8BD8 mov ebx,eax 00401203 2BF2 sub esi,edx 00401205 C1E0 04 shl eax,4 00401208 C1EB 05 shr ebx,5 0040120B 33C3 xor eax,ebx 0040120D 83C0 26 add eax,26 00401210 33C1 xor eax,ecx 00401212 03C8 add ecx,eax 00401214 46 inc esi 00401215 803E 00 cmp byte ptr ds:[esi],0 00401218 75 E4 jne crackme2.4011FE 0040121A B8 EF0D0C00 mov eax,C0DEF 0040121F 2BC1 sub eax,ecx 00401221 0FAFC0 imul eax,eax 00401224 50 push eax 00401225 51 push ecx 00401226 68 E1604000 push crackme2.4060E1 4060E1:"CM2-%lX-%lX" 0040122B 68 B6624000 push crackme2.4062B6 00401230 E8 9B010000 call <JMP.&wsprintfA> crackme2.exe
×
×
  • Criar Novo...