
Плагин IDA Python для быстрого поиска и сопоставления символов из открытых библиотек в бинарных файлах на основе их местоположения, что обеспечивает эффективный обратный инжиниринг и анализ уязвимостей в больших прошивках и вредоносных программах.
/$$ /$$ /$$
| $$ /$$/ | $$
| $$ /$$/ /$$$$$$ /$$$$$$ /$$$$$$ /$$$$$$
| $$$$$/ |____ $$ /$$__ $$|_ $$_/ |____ $$
| $$ $$ /$$$$$$$| $$ \__/ | $$ /$$$$$$$
| $$\ $$ /$$__ $$| $$ | $$ /$$ /$$__ $$
| $$ \ $$| $$$$$$$| $$ | $$$$/| $$$$$$$
|__/ \__/ \_______/|__/ \___/ \_______/
«Karta» (с русского «Карта») — это плагин для IDA на Python, который идентифицирует и сопоставляет библиотеки с открытым исходным кодом в заданном двоичном файле. Плагин использует уникальную технику, позволяющую работать с огромными бинарными файлами (>200 000 функций) практически без ущерба для общей производительности.
Алгоритм сопоставления основан на местоположении. Это означает, что его основное внимание направлено на определение местоположения различных скомпилированных файлов и сопоставление функций каждого файла на основе их исходного порядка внутри файла. Таким образом, сопоставление зависит от K (количество функций в проекте с открытым исходным кодом) вместо N (размер бинарного файла), что даёт значительный прирост производительности, так как обычно N >> K.
Мы считаем, что у этого плагина для IDA есть 3 основных варианта использования:
Для последних версий с использованием Python 3 просто клонируйте репозиторий с помощью git clone и запустите скрипт setup.py install.
Python 3 поддерживается начиная с версии v2.0.0 и выше.
Начиная с выхода IDA 7.4, Karta активно разрабатывается только для IDA 7.4 и новее, а также для Python 3. Python 2 и старые версии IDA по-прежнему поддерживаются в версии v1.2.0, которая, скорее всего, станет последней поддерживаемой версией из-за окончания срока поддержки Python 2.X.
Идентификатор Karta — это более простой плагин, который определяет наличие и версию существующих (поддерживаемых) библиотек с открытым исходным кодом в бинарном файле. Больше не нужно заниматься реверс-инжинирингом одной и той же библиотеки с открытым исходным кодом снова и снова: просто запустите плагин-идентификатор и получите подробный список используемых открытых источников. В настоящее время Karta поддерживает более 10 библиотек с открытым исходным кодом, включая:
После идентификации используемых открытых источников можно скомпилировать конфигурационный файл .JSON для конкретной библиотеки (например, libpng версии 1.2.29). После компиляции Karta автоматически попытается сопоставить функции (символы) открытого исходного кода в загруженном бинарном файле. Кроме того, если ваш открытый исходный код использует внешние функции (memcpy, fread или zlib_inflate), Karta также попытается сопоставить и эти внешние функции.
Этот проект был разработан мной (см. контактные данные ниже) при поддержке моей исследовательской группы в Check Point (Check Point Research).
Этот репозиторий был разработан и поддерживался мной, Эялем Иткиным, в течение моих лет работы в Check Point Research. К сожалению, с моим уходом из исследовательской группы я больше не смогу поддерживать этот репозиторий. Это связано в первую очередь с длинным списком требований для запуска всех регрессионных тестов и версий IDA Pro, задействованных в этом процессе.
Пожалуйста, примите мои искренние извинения.