Техническая статья • Tooling

Tooling: как инструменты ускоряют разработку

В сложных проектах время уходит не только на код, но и на переключение контекста в рутинных задачах. Инструменты для себя (tooling) помогают оптимизировать повторяющиеся действия и быстрее получать ответы.

Developer productivity Reverse engineering CLI Binary analysis C++

TL;DR

  • Tooling ускоряет разработку, когда нужно часто повторять рутинные действия.
  • Опасность рутины заключается в снижении концентрации, что приводит к появлению ошибок и неточностей.
  • Часто кажется, что дествие занимает мало времени, поэтому не следует его автоматизировать даже если требуется его повторить более одного раза, но ошибка заключается в том, что через пару дней/недель вы упустите контекст задачи и её выполнение будет занимать не 5 минут, а пару часов.

Зачем нам это?

Практический вывод: если действие повторяется регулярно и требует погружения к контекст — лучше его автоматизировать, чем писать инструкцию по его выполнению.

Пример: Integerfinder->

Что делает инструмент:
  • Сканирует бинарный файл и ищет числа разных типов/разрядностей.
  • Поддерживает разные порядки байт (включая “swap” режим).
  • Может находить пересечения с числами из текстового лога (фильтрация кандидатов).
  • Может показать места (offset/длина), где встречается заданное число.

Пару полей можно было искать вручную, но для полного разбора протокола нужно не случайное совпадение, а статистически подтверждённый факт.

# Примеры сценариев использования (схематично)

# 1) Вывести список найденных чисел по типам:
./integerfinder -f ../test.hex -l

# 2) Оставить только те числа, которые встречаются в тексте (логе):
./integerfinder -f ../test.hex -t test.log

# 3) Найти позиции/смещения, где встречается заданное число:
./integerfinder -f ../test.hex -i 72208
Чем это полезно в работе: когда нужно сопоставить значения из логов с байтами в дампе, инструмент позволяет подготовить отчет по каждому бинарному пакету. А это уже не совпадение. Это уже статистика!

Другие статьи