Reversing Native Libraries

Support HackTricks

Для отримання додаткової інформації перегляньте: 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.

  • Надані вправи для практики завантаження бібліотек, зв'язування методів та ідентифікації нативних функцій.

Ресурси:

Support HackTricks

Last updated