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

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

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

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

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

Категории

Все категории
Loading categories
flipper-template — Шаблон разработки на Zig для Flipper Zero с автоматизированным конвейером сборки, интеграцией SDK и кросс-компиляцией для ARM Cortex-M4. Поддерживает протоколы Sub-GHz, NFC, RFID и Infrared. | Kitploit
Инструменты/GitHubGitHub/nishantjoshi00/flipper-template
Безопасность встроенных системБезопасность IoTСкриптинг и автоматизацияМобильная безопасностьАппаратная БезопасностьУтилиты и фреймворкиОбучение и ОбразованиеАнализ Прошивок

Популярное

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

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

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

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

Смотреть все инструменты →
Поделиться
GitHub
nishantjoshi00/flipper-template

flipper-template

Шаблон разработки на Zig для Flipper Zero с автоматизированным конвейером сборки, интеграцией SDK и кросс-компиляцией для ARM Cortex-M4. Поддерживает протоколы Sub-GHz, NFC, RFID и Infrared.

Репозиторий
13432 месяцев назадПроверено Kitploit

Flipper Zero Zig Template

Современный, готовый к использованию шаблон для разработки приложений Flipper Zero с использованием языка программирования Zig. Этот проект предоставляет оптимизированную систему сборки, которая интегрирует Zig с SDK Flipper Zero, позволяя разработчикам писать типобезопасные и безопасные по памяти приложения для платформы Flipper Zero.

Обзор

Этот шаблон соединяет мощную систему сборки и возможности языка Zig с набором для разработки прошивки Flipper Zero. Он обрабатывает сложную интеграцию между кросскомпиляцией Zig для ARM Cortex-M4 и SDK Flipper, предоставляя чистую отправную точку для пользовательских приложений.

Ключевые особенности

  • Нативная поддержка Zig: Пишите приложения Flipper полностью на Zig, используя его гарантии безопасности на этапе компиляции и совместимость с C
  • Автоматизированный конвейер сборки: Бесшовная интеграция с ufbt (неофициальный инструмент сборки) для упаковки FAP-файлов
  • Кроссплатформенная разработка: Работает на macOS, Linux и других платформах, поддерживаемых Zig
  • Интеграция с SDK: Предварительно настроенные пути включения и флаги компилятора для полного SDK Flipper Zero (цель F7)
  • Интерактивная настройка: Скрипт инициализации с руководством для настройки метаданных приложения
  • Быстрый запуск: Встроенные команды для сборки, упаковки и развертывания на устройствах Flipper

Архитектура

Шаблон использует двухэтапный процесс сборки:

  1. Этап сборки Zig: Компилирует исходный код Zig в объектные файлы ARM Cortex-M4 (app.o)

    • Цель: Архитектура thumb с моделью CPU cortex-m4
    • ABI: eabihf (Встраиваемый двоичный интерфейс приложений, аппаратная плавающая запятая)
    • Оптимизация: ReleaseSmall для минимального размера бинарного файла
  2. Этап упаковки UFBT: Связывает объектные файлы с SDK и упаковывает в формат .fap

    • Обрабатывается официальной цепочкой инструментов сборки Flipper
    • Создает развертываемые пакеты приложений

Предварительные требования

Необходимые инструменты

  • Zig: Версия 0.15.1 или новее (скачать)
  • UFBT: Неофициальный инструмент сборки Flipper (руководство по установке)
  • Python 3: Требуется для выполнения команд ufbt
  • SDK Flipper Zero: Автоматически управляется ufbt (устанавливается в ~/.ufbt)

Настройка для конкретной платформы

macOS

Шаблон предварительно настроен для ARM64 macOS с путем к цепочке инструментов ARM:

root@kitploit:~
~/.ufbt/toolchain/arm64-darwin/arm-none-eabi/include

Если вы работаете на другой платформе, возможно, потребуется изменить путь arm_libc_include в build.zig:31 в соответствии с расположением вашей цепочки инструментов.

