Амоко
| Статус: | Под разработкой |
| Версия: | 2.9 (до 3,0) |
| Док: | http://amoco.readthedocs.io/en/latest/index.html |
Описание
Amoco - это пакет Python, посвященный символическому анализу двоичных файлов.
Это особенности:
- Общая структура для инструкций декодирования, разработанная для сокращения времени, необходимого для реализации поддержки новых архитектур. Например, декодер для большинства инструкций IA32 (общего назначения) подходит менее чем в 800 линиях Python. Полный декодер SPARCV8 RISC (или набор большого пальца ARM) подходит менее чем за 350 строк. Декодер набора инструкций ARMV8 составляет менее 650 строк.
- Символический модуль алгебры, который позволяет описать семантику каждой инструкции и вычислять функциональное представление блоков инструкций.
- Общая модель выполнения, которая обеспечивает абстрактную модель памяти для прозрачного справки с конкретными или символическими значениями и другими системными функциями.
- Различные классы, внедряющие обычные методы разборки, такие как линейный разверток, рекурсивный обход или более подробные методы, такие как Path-Predicate, которые полагаются на решателей SAT/SMT, чтобы продолжить обнаружение графика потока управления или даже для реализации таких методов, как DARE (направленное автоматизированное случайное обследование).
- Различные общие помощники и Arch-зависимые симпатичные принтеры, позволяющие настраивать конфигурации внешнего вида и испытания (подумайте о синтаксисе AT & T против Intel, Absolute vs. Относительные смещения, десятичные или шестнадцатеричные немедленные и т. Д.).
Amoco все еще работает в процессе . Смотрите Todo о списке функций, которые должны быть объединены из разработки филиала или для более тщательно реализованного.
Пользовательская документация и API можно найти по адресу http://amoco.readthedocs.io/en/latest/index.html

