Об этом проекте

unidbg — это проект на Java с открытым исходным кодом, предназначенный для эмуляции нативных библиотек Android (ELF) и бинарных файлов iOS (Mach-O). Он в основном используется для исследований в области безопасности, реверс-инжиниринга и динамического анализа мобильных приложений. Ключевые возможности включают: - **Поддержка архитектур**: эмулирует бинарный код ARM32 и ARM64. - **Несколько бэкендов**: поддерживает Unicorn, dynarmic, гипервизор Apple M1 (для быстрой эмуляции ARM64 на macOS) и Linux KVM на Raspberry Pi. - **Отладка с помощью ИИ (MCP)**: интегрирует Model Context Protocol (MCP), позволяя ИИ-инструментам (например, Cursor) динамически проверять регистры, память, дизассемблированный код, устанавливать точки останова, трассировать инструкции и вызывать нативные функции во время эмуляции. - **Поддержка хуков**: интегрирует инлайн-хуки через Dobby, хуки импорта Android через xHook и хуки iOS через fishhook, substrate и whale. - **Эмуляция JNI**: поддерживает JNI Invocation API, JavaVM и JNIEnv, что позволяет выполнять JNI_OnLoad. - **Обнаружение утечек памяти**: отслеживает выделения гостевой памяти и генерирует отчёты с трассировкой стека ARM гостя и трассировкой стека Java хоста. - **Пул рабочих потоков**: предлагает потокобезопасный пул эмуляторов для снижения накладных расходов на инициализацию ресурсов при параллельной обработке задач. - **Отладка и трассировка**: включает консольный отладчик, GDB-заглушку, трассировку инструкций и трассировку чтения/записи памяти.