Установка

  1. Установите UFBT:

    root@kitploit:~
    python3 -m pip install --upgrade ufbt
    ufbt update
    
  2. Клонируйте или скачайте этот шаблон:

    root@kitploit:~
    git clone https://github.com/yourusername/flipper-template.git
    cd flipper-template
    
  3. Инициализируйте свой проект:

    root@kitploit:~
    zig build init
    

    Этот интерактивный скрипт запросит у вас:

    • ID приложения (например, my_custom_app)
    • Отображаемое имя (показывается в меню Flipper)
    • Описание
    • Имя автора
    • URL репозитория GitHub

Использование

Сборка приложения

Скомпилируйте исходный код Zig в объектный файл:

root@kitploit:~
zig build

Это создаст zig-out/bin/app.o со всем скомпилированным кодом приложения.

Создание пакета FAP

Соберите и упакуйте полное приложение:

root@kitploit:~
zig build fap

Это запускает полный конвейер:

  1. Компилирует исходный код Zig в объектный файл
  2. Вызывает ufbt для связывания с SDK
  3. Генерирует файл .fap в каталоге dist/

Развертывание на Flipper

Запустите приложение непосредственно на подключенном Flipper Zero:

root@kitploit:~
zig build launch

Это собирает, упаковывает и передает приложение через USB, а затем автоматически запускает его.

Структура проекта

root@kitploit:~
flipper-template/
├── application.fam       # Манифест приложения Flipper (метаданные, точки входа)
├── build.zig            # Конфигурация системы сборки Zig
├── build.zig.zon        # Манифест пакета Zig
├── icon.png             # Иконка приложения (рекомендуется 10x10px)
├── setup.sh             # Интерактивный скрипт инициализации проекта
├── src/
│   └── root.zig         # Основной исходный код приложения
└── zig-out/             # Артефакты сборки (генерируются)
    └── bin/
        └── app.o        # Скомпилированный объектный файл

Ключевые файлы

  • src/root.zig: Точка входа, содержащая функцию start() и логику приложения
  • application.fam: Конфигурация Flipper (ID приложения, категория, зависимости, размер стека)
  • build.zig: Определяет цели компиляции, пути к SDK и команды сборки

Руководство по разработке

Минимальная структура приложения

Шаблон включает пример "Hello World", демонстрирующий основные API Flipper:

root@kitploit:~
// Импорт функций SDK Flipper
const flipper = @cImport({
    @cInclude("furi.h");
    @cInclude("gui/gui.h");
    @cInclude("gui/canvas.h");
    @cInclude("gui/view_port.h");
});

// Точка входа приложения (должна называться "start")
export fn start(_: ?*anyopaque) callconv(.{ .arm_aapcs = .{} }) i32 {
    // Инициализация GUI viewport
    const gui = flipper.furi_record_open("gui");
    const view_port = flipper.view_port_alloc();

    // Установка обратных вызовов и пользовательского интерфейса
    // ... (см. src/root.zig для полной реализации)

    // Цикл событий
    _ = flipper.furi_thread_flags_wait(1, flipper.FuriFlagWaitAny, flipper.FuriWaitForever);

    return 0;
}

Интеграция с SDK

Система сборки автоматически настраивает пути включения для:

  • Core SDK: FURI (Flipper Universal Runtime Interface)
  • HAL: Уровень аппаратной абстракции для STM32WB55
  • Стандартные библиотеки: mbedTLS, nanopb, mlib
  • Библиотеки протоколов: Sub-GHz, NFC, RFID, Infrared
  • API периферии: GPIO, SPI, I2C, UART

Все заголовки доступны через @cImport() в вашем коде Zig.

Замечания по соглашениям вызова

SDK Flipper использует соглашения вызова ARM AAPCS:

  • AAPCS: Стандартный вызов процедур ARM (например, точка входа start())
  • AAPCS-VFP: С поддержкой плавающей запятой/векторов (например, обратные вызовы)

