Reversing Native Libraries
Для отримання додаткової інформації перегляньте: https://maddiestone.github.io/AndroidAppRE/reversing_native_libs.html
Android додатки можуть використовувати нативні бібліотеки, зазвичай написані на C або C++, для завдань, критичних до продуктивності. Творці шкідливого ПЗ також використовують ці бібліотеки, оскільки їх важче реверсувати, ніж DEX байт-код. Розділ підкреслює навички реверс-інжинірингу, адаптовані до Android, а не навчання мовам асемблера. Для сумісності надаються версії бібліотек для ARM та x86.
Ключові Пункти:
Нативні Бібліотеки в Android Додатках:
Використовуються для завдань, що вимагають високої продуктивності.
Написані на C або C++, що ускладнює реверс-інжиніринг.
Знаходяться у форматі
.so
(спільний об'єкт), подібно до бінарних файлів Linux.Творці шкідливого ПЗ віддають перевагу нативному коду, щоб ускладнити аналіз.
Java Native Interface (JNI) & Android NDK:
JNI дозволяє реалізувати методи Java в нативному коді.
NDK - це набір інструментів, специфічних для Android, для написання нативного коду.
JNI та NDK з'єднують код Java (або Kotlin) з нативними бібліотеками.
Завантаження та Виконання Бібліотек:
Бібліотеки завантажуються в пам'ять за допомогою
System.loadLibrary
абоSystem.load
.JNI_OnLoad виконується під час завантаження бібліотеки.
Нативні методи, оголошені в Java, пов'язуються з нативними функціями, що дозволяє виконання.
Зв'язування Методів Java з Нативними Функціями:
Динамічне Зв'язування: Імена функцій у нативних бібліотеках відповідають певному шаблону, що дозволяє автоматичне зв'язування.
Статичне Зв'язування: Використовує
RegisterNatives
для зв'язування, забезпечуючи гнучкість у найменуванні функцій та структурі.Інструменти та Техніки Реверс-Інжинірингу:
Інструменти, такі як Ghidra та IDA Pro, допомагають аналізувати нативні бібліотеки.
JNIEnv
є важливим для розуміння функцій та взаємодій JNI.Надані вправи для практики завантаження бібліотек, зв'язування методів та ідентифікації нативних функцій.
Ресурси:
Вивчення Асемблера ARM:
Рекомендується для глибшого розуміння основної архітектури.
Основи Асемблера ARM від Azeria Labs рекомендовані.
Документація JNI та NDK:
Налагодження Нативних Бібліотек:
Last updated