Shellcode de ingeniería estáticamente inversa: IDA a Ghidra
Estoy tratando de seguir este tutorial que usa IDA en su ejemplo. https://0ffset.net/reverse-engineering/malware-analysis/common-shellcode-techniques/
Hash: 9d7e34250477acf632c6c32fc2c50d3b
En el ejemplo, después de descifrar la etapa 2, este es el resultado:
Cuando repito los mismos pasos con Ghidra obtengo el siguiente resultado:
He estado siguiendo el montaje tratando de ver si podía averiguar qué estaba mal o qué estaba sucediendo sin resultados todavía.
Mientras buscaba, encontré estas referencias: https://c9x.me/x86/html/file_module_x86_id_139.html https://en.wikipedia.org/wiki/HLT_(x86_instruction)
Se agradecería que alguien pudiera indicarme la dirección correcta.
EDITAR: Después de que Paweł Łukasik señaló mi error, funciona:
Respuestas
A partir de la dirección, 0x56todas sus instrucciones parecen estar apagadas. Y si lo miras de cerca, hay un patrón de cuánto se alejan del original.
Por ejemplo, en el desplazamiento 0x58, se supone que debe ser push edxel byte 0x52, pero tienes push espcuál es 0x54. Dado que el artículo menciona que esta parte está encriptada con un xor (con una clave de un solo dígito), veamos cómo esos valores están desactivados.
In [7]: 0x52 ^ 0x54
Out[7]: 6
Entonces esta es exactamente la clave mencionada en el artículo. Si comparamos el resto de los que están fuera de instrucción, notaremos que están fuera del mismo valor.
Conclusión: esta parte del código que se muestra en Ghidra no se descifró y debe procesarse previamente antes del análisis.