Binabsinspector (бинарный абстрактный инспектор) является статическим анализатором автоматизированного обратного инженерного и сканирования уязвимостей в двоичных файлах, который является долгосрочным исследовательским проектом, инкубированным в Keenlab. Он основан на абстрактной интерпретации при поддержке Гидры. Он работает на PCODE Гидры вместо сборки. В настоящее время он поддерживает двоичные файлы на x86, x64, armv7 и aarch64.
z3-${version}-win/binz3-${version}-glibc-${version}/bin/*.so до /usr/local/lib/Создайте расширение самостоятельно, если вы хотите разработать новую функцию, обратитесь к Руководству по разработке.
gradle buildExtension в корнете репозиторияdist/${GhidraVersion}_${date}_BinAbsInspector.zipВы можете запустить Binabsinspector в режиме без головы, режима GUI или с Docker.
$GHIDRA_INSTALL_DIR/support/analyzeHeadless <projectPath> <projectName> -import <file> -postScript BinAbsInspector "@@<scriptParams>"
<projectPath> - путь проекта Ghidra.
<projectName> - Имя проекта Ghidra.
<scriptParams> - аргумент для нашего анализатора предоставляет следующие варианты:
| Параметр | Описание |
|---|---|
[-K <kElement>] | Ограничение размера KSET k |
[-callStringK <callStringMaxLen>] | Вызовать строку максимальную длину k |
[-Z3Timeout <timeout>] | Z3 тайм -аут |
[-timeout <timeout>] | Тайм -аут анализа |
[-entry <address>] | Адрес входа |
[-externalMap <file>] | Конфигурация модели внешней функции |
[-json] | Вывод в формате JSON |
[-disableZ3] | Отключить Z3 |
[-all] | Включить все шашки |
[-debug] | Включить вывод журнала отладки |
[-check "<cweNo1>[;<cweNo2>...]"] | Включить конкретные шашки |
С Ghidra Gui
Window -> Script Manager и найдите BinAbsInspector.javaBinAbsInspector.java , установите параметры в окне конфигурации и нажмите OKС докером
git clone [email protected]:KeenSecurityLab/BinAbsInspector.git
cd BinAbsInspector
docker build . -t bai
docker run -v $( pwd ) :/data/workspace bai " @@<script parameters> " -import < file >Пока что Binabsinspector поддерживает следующие шашки:
Структура этого проекта заключается в следующем, пожалуйста, обратитесь к техническим деталям или статье о китайской версии для получения более подробной информации.
├── main
│ ├── java
│ │ └── com
│ │ └── bai
│ │ ├── checkers checker implementatiom
│ │ ├── env
│ │ │ ├── funcs function modeling
│ │ │ │ ├── externalfuncs external function modeling
│ │ │ │ └── stdfuncs cpp std modeling
│ │ │ └── region memory modeling
│ │ ├── solver analyze core and grpah module
│ │ └── util utilities
│ └── resources
└── test
Вы также можете построить Javadoc с gradle javadoc , документация API будет генерироваться в ./build/docs/javadoc .
Мы используем Ghidra в качестве нашего фонда и часто используем Jimmitable Collections для лучшей производительности.
Здесь мы хотели бы поблагодарить их за большую помощь!