Тодо
Некоторые компоненты Amoco все еще находятся в процессе того, чтобы их догнали в ветвь высвобождения или дальнейшие разработки. Точнее:
- x86 Инструкции FPU Семантика не реализована,
- Arm Simd, VFP, Neon, Trustzone, Jazelle наборы инструкций не реализованы,
- Некоторые стратегии разборки на основе решателя еще не объединены.
- Функции импорта/экспорта IDB не реализованы.
Взносы в выполнение незаполненных/непреднамеренных частей приветствуются.
Разработчик примечания
Таблица QT по умолчанию вдохновлена отличной Qdarkstylesheet и использует большинство своих значков через API Qresource , предоставленную из сгенерированного модуля RC_ICONS.PY :
<pyenv>/lib/python3. <x>/site -packages/pyside6/rcc -g python icons.qrc> rc_icons.py
Лицензия
Пожалуйста, смотрите лицензию.
Изменение
- v2.9.11
- Изменить двигатель пользовательского интерфейса по умолчанию с пигментов на богатые
- Добавить объект emudata orm, чтобы сохранить состояние эмулятора
- Добавить команды сохранения/восстановления в Emul UI
- Реализовать логику CallStack
- Добавить рамку Callstack в Emul UI
- Добавить команду отладки в Emul UI
- Добавить класс structview для красивой печати структуры
- Fix x86 MMU_Cache Logic (Flush & Misses)
- Изменить действие по умолчанию с CodeQL на рюк
- Рефакторный код на основе чеков
- v2.9.10
- x86: добавьте поддержку для выполнения реального режима
- x86: Добавьте полную поддержку сегментации/пейджинг
- Добавить систему BAREMETAL-X86 для анализа прошивки BIOS
- Merge New Arch.io модуль для определения заглушек iOS
- Merge Cas.blobs Module
- Добавить быстрые версии Rep STOS/LODS/SCA/MOVS
- Добавить метод TracePoint в класс Emul
- Добавить поддержку ресурсов PE
- улучшить команды загрузки/эмуля Amoco
- Добавить Set, Display, Nexti, пока в Emul UI
- v2.9.9
- Добавить архитектуру PPC32 (E200)
- Добавьте поддержку для исполняемого формата COFF
- Добавить анализатор для файлов трассировки GDB
- Улучшить подпакукции
- v2.9.8
- обновление до pyside6 (qt6)
- Добавить формат OLE2
- Обновить подпакукции структур, чтобы разрешить выбранные размеры указателей
- Частичное обновление архитектуры AVR
- v2.9.7
- Drop Python <3,8 Поддержка
- Улучшение пакета структур для поддержки Bitfield и вычисления смещений полей для выбранного размера указателя (32 или 64 бит)
- v2.9.6
- Merge QT GUI ImageView
- Улучшение QT GUI BINFMTVIEW/HEXVIEW с энтропией и InfoView
- Добавьте конкретный вид Mach-O
- Улучшение поддержки QT UI Dark Mode
- Добавить Tricore Architecture
- Добавить архитектуру W65C02
- Добавить архитектуру WASM
- Добавить анализатор двоичного формата Wasm
- Перемещать System.Structs Module в упаковку
- v2.9.5
- Merge Qt Gui binfmtview/hexview
- Исправить декодер и семантику инструкций различных рук
- Добавить структуру вид и конкретные виды ELF и PE
- Добавить поддержку QT UI Dark Mode
- Добавить погрузчики MIPS
- Добавить поддержку Битфилда в структуру
- v2.9.4
- Добавить погрузчики Linux32 для MIPS_LE/SPARC/RISCV
- Обновление системных интерфейсов Win32/Win64
- Добавить поддержку Mapper для непревзойденного трубопровода
- Исправить MIPS R3000 LOAD/HOSE HOSE EFFICE
- Добавить класс Archview
- Добавить архитектуру RISCV64 (RISCV.RV64I)
- Добавить тест на предварительный кондиционер для спецификаций
- Обновить все характеристики арки, чтобы избежать столкновений
- улучшить/исправить различные форматы арки
- Исправить x86 анализатор
- v2.9.3
- Команды Merge/Update DBGUI EMUL и SRV
- Слияние/обновление видов эмулятора
- Добавить систему PSX
- Добавить архитектуру MIPS (только R3000)
- Улучшение поддержки изменений в конфигурации
- rework ext/stub interface
- Фиксирование форматера Sparc
- Исправление PE32+ DataDirectories
- v2.9.2
- Подготовьте слияние с dbgui
- Drop Python 2.7 Поддержка
- Повторная работа подпроводится/модуль импорт и регистрация
- Различные кодовые дезинфекции
- черные источники
- v2.9.1
- Добавить Mach-O Loader и System.osx Skeleton
- улучшить модуль эмулятора
- Добавить пользовательский интерфейс сервера и базового клиента CmdCli
- Исправьте различные ошибки/предупреждения
- v2.9.0
- Добавить скелет модуля эмулятора (класс Emul)
- реорганизовать системные модули в подпаки
- Добавить систему, ОС, задание и классы defineestub
- Добавить архитектуру AVR
- Модифицированный блок класс => атрибут карты перенесено на класс cfg.node
- перемещенные классы памяти в модуле System.Memory
- Переносили классы анализа CFG в подпакете SA '
- улучшить журналы отладки
- улучшить анализаторы PE/ELF с модулем AmoCo.Structs
- Добавить метод CheckSec в классе ELF
- Исправить семантику и форматы ARMV7
- v2.6.3
- Добавить карликовую архитектуру
- Обновить и улучшить эльфийский погрузчик
- улучшить выражение упрощения для сменов+и Ops
- слияние поля структуры с переменной длиной класс "varfield"
- v2.6.2
- Исправить поддержку для структур "Стянка"
- Разрешить самоопределенные выравнивания структуры
- v2.6.1
- По умолчанию используйте нативную структуру размер/алигмент
- v2.6.0
- Добавить архитектуру V850 (E2S)
- Добавить архитектуру SH2-A
- Добавить поддержку для анализа структур HAB I.mx6
- Объединение AVR Architecture
- Добавить классы системы/структуры
- Экспорт «ползание» из дерева Амоко (Libclang c-to-struccts)
- Добавить инструкции EBPF семантику
- Добавить поддержку (старые) инструкции BPF
- Добавьте поддержку двоичного формата Hex/SREC
- добавить метод Memory Mamp 'Merge'
- Добавить метод «Step_instruction» в CoreExec (эмулятор)
- Добавить поддержку структур UFS
- Serge Signals Dispatcher для пользовательского интерфейса
- улучшить поддержку Setuptools
- Удалите Токс и полагайтесь только на Трэвиса
- улучшить инструкции ARMV7 Семантика и помощники кода
- улучшить инструкции ARMV7 Спецификации и форматов
- Добавить журнал на уровне отладки деревьев
- Исправить декодер для арх с инструкцией с переменной длины Bigendian
- Повышение эффективности декодера с помощью индикатора расширенного магистра
- Добавить поддержку пигментов для SPARC, форматер инструкций MSP430
- Улучшить расширение выражений
- Улучшить модуль конфигурации
- v2.5.3
- Полное исправление выпуска № 77 (типичное безумие x64)
- v2.5.2
- Частичное исправление выпуска № 77 (GitHub), связанная с семантикой обучения LEA на x64 Arch.
- v2.5.1
- Добавить архитектуру RISC-V
- Добавить архитектуру EBPF
- Используйте выходы Unicode с символами Unicode для большинства операторов, если они поддерживаются
- Добавить менее непреодолимые (LTU) и операторы с большим или равным подписанными (GEU), необходимыми для архитектуры RISCV
- исправить метод упрощения для выражений Comp
- Улучшить методы упрощения с помощью дополнительного параметра «битличе»
- улучшить интерфейс памяти Mapper
- Исправить метод smt model_to_mapper
- Добавить формат CFG 'Dot' (элементарный) выход
- Добавить метод «GetFileOffSet» в классах ELF и PE
- Удалить флаг глобального эндоуности
- Обновление форматов x86/x64, которые будут совместимы с GNU AS и Clang
- Добавьте немного инструкций x86/x64 (Movnti, Wbinvd, Div, ...)
- Исправьте некоторые спецификации редких инструкций x86/x64 (PMOVMSKB, ...)
- v2.5.0
- Поддержите Python3 (> = 3,5)
- Разрешить загрузку нескольких арх процессора (исправление выпуска № 21 и № 64)
- Обновление документов readme и sphinx
- v2.4.6
- Добавить документацию Sphinx (FST файлы и Docstrings)
- Добавить метод функций для основных классов
- улучшить эльф красивую печать
- Измененный модуль DB для использования SQLalchemy, а не ZODB
- Сделайте все объекты выбирать (с самым высоким протоколом)
- Добавить новые форматер x86 & x64
- Исправить множество спецификаций и семантики X64
- Некоторые улучшения производительности
- улучшить упрощение MEM (VEC) и SLC (VEC)
- Исправить SLC.Simplify для оператора ** '
- v2.4.5
- Добавить селектор x86/x64 internals '
- Добавить выражение «лаборатория» для ярлыков
- улучшить память/карту с помощью метода «грип»
- улучшить память, чтобы позволить «перемещаться» на какой -то адрес
- Улучшить форматер x86 AT & T
- Добавить тесты на декодер x64
- Fix x64 режим адресации режима
- Исправить множество спецификаций x64
- Добавить семантику x64, упакованные в стиле, семантику
- Исправить различные инструкции X86 SSE
- Исправьте различные проблемы X86 (Fisttp/setcc/push imm8/movq)
- v2.4.4
- Добавить семантику обучения SSE
- Добавить пакет QT UI.Graphics с классами элементов Block/func/xfunc
- Добавить исходный пакет ui.graphics gtk
- Переместить vltable в UI.Views.blockview Class
- Исправить различные x86/64 декодирование/формирование/семантика
- v2.4.3
- Добавить пакеты UI.Graphics (опустошенные)
- Добавить модуль UI.Views с поддержкой блока/func/xfunc
- Добавить класс ui.render.vltable в красивые таблицы печати
- Улучшение класса форматирования инструкций для доступа к токенам PP
- Algoritms Algorithmes Cleaner IterCfg и Lbackward
- Добавить класс экспрессии VECW, чтобы представить «расширенные» выражения VEC
- Улучшить память о том, как выражения VEC
- Улучшение расширения и исправления в Func.makeMap ()
- Добавить атрибут «Тип» (Std/PC/Flags/Stack/Other)
- Определить тип регистра для x86 Arch
- Исправьте немного x86/64 декодирование/формирование/семантика
- Обновите Travis Config, исправить Pytest против токена.
- v2.4.2
- Поддержка слияния для симпатичных методов печати (в модуле UI.Render)
- Добавить x86 Hilighted Syntax Formatter (в Arch.x86.formats)
- Expose Expressions Pretty Printing Interface (exp.pp (), exp.toks ())
- Удалить отступление конфигурации по умолчанию (ConfigParser is Standard)
- объединить несколько образцов и тестов, переносимых в пакет Pytest
- Используйте Setuptools, добавьте tox.ini и travis-ci config
- Исправьте немного семантики x86/x64
- улучшить форматы SPARC V8
- Добавить регистры Coprocessor Sparc
- обновить readme
- v2.4.1
- Добавить анализ lbackward и внедрение func.makemap ()
- добавить класс экспрессии VEC, чтобы представить набор выражений
- Добавить функции слияния и расширения Mapper
- Разрешить пройти экземпляр SMT Solver в exp.to_smtlib ()
- Добавить методы Funchelpers в классах систем на основе X86
- Добавить классы сеанса/DB и методы специфичных для маринованного
- Добавить метод «Прогресс» в класс журнала, чтобы предоставить обратную связь
- Добавить необходимые внешние пакеты в setup.py
- Исправьте немного семантики x86/x64
- улучшить форматы SPARC V8
- обновить readme
- v2.4.0
- Interface Merge Z3 Solver, см. Метод SMT.PY и SMTLIB () EXP
- Merge Fbackward Analysis и Code Func Class.
- Улучшение выражений: отдельные унарные и бинарные операции, «нормализовать» выражения
- Улучшение Mapper с помощью метода Memory () и устойчивых к псевдонимам операторов композиции
- Улучшение класса Memoryzone: вернуть верхние части выражения вместо поднятия памяти.
- Добавление класса RawExec для входа, подобного ShellCode
- Поддержка строки ввода в классах ELF/PE.
- Исправьте различные ошибки x86/x64
- Защита от изменения размера регистров Env
- Добавить загрузчик win64
- Настроить уровни журнала и необязательный файл из Conf
- обновить readme
- v2.3.5
- Добавить X64 Arch + Full X86/64 SSE Декодер
- Hotfix x86/x64 Инверсия {88}/{8a}
- Исправить различные декодеры и семантики X86
- Код косметика
- v2.3.4
- Merge Armv7/Thumb Исправлена семантика
- Добавить декодеры FPU FPU
- Добавить функцию найти в карте памяти
- Исправить ядро read_instruction на границе карты
- Исправлена PE Import SAING и TLS TABLE BUILDER
- Более быстрый общий декодер
- Hotfix различные декодеры x86
- Добавьте несколько декодеров SSE x86
- v2.3.3
- Поддержка микроконтроллеров MSP430 и PIC18
- Исправить Sparc rett, udiv/sdiv и форматы
- Исправлено x86 JCXZ Decoding
- v2.3.2
- Architecture Merge Z80/GB, исправление SPARC сообщили о проблемах
- Добавьте пример декодирования SSE2 (фиксированный)
- v2.3.1
- Добавить файл лицензии
- Исправить архитектуру SPARC
- Избегайте выражения PTR, когда адрес не является Deref
- Исправить правила упрощения EQN_HELPERS
- Readme обновлен
- Новый класс PE (протестирован на ost.exe) + поддержка нескольких точек входа.