Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
go_parser — Очередной парсер бинарных файлов Golang для IDAPro | Kitploit
Инструменты/GitHubGitHub/0xjiayu/go_parser
Обратная инженерияОтладчикиАнализ вредоносных программАнализ Бинарных Файлов
GitHub0xjiayu/go_parser

go_parser

Очередной парсер бинарных файлов Golang для IDAPro

Репозиторий
1.3k14032 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Еще один парсер Golang-бинарников для IDAPro

Английский | 中文


ПРИМЕЧАНИЕ:

Сейчас последняя ветка master — это версия для Python3. Старая ветка master была переименована в ветку py2 и временно не поддерживается.

Инструкции для ветки Python3

Эта версия разработана и протестирована на macOS/Windows, IDA7.4+ и Python3.8.x. Если возникают проблемы на других платформах и версиях, вы можете создавать issue или Pull Requests.

Кроме того, следует отметить, что IDA7.4 на macOS использует Python3, установленный по умолчанию, что может привести к невозможности загрузки сторонних библиотек, установленных вами. Вам нужно переключиться на Python, установленный через brew. Для конкретных методов переключения обратитесь к этому скрипту.


Вдохновленный golang_loader_assist и jeb-golang-analyzer, я написал более полный инструмент для парсинга Go-бинарников для IDAPro.

Основные возможности:

  1. Найти и разобрать структуру firstmoduledata в Go-бинарнике и добавить комментарий для каждого поля;
  2. Найти pclntab (PC Line Table) по firstmoduledata и разобрать его. Затем найти, разобрать и восстановить имена функций и пути к исходным файлам в pclntab. Пути к исходным файлам будут выведены в окно вывода IDAPro;
  3. Разобрать строки и указатели на строки, добавить комментарий для каждой строки и создать dref для каждого указателя на строку;
  4. В соответствии с firstmoduledata найти каждый type и разобрать его, добавить комментарий для каждого атрибута type, что будет очень удобно для исследователя вредоносного ПО при анализе сложных типов или определений структур данных;
  5. Разобрать itab (таблицу интерфейсов).

Полезная информация для реверс-инжиниринга Go-бинарников:

И есть две полезные особенности в go_parser:

  1. Он также корректно работает с бинарниками, имеющими повреждённую информацию в заголовке файла, особенно в заголовках секций;
  2. Все перечисленные выше функции применимы к бинарникам, собранным с buildmode=pie.

Пример результата разбора структуры данных конфигурации в DDGMiner v5029 (MD5: 95199e8f1ab987cd8179a60834644663):

И список путей к исходным файлам, определённых пользователем:

Файлы проекта:

  • go_parser.py :Входной файл, нажмите [Alt+F7], выберите и выполните этот файл;
  • common.py: Определение общих переменных и функций;
  • pclntbl.py: Парсинг pclntab (PC Line Table);
  • strings.py: Парсинг строк и указателей на строки;
  • moduldata.py: Парсинг firstmoduledata;
  • types_builder.py: Парсинг types;
  • itab.py: Парсинг itab (таблицы интерфейсов);

Дополнительно, str_ptr.py будет разбирать указатели на строки, если вручную указать начальный и конечный адреса указателей на строки.

Примечание

  1. Этот инструмент написан на Python3 и протестирован на IDA7.4+;
  2. Модуль парсинга строк был перенесён из golang_loader_assist, и я добавил функцию парсинга указателей на строки. На данный момент поддерживается только архитектура x86 (32- и 64-битная).

Ссылки

  1. Analyzing Golang Executables
  2. Reversing GO binaries like a pro
  3. Reconstructing Program Semantics from Go binaries.pdf
  4. Go二进制文件逆向分析从基础到进阶——综述
  5. Go二进制文件逆向分析从基础到进阶——MetaInfo、函数符号和源码文件路径列表
  6. Go二进制文件逆向分析从基础到进阶——数据类型
  7. Go二进制文件逆向分析从基础到进阶——itab与strings
  8. Go二进制文件逆向分析从基础到进阶——Tips与实战案例
Скачать инструмент