Убедитесь, что экспортированные функции соответствуют ожидаемому соглашению вызова:

root@kitploit:~
export fn start(_: ?*anyopaque) callconv(.{ .arm_aapcs = .{} }) i32
export fn draw_callback(canvas: ?*Canvas, ctx: ?*anyopaque) callconv(.{ .arm_aapcs_vfp = .{} }) void

Обработка импортов SDK

Некоторые заголовки SDK содержат конструкции, которые C-транслятор Zig не может обработать (например, объединения с непрозрачными типами в input/input.h). Для таких случаев вручную объявляйте внешние функции:

root@kitploit:~
extern fn view_port_input_callback_set(
    view_port: ?*flipper.ViewPort,
    callback: ?*const fn (?*anyopaque, ?*anyopaque) callconv(.{ .arm_aapcs_vfp = .{} }) void,
    context: ?*anyopaque
) callconv(.{ .arm_aapcs = .{} }) void;

Устранение неполадок

Ошибки сборки

Проблема: unable to find header 'furi.h'

  • Причина: SDK UFBT не установлен или неверный путь ~/.ufbt
  • Решение: Выполните ufbt update для установки заголовков SDK

Проблема: undefined reference to 'view_port_alloc'

  • Причина: Объектный файл не связан должным образом с SDK
  • Решение: Используйте zig build fap вместо zig build для завершения линковки

Проблемы развертывания

Проблема: No Flipper device found

  • Причина: Устройство не подключено или находится в режиме DFU
  • Решение: Подключите через USB и убедитесь, что устройство разблокировано в главном меню

Проблема: Приложение вылетает при запуске

  • Причина: Переполнение стека или неверное соглашение вызова
  • Решение: Увеличьте stack_size в application.fam или проверьте сигнатуры функций

Расширенная настройка

Флаги компилятора

Измените addFlipperDefines() в build.zig для настройки макросов препроцессора:

root@kitploit:~
obj.root_module.addCMacro("FAP_VERSION", "\\\"1.0\\\"");
obj.root_module.addCMacro("CUSTOM_DEFINE", "value");

Настройки оптимизации

Измените уровень оптимизации в build.zig:11:

root@kitploit:~
const optimize = b.standardOptimizeOption(.{
    .preferred_optimize_mode = .ReleaseFast,  // или .ReleaseSmall, .Debug
});

Целевая архитектура

Шаблон нацелен на Flipper Zero с STM32WB55 (ARM Cortex-M4F). Для портирования на другие ARM-устройства измените build.zig:4-9:

root@kitploit:~
const target = b.resolveTargetQuery(.{
    .cpu_arch = .thumb,
    .cpu_model = .{ .explicit = &std.Target.arm.cpu.cortex_m4 },
    .os_tag = .freestanding,
    .abi = .eabihf,
});

Вклад в проект

Вклад приветствуется! Этот шаблон направлен на упрощение разработки на Zig для Flipper Zero. Если вы столкнулись с проблемами совместимости SDK или у вас есть предложения по улучшению процесса сборки, пожалуйста, откройте issue или pull request.

Области для улучшения

  • Поддержка путей цепочки инструментов для Windows
  • Автоматическое определение версии SDK
  • Интеграция с каталогом приложений Flipper
  • Дополнительные абстракции обёртки SDK

Ресурсы

  • Документация разработчика Flipper Zero
  • Репозиторий UFBT
  • Справочник по языку Zig
  • Справочник по API SDK Flipper

Лицензия

Этот проект лицензирован по лицензии MIT - подробности см. в файле LICENSE.

Благодарности

  • Команда Flipper Devices за цепочку инструментов UFBT
  • Сообщество Zig за поддержку кросскомпиляции ARM
  • Участники SDK Flipper Zero

Примечание: Это неофициальный шаблон и не имеет отношения к Flipper Devices Inc. Всегда тщательно тестируйте приложения перед развертыванием на рабочих устройствах.

Скачать инструмент