Shellcode di ingegneria inversa staticamente - IDA a Ghidra
Sto cercando di seguire questo tutorial che utilizza IDA nel suo esempio. https://0ffset.net/reverse-engineering/malware-analysis/common-shellcode-techniques/
Hash: 9d7e34250477acf632c6c32fc2c50d3b
Nell'esempio, dopo la decrittografia della fase 2, questo è il risultato:
Quando ripeto gli stessi passaggi con Ghidra ottengo il seguente risultato:
Ho seguito l'assemblea cercando di vedere se riuscivo a capire cosa succede quando è sbagliato o cosa sta succedendo senza risultati ancora.
Durante la ricerca, mi sono imbattuto in questi riferimenti: https://c9x.me/x86/html/file_module_x86_id_139.html https://en.wikipedia.org/wiki/HLT_(x86_instruction)
Sarebbe apprezzato se qualcuno mi indicasse la giusta direzione.
EDIT: Dopo che Paweł Łukasik ha sottolineato il mio errore, funziona:
Risposte
A partire dall'indirizzo 0x56tutte le tue istruzioni sembrano essere disattivate. E se guardi da vicino c'è uno schema di quanto sono diversi dall'originale.
Ad esempio, all'offset 0x58, dovrebbe essere push edxcosì il byte dovrebbe essere 0x52, ma hai push espqual è 0x54. Poiché l'articolo menziona che questa parte è crittografata con un xor (con una chiave a una cifra), vediamo come questi valori sono disattivati
In [7]: 0x52 ^ 0x54
Out[7]: 6
Quindi questa è esattamente la chiave menzionata nell'articolo. Se confrontiamo il resto di quelli fuori istruzione noteremo che sono fuori dallo stesso valore.
Conclusione: questa parte di codice mostrata in Ghidra non è stata decrittografata e dovrebbe essere preelaborata prima dell'analisi.