binary-analysis-patterns
Анализ двоичных паттернов кода
Понимание скомпилированных исполняемых файлов без исходного кода. Этот навык предоставляет паттерны языка ассемблера, распознавание потока управления и рекомендации по декompиляции для задач реверс-инжиниринга.
スキルZIPをダウンロード
Claudeでアップロード
設定 → 機能 → スキル → スキルをアップロードへ移動
オンにして利用開始
テストする
「binary-analysis-patterns」を使用しています。 Что делает этот паттерн ассемблера? ```asm lea eax, [rax + rax*4] add eax, eax ```
期待される結果:
Этот паттерн умножает значение на 10. Инструкция LEA вычисляет rax * 5 (rax + rax*4), затем ADD удваивает это, получая rax * 10. Компиляторы используют эту оптимизацию сдвига и сложения вместо более медленной инструкции MUL для умножения на константу.
「binary-analysis-patterns」を使用しています。 Как определить оператор switch в дизассемблере?
期待される結果:
Ищите два паттерна: (1) Таблицы переходов — регистр используется как индекс в массиве адресов (jmp [table + reg*8]), или (2) Последовательные сравнения — несколько цепочек cmp/je, сравнивающих одну и ту же переменную с разными константами. Паттерн с таблицей переходов более распространён для больших операторов switch со множеством случаев.
「binary-analysis-patterns」を使用しています。 В чём разница между этими двумя паттернами? Паттерн A: mov eax, [rdi] Паттерн B: movzx eax, byte [rdi]
期待される結果:
Паттерн A читает 4-байтное целое число (dword) из памяти, что предполагает тип int или uint32. Паттерн B читает один байт и расширяет его с нулём до 32 бит, что предполагает тип unsigned char или uint8. Вариант с movzx обычно используется при работе с булевыми флагами, символами ASCII или небольшими беззнаковыми значениями, которые нужно продвинуть в регистры большего размера для операций.
セキュリティ監査
安全All 47 static analysis findings are false positives. The detected patterns are Markdown code fence delimiters and assembly code examples in documentation. No executable code, external commands, or security risks present. This is purely educational content about binary analysis patterns.
品質スコア
作れるもの
Реверс-инжиниринг вредоносного ПО
Исследователи безопасности используют паттерны ассемблера для понимания поведения вредоносного ПО, идентификации вредоносных функций и восстановления логики программы без доступа к исходному коду.
Поддержка устаревшего кода
Разработчики, поддерживающие устаревшие системы без документации, используют паттерны дизассемблирования для понимания скомпилированных бинарных файлов, исправления ошибок и добавления функций в старые приложения.
Решение задач CTF
Участники Capture The Flag анализируют бинарные исполняемые файлы для поиска скрытых флагов, понимания потока программы и эксплуатации уязвимостей с использованием распознавания паттернов ассемблера.
これらのプロンプトを試す
Объясните, что представляет собой этот паттерн кода ассемблера в высокоуровневом коде: ```asm xor ecx, ecx loop_start: cmp ecx, [n] jge loop_end ; ... body ... inc ecx jmp loop_start loop_end: ``` Какую программную конструкцию реализует этот паттерн?
Я дизассемблировал эту функцию. Помогите понять: 1. Какова сигнатура функции (параметры и тип возвращаемого значения)? 2. Какое соглашение о вызовах используется (System V или Microsoft x64)? 3. Какова общая логика этой функции? [вставьте код ассемблера здесь]
Этот код ассемблера обращается к сложной структуре данных. Помогите определить: 1. Какой это тип структуры данных (struct, массив, связный список)? 2. Каковы смещения полей и их вероятные типы? 3. Что представляет эта структура в исходном коде? ```asm mov rdi, [struct_ptr] mov eax, [rdi] movzx eax, byte [rdi+4] mov rax, [rdi+8] ```
Мне нужен скрипт на Python для Ghidra, чтобы: 1. Найти все функции, вызывающие 'strcpy' 2. Идентифицировать потенциальные уязвимости буфера 3. Создать тип структуры для обнаруженной мной раскладки данных Предоставьте скрипт с объяснениями того, что делает каждая часть.
ベストプラクティス
- Начните с анализа строк для идентификации интересных функций — строки, на которые есть ссылки в коде, часто раскрывают назначение окружающей логики
- Отслеживайте поток данных назад от интересных вызовов API или библиотечных функций, чтобы понять, как данные подготавливаются и проверяются
- Активно используйте перекрёстные ссылки (xrefs) — понимание того, кто вызывает функцию и к чему она обращается, раскрывает контекст и назначение
- Документируйте свои находки с комментариями и переименованными символами немедленно — анализ бинарных файлов итеративен, и вы забудете контекст
回避
- Предположение, что вывод декомпилятора корректен — декомпиляция может создавать вводящий в заблуждение код из-за оптимизаций, нераспознанных типов или непрямых вызовов
- Анализ оптимизированных сборок без понимания оптимизаций компилятора — оптимизация хвостового вызова (jmp вместо call+ret) и встраивание могут скрыть границы функций
- Фокусировка только на «интересных» функциях — авторы вредоносного ПО часто скрывают логику в скучно выглядящих утилитарных функциях или используют техники обфускации
- Игнорирование специфичных для архитектуры соглашений о вызовах — неправильная идентификация передачи параметров приводит к совершенно неверным сигнатурам функций
よくある質問
Может ли этот навык анализировать реальные бинарные файлы для меня?
Какие архитектуры охватываются паттернами?
Как выбрать между соглашениями о вызовах System V и Microsoft x64?
Почему декомпилированный код выглядит странно или явно неправильно?
Какие инструменты лучше всего работают с этими паттернами?
Могу ли я использовать эти паттерны для анализа вредоносного ПО?
開発者の詳細
作成者
sickn33ライセンス
MIT
リポジトリ
https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/binary-analysis-patterns参照
main
ファイル構成
📄 SKILL.md