1. Главная
  2. Научные статьи
  3. Техника и технологии
  4. Электротехника, электронная техника, информационные технологии
Марат
Марат

Программист

10 месяцев назад

302

Реверс бинарных файлов 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 имеет встроенные базовые типы, такие как boolstring и float64, а также так называемые составные типы, такие как структуры, функции и типы интерфейса. Go также позволяет пользователям объявлять свои собственные типы. Извлечение этих типов является важным шагом в статическом анализе вредоносного ПО и помогает аналитикам понять конкретные части кода.

Ниже вы можете найти несколько примеров определений типов из sys.x86_64_unp с использованием исправления.

Програма redress - инструмент для анализа удаленных двоичных файлов Go, скомпилированных с помощью компилятора Go. Он извлекает данные из двоичного файла и использует их для восстановления символов и выполнения анализа. По сути, он пытается "переодеть" "раздетый" двоичный файл. Его можно скачать с его страницы GitHub .