Shellcode de rétro-ingénierie statique - IDA vers Ghidra
J'essaie de suivre ce tutoriel qui utilise IDA dans son exemple. https://0ffset.net/reverse-engineering/malware-analysis/common-shellcode-techniques/
Hash: 9d7e34250477acf632c6c32fc2c50d3b
Dans l'exemple, après décryptage de l'étape 2 voici le résultat:
Quand je répète les mêmes étapes avec Ghidra, j'obtiens le résultat suivant:
J'ai suivi l'assemblée en essayant de voir si je pouvais comprendre ce qui ne va pas ou ce qui se passe sans aucun résultat.
En cherchant, je suis tombé sur ces références: https://c9x.me/x86/html/file_module_x86_id_139.html https://en.wikipedia.org/wiki/HLT_(x86_instruction)
Ce serait apprécié si quelqu'un pouvait me diriger dans la bonne direction.
EDIT: Après que Paweł Łukasik ait signalé mon erreur, cela fonctionne:
Réponses
À partir de l'adresse, 0x56toutes vos instructions semblent être désactivées. Et si vous regardez de plus près, il y a un motif à quel point ils sont éloignés de l'original.
Par exemple, au décalage 0x58, il est censé être push edxainsi l'octet devrait être 0x52, mais vous avez push espce qui est 0x54. Puisque l'article mentionne que cette partie est chiffrée avec un xor (avec une clé à un chiffre), voyons comment ces valeurs sont désactivées
In [7]: 0x52 ^ 0x54
Out[7]: 6
C'est donc exactement la clé mentionnée dans l'article. Si nous comparons le reste de ceux hors instruction, nous remarquerons qu'ils sont décalés de la même valeur.
Conclusion - cette partie du code affichée dans Ghidra n'a pas été décryptée et doit être prétraitée avant l'analyse.