Программист
Реверс бинарных файлов Golang с использование GHIDRA. Часть 2
Это вторая часть нашей серии о реверс-инжиниринге двоичных файлов Go с помощью Ghidra. В предыдущей статье мы обсуждали, как восстановить имена функций в удаленных файлах Go и как помочь Ghidra распознавать и определять строки в этих двоичных файлах. Мы сосредоточились на двоичных файлах ELF, лишь кратко упомянув различия между PE-файлами.
В этой статье будет обсуждаться новая тема - процесс извлечения информации о типе из двоичных файлов Go. Мы также более подробно объясним, как обращаться с файлами Windows PE. И, наконец, мы исследуем различия между различными версиями Go, включая изменения, произошедшие со времени нашей последней публикации в блоге.
На момент написания этой статьи последней версией Go была go1.18, и мы использовали последнюю версию Ghidra - 10.1.4. Как и ранее, все созданные нами скрипты Ghidra можно найти в нашем репозитории GitHub вместе с тестовыми файлами «Hello World». Вредоносные файлы, используемые в примерах, можно скачать с VirusTotal.
В следующей статье дается подробное объяснение системы типов Go
Go имеет встроенные базовые типы, такие как bool
, string
и float64
, а также так называемые составные типы, такие как структуры, функции и типы интерфейса. Go также позволяет пользователям объявлять свои собственные типы. Извлечение этих типов является важным шагом в статическом анализе вредоносного ПО и помогает аналитикам понять конкретные части кода.
Ниже вы можете найти несколько примеров определений типов из sys.x86_64_unp
с использованием исправления.
Програма redress - инструмент для анализа удаленных двоичных файлов Go, скомпилированных с помощью компилятора Go. Он извлекает данные из двоичного файла и использует их для восстановления символов и выполнения анализа. По сути, он пытается "переодеть" "раздетый" двоичный файл. Его можно скачать с его страницы GitHub .