Domanda Risolto [WIN32 ASM - KeygenMe] Matteo KeygenMe (4)

Stato
Discussione chiusa ad ulteriori risposte.

matteo.crackme

Utente Bronze
7 Aprile 2015
2
1
1
35
Ultima modifica:
Nome: Matteo KeygenMe
Piattaforma:
Win32
Linguaggio: ASM
Difficoltà: 4
Obiettivo: Creare un keygen (potrebbe essere necessario l'unpack prima di continuare)
Packer/Protezioni usate:
Packer "Fai Da Te", Alcuni Anti-Debug, ...
Altre info: Ho sbagliato a scrivere la mail nella descrizione, ovviamente è gmail.com e non .it
Per una protezione del Kernel di Windows non è possibile incontrare PacMan su Windows a 64bit, per incontrare PacMan eseguilo con Windows XP x32: apri, attach debugger, leggi l'entrypoint come testo :)

Download: http://crackmes.de/users/matteo/matteo_keygenme/
Scansione VirusTotal: Nessuno ti obbliga ad aprirlo :) inoltre c'è la firma digitale con GPG
Soluzione: http://crackmes.de/users/matteo/matteo_keygenme/

su richiesta di SmilingWolf ecco qui il mio crackme che avevo pubblicato su crackmes.de
 

Allegati

  • Matteo CrackMe.zip
    6.9 KB · Visualizzazioni: 43
  • Mi piace
Reazioni: SmilingWolf
Ultima modifica:
Finito il keygen finalmente :D
Per la documentazione rimando ad un altro momento, ora non ce la faccio proprio :p

Al solito, il codice del keygen è terribile e gli appunti incompleti ed incomprensibili, ma a qualcuno potrebbero servire. Ovviamente spoilers inside, quindi meglio non guardarli fino all'ultimo :)

L'unpacking è molto semplice, la parte più bella (quella che ho preferito di più in assoluto) è stata la risoluzione del secondo check... mi ha tenuto in scacco per due giorni D:

Un keygenme consigliatissimo (e che mi ha dato parecchia soddisfazione), se trovo il tempo magari scrivo anche una soluzione veloce per crackmes.de :)

UPDATE: Anti-debug tricks:
Genera un'eccezione usando il Trap flag. L'exception handler fa un check degli hardware registers: se sono "ripieni" lascia perdere quel che dovrebbe fare ed esce prematuramente dalla callback.
Se i DRX registers sono vuoti ed il checksum dei primi 332h byte a partire dall'entry point corrisponde a quello memorizzato viene corretta la chiave di decryptazione del codice memorizzata a partire da 00404041.

NtSetInformationThread anti-debug trick.

Overwrite dei primi 5 byte di AddVectoredExceptionHandler con XOR EAX, EAX; RETN 8
Overwrite dei primi 5 byte di AddVectoredContinueHandler con XOR EAX, EAX; RETN 8
 

Allegati

  • Matteo CrackMe Solved.zip
    17.2 KB · Visualizzazioni: 35
Stato
Discussione chiusa ad ulteriori risposte.