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

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

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

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

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

Категории

Все категории
Loading categories
asmsense — Небольшая языковая модель, которая присваивает имена и описывает функции в бинарных файлах x86-64 без символов, с открытым набором данных, базовыми решениями и экспериментами по тонкой настройке LoRA. | Kitploit
Инструменты/GitHubGitHub/krxi/asmsense
Статический анализОбратная инженерияАнализ Бинарных ФайловМашинное ОбучениеСтатьи и ИсследованияОбучение и ОбразованиеОбратная Разработка с Помощью ИИПодобранные РесурсыБезопасность ИИ
GitHubkrxi/asmsense

asmsense

Небольшая языковая модель, которая присваивает имена и описывает функции в бинарных файлах x86-64 без символов, с открытым набором данных, базовыми решениями и экспериментами по тонкой настройке LoRA.

7104 дней назадЕщё не проверено
РепозиторийСайт

Популярное

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

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

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

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

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

asmsense

English · Türkçe

Небольшая языковая модель, которая смотрит на функцию в бинарном файле без символов и даёт ей осмысленное имя и краткое описание.

Текущий статус

Набор данных v4 содержит 228 177 функций из 341 проекта на 5 уровнях оптимизации и опубликован на Hugging Face в конфигурации v4. Скрипт для Ghidra готов. Лучшая небольшая модель на данный момент — Qwen3-8B + LoRA, обученная на данных v5 (сначала описание, затем имя), — достигает F1 по именам 0.124 на фиксированной тестовой выборке v4 и 0.155 на eval_115; лучшая большая модель с контекстом вызовов набирает 0.167 на той же тестовой выборке. См. раздел 6 «Результаты». Модель пишет описание в одно предложение на английском и турецком вместе с именем. Адаптер доступен на Hugging Face: krxi123/asmsense-qwen3-8b-lora.

Откройте программу без символов в Ghidra или IDA, и вы увидите сотни функций с именами вида FUN_00401a30. Значительная часть реверс-инжиниринга состоит в том, чтобы понять и назвать эти функции одну за другой. Этот проект нацелен на то, чтобы обучить модель этому первому шагу:

input  (stripped x86-64)             target output
─────────────────────────────         ──────────────────────────────────────────────
movzx  eax, byte ptr [rsi]            name:        adler32_update
lea    rdx, [rdi + rax]               description: Computes the Adler-32 checksum
cmp    rdx, 0xfff1      ← 65521                    over the bytes of a buffer.
...                                   # TR: Tampondaki baytlar üzerinden Adler-32
                                      #     sağlama toplamı hesaplar.

Цель

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

Может ли маленькая модель, обученная на специально подготовленных данных, сравняться с большими моделями или даже превзойти их в этой задаче — при этом работая на ноутбуке?

На одном и том же тестовом наборе оцениваются три уровня:

УровеньМодельРоль
ПотолокБольшие открытые модели (DeepSeek, GLM, MiMo, Gemma, Qwen)Лучшее, что достижимо на данный момент с готовыми моделями
Базовая линияМаленькая открытая модель до дообученияОтправная точка
Этот проектТа же маленькая модель + LoRA на этом датасетеВклад проекта

Как это работает

  1. Генерация данных (cikar.py): Открытые C-проекты компилируются для x86-64 на разных уровнях оптимизации (-O0, -O2). Ассемблерный код каждой функции извлекается. Эталонный ответ — исходное имя функции — берётся напрямую из исходного кода, поэтому ручная разметка не требуется. projeler.json фиксирует коммит и флаги компилятора, использованные для каждого проекта.

  2. Имитация stripped-бинарника: Результат напоминает то, что Ghidra показывает для функции в stripped-бинарнике:

    • локальные для проекта функции становятся sub_01a3, а глобальные данные — dat_0042 (числа перемешаны, с отдельными пространствами имён для -O0 и -O2),
    • цели переходов используют локальные для функции метки, такие как loc_1 и loc_2,
    • вызовы внешних библиотек (memcpy, __stack_chk_fail) и строковые литералы (; -> "out of memory") остаются видимыми, поскольку они также видны в реальном бинарнике.

    Если настоящее имя функции встречается в её собственном ассемблерном коде — например, в сообщении об ошибке — строка помечается sizinti и исключается из тестового набора.

  3. Оценка (taban.py): Модель получает только ассемблерный код и должна предсказать имя. Предсказания оцениваются по пересечению токенов (F1), поэтому близкие ответы, такие как crc32_update и update_crc, получают частичный зачёт.

loc_6:
movzx   r9d, byte ptr [rsi + rdx]
add     rdi, r9                 ← adler32_z (-O2), as the model sees it
add     rcx, rdi
inc     rdx
cmp     rax, rdx
jne     loc_6

Данные

ПроектыФункции (-O0 + -O2)
Обучениеzlib, libpng, sqlite, lua, mbedtls, zstd, libsodium, expat, brotli, jansson, lz4, libyaml, xxhash, cJSON16 804
Тест (устойчивый к запоминанию)tomlc17, cyaml, mu_json_x, sajs, picomatch777 → оценочный набор 115

Набор данных доступен на Hugging Face: krxi123/asmsense (16 804 обучающих примера, 777 тестовых примеров, оценочный набор eval_115 и тексты лицензий). Также зеркалирован на Kaggle: krxiii/asmsense.

Масштабированный набор данных (конвейер v4, 5 уровней оптимизации)

C-проекты с разрешительными лицензиями (MIT, BSD, Apache-2.0, ISC, zlib), отобранные с GitHub с помощью olcekle.py, были скомпилированы на уровнях -O0/-O1/-O2/-O3/-Os с использованием cikar_bin.py (реальная dylib + strip -x). Скрипты сборки проектов не запускались; файлы компилировались по отдельности с помощью clang, а файлы или проекты, которые не скомпилировались, пропускались. Строки дедуплицировались по нормализованному хешу ассемблера. Строки, ассемблер которых совпадал с данными валидации/теста, удалялись из обучения, а вендорные копии, пары (файл, имя) которых встречались в обучении, удалялись из валидации/теста. Каждая строка имеет поле lisans.

РазбиениеПроектыСтрокиУникальные исходные функции
Обучение290196 11772 179
Валидация2319 7706 667
Тест (малоизвестные, ≤200 звёзд, 2024+)2812 2904 685

Из 473 проектов 352 дали строки, а 120 не скомпилировались (код ядра, встраиваемых систем или платформозависимый код). Использовался только clang. Данные хранятся вне Git и могут быть восстановлены с помощью python3 aday_bul.py и python3 olcekle.py hepsi.

Разбиение на обучение/тест строго на уровне проектов: ни одна функция из проекта не может появиться по обе стороны. Тестовые проекты были намеренно выбраны малоизвестными (2-190 звёзд), и большинство из них начаты в 2024-2025 годах, что делает гораздо менее вероятным, что крупные модели встречали их во время обучения, чем такую библиотеку, как zlib. Лицензии: veri/LISANSLAR.md.

Известное исключение: вендорный код. Независимый аудит выпущенных данных v6 (rapor/arastirma/V6_VERI_DENETIMI.md, veri_denetim_v6.py) подтвердил, что ни один проект, id или (проект, файл, имя) не появляется по обе стороны, но тестовый проект snkv встраивает SQLite под своими собственными именами файлов, тогда как sqlite является обучающим проектом. В исправленной тестовой выборке из 2 000 строк 217 строк (10,85%) имеют имя, идентичное обучающей функции SQLite. Каждая модель набирает меньше баллов на этих строках, поэтому они не завышают результаты; вместо этого они сужают разрыв между малыми и большими моделями (см. Результаты, раздел 6). Выборка валидации valid_300 содержит 16 похожих строк (5,3%).

Результаты

1. Тест, устойчивый к запоминанию: 5 малоизвестных проектов, 115 функций

Средний F1 по именам (1,0 = точное совпадение). В столбце «F1 без префикса» общий префикс имён каждого проекта (cyaml_, mu_, sajs_) удаляется с обеих сторон; модель не может вывести этот префикс из ассемблера.

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