🔏
AppSec & Pentest
Mobile
Mobile
  • Mobile
  • Pentesting Methodology
  • Programming
    • Аналитика
      • Some Papers
      • Примеры токенов/ключей и тп
      • Twitter ads
      • Branch.IO
      • Adjust
      • Amplitude Analytics
      • Paypal for Business
      • Emarsys
      • MobileAppTracker
      • AppsFlyer
        • About
        • Настройка аккаунта
        • Исследование кода
        • Examples
      • Fabric
      • Mixpanel Analytics
      • Facebook ads
      • Yandex
      • Firebase SDK
        • Intro
        • Примеры
        • Firebase Cloud Messaging
        • Компоненты
          • Firebase
          • FirebaseABTesting
          • FirebaseAnalytics[Interop]
          • FirebaseAppDistribution
          • FirebaseAuth[Interop]
          • FirebaseCore
          • FirebaseCoreDiagnostics[Interop]
          • FirebaseCrashlytics
          • FirebaseDatabase
          • FirebaseDynamicLinks
          • FirebaseFirestore[Swift]
          • FirebaseFunctions
          • FirebaseInAppMessaging
          • FirebaseInstallations
          • FirebaseInstanceID
          • FirebaseMessaging
          • FirebaseRemoteConfig
          • FirebaseStorage[Swift]
          • GoogleDataTransport
          • GoogleDataTransportCCTSupport
          • GoogleUtilities
          • GoogleUtilitiesComponents
      • Crashlytics
      • GTM: Google Tag Manager
      • Google Maps
      • Google Analytics
      • Flurry
      • HockeyApp
    • iOS
      • Материалы
      • iOS: SSL Pinning
      • ЯП
        • Swift
          • VIPER (Architecture)
          • Общее
          • UI
          • Производительность
          • Swift Style Guide
        • Swift Security
          • Примеры уязвимостей
      • Frameworks and Libraries
        • [Pentest] App extensions
          • About
          • Extension types
          • Static Analys
          • Dynamic Analys
        • [Pentest] App Notifications
        • Async
        • СDP
        • Core
        • Cryptography
        • Jailbreak Detection
        • Network
          • AFNetworking
          • Alamofire
          • HTTP Requests
        • Other
        • Push
        • RxSwift
        • Store Data
        • UI
          • SwiftUI
          • WebView in iOS App
          • UI
        • VPN Detection
      • XCode
        • Build Project
        • Build Project via Command Line
        • Install IPA
        • Templates
      • Другие инструменты
        • mint
      • Системы зависимостей пакетов
        • Carthage
        • CocoaPods
      • Troubleshooting
    • Android
      • Архитектура Android приложения
        • Архитектура Kotlin-приложения
        • Разница между Android Library, Android APP и Java Library
        • Basic
          • Activities
          • Broadcast Receivers
          • Content Providers
          • Custom URL Schemes
          • Intents
          • Notifications
          • PendingIntents
          • Permissions
          • Services
          • Android WebView
      • ЯП
        • Java
          • Bundle
        • Kotlin
          • Возвращение объектов в Intent
          • Call Native Functions
      • Frameworks
        • AndroidX
        • LiveData
        • Lifecycle
        • Background Tasks
          • DownloadManager
          • AlarmManager
          • Foreground Services (или просто Services)
          • WorkManager
        • Room
        • Data binding
          • Basic
        • NDK
          • Install and Build
          • OpenSSL
          • libgit2 build
        • Navigation
        • Работа с изображениями
          • Glide
        • Video/Audio
          • Communications
            • Jitsi
        • JS Engines
          • FB: Hermes
          • Duktape
        • DI: Dependency Injection
          • Зачем?
          • koin
          • kodein
          • dagger2
        • Retrofit / OkHTTP
          • Intro
          • Example Usage
            • Parse error body
            • Примеры обработчиков запросов
            • Структура модуля
            • HttpApi
            • ControllerApi
          • SSLPinning
        • Google Play Authorization
      • Automating build (android in docker)
      • Android Studio
        • Build Project
        • Составные части проекта
      • Технологии
        • LeakCanary
        • Mocking
        • Настройка резервного копирования
        • Remote Method Invocation
        • bundletool (aab -> apk)
      • Примеры приложений
        • Kotlin
      • API levels & NDK Version
    • PWA
    • Hybrid App
      • Frameworks
        • Frameworks List
        • Electron
        • React Native
      • Google Web Toolkit
      • Dart/Flutter
      • Kotlin
      • Game Develope
    • Рекомендации
      • Хранение PIN-кода и шифрование информации
      • Разработка приложения для людей с ограниченными возможностями
      • Secure Networking on iOS
    • AirWatch MDM
    • Дистрибьюция
      • AppCenter
      • App Store
      • App Store Connect
      • AppTester
      • Crashlytics
      • Cydia
      • Diawi
      • Google Play
      • Hockey App
      • TestFairy
      • TestFlight
      • Transporter.app
      • Firebase AppDistribution
  • Forensic
    • Bluetooth
    • NFC
    • GSM
    • SIM-cards
    • iOS
      • Инструменты и скрипты
        • Забор скриншотов с телефона
        • otool
        • lipo
        • plist reader
        • backup reader
        • libimobiledevice
        • Cydia Impactor
        • App Signature
      • Архитектура ОС
        • Шифрование приложений
        • Архитектура iOS приложения
        • iBoot
        • Secure Enclave (SEP)
        • Браузеры
      • Файловая система
        • Где что хранится
        • Мониторинг файловой системы
      • Create/Decrypt Backup
      • IPA dump
        • Frida IPA dump
        • iOS 11 и выше
        • Младше iOS 10
      • Jailbreak
      • DFU режим (режим восстановления и обновления)
    • Android
      • Файловая система
        • Android KeyStore
      • Общая информация о системе: Полезные тулзы и команды
      • Проверить подписи apk
      • Создание и восстановление резервной копии
      • Память процессов
      • Root
        • Common
        • A/B-разделы
        • Su
        • TWRP
  • Pentest
    • Уязвимости и Атаки
      • Изи баги
      • Common
      • iOS
      • Android
      • AppLinks
      • Auth
        • Biometrics bypass
        • PIN Bruteforce
        • Типичные ошибки реализации SMS-аутентификации
      • USSD Attack
      • Java Object Deserialization
      • Lack of binary protection (anti-debugging) controls
      • Disabled security features in binary libraries
      • Lack of exploit mitigations (e.g. PIE, ARC, or stack canaries)
      • Path disclosure in the binary
      • Runtime hacking exploits (e.g. exploits that are only possible in a jailbroken environment)
      • Snapshot/pasteboard leakage
      • User data stored unencrypted in the file system and/or external storage
      • Android Task Hijacking
      • WebView
        • Check list
        • Example Web View XSS in iOS app
        • CVE-2020-6506: uXSS in Android WebView
    • Кейсы
      • Общие
        • Firebase
        • Про сниффинг трафика HTTP2/gRPC
        • Dump memory
      • Android
        • Simple Library RCE for Android
        • Закинуть GApps на эмулятор
        • Android Dependency Check
        • Запрет скриншота и детект оверлея
        • Disable/Delete any app w/o root
      • iOS
        • App Transport Security
        • Info.plist
        • Смотреть логи
        • Установка IPA-образа на iOS без XCode, Cydia Impactor
        • Борьба со скриншотами
        • Блюринг изображений в менеджере окон
        • Установка неподписанных IPA
      • Hybrid Apps
        • Flutter SDK: RE/Capture Traffic
    • Bug Bounty
    • Настройка окружения
      • SASTs
      • Frida & Objection
      • Pentest WebView
      • iOS
        • Platform
        • Network
          • Запись траффика iOS
          • iOS SSL Unpinning
      • Android
        • Reverse Engineering
        • Platform
        • Network
          • Запись трафика Android
          • Android: SSL Unpinning
    • Mitigations
    • Books & Papers
    • Companies & People & Blogs
    • Инструменты и скрипты
      • Комбайны
      • Android
        • grep: Извлечение информации из APK
        • Более менее
        • Старая херня
          • Drozer
          • Разное
      • iOS
        • SAST
          • ipanema
          • iblessing
        • meetle
        • Static Analys with Frida
        • iFunBox
        • iOS Binary Analysis
        • needle
        • idb
        • ios emulator
        • passionfruit
        • Grapefruit ("NG passionfruit")
        • XPC Sniffing
        • SAST in MobSF
        • Поиск по файлам
      • hybrid app
        • Cordova
        • Xamarin
        • Electron
      • FBFlipper
      • truegaze
  • Reverse Engineering
    • Android
      • Tools
        • Decompilers
        • TODO: Androguard
        • TODO: AndroPyTool
        • TODO: LIEF-project
        • TODO: MobSF
        • JADX
        • dex2jar
        • Diff APKs, JARs,..
        • APKiD
        • enjarify
        • adb/fastboot
          • Install
          • Usage
          • Troubleshooting
          • На что можем влиять через adb (в поисках сервисов)
        • DexCalibur
      • Объединить несколько JAR
      • Build AOSP in Docker
      • Патчинг
      • Поиск уникальных строк в Smali
      • Защита от frida
    • iOS
      • CVEs
      • Tools
        • iRET
        • xcrun
        • otool: check binary encryption
      • Патчинг
      • Start iOS Debug Server
      • iOS Audio Framework
      • Facebook SDK
      • Swift
      • Attack Secure Boot of SEP
      • iOS Kernel Firmware
    • Tools
      • frida
        • Установка
        • Frida CLI
        • Запуск скриптов
        • Общие команды (JS API)
        • Frida Projects
        • Примеры
          • Материалы
          • Android
          • iOS
          • Unity/Mono
          • Общее
            • Вывод Callstack
            • Перехват инструкции по смещению
            • Перехват функции по имени
            • Перехват функции по смещению (sub_*)
      • objection
      • luject
      • emulators
    • Кейсы
      • Hybrid App
        • Intro
        • Hermes
        • Xamarin
        • React Native
        • Unity
        • Debug Hybrid App
    • Статьи
  • Administration
    • Инструменты
      • Android
        • uiautomatorviewer
        • jobb
        • archquery
        • apkanalyzer
        • avdmanager
        • emulator
        • perfetto
        • monkeyrunner
        • Настройка окружения
        • sdkmanager
Powered by GitBook
On this page

Was this helpful?

  1. Programming
  2. Android
  3. Frameworks
  4. NDK

libgit2 build

Пример сборки библиотеки (libgit2.so) под андроид

Этапы компиляции libgit2.so для Андроид

HOME=/Users/o.petrakov
ANDROID_SDK=$HOME/Library/Android/sdk
ANDROID_NDK=$ANDROID_SDK/ndk-bundle
1. Создание Android Toolchain под конкретную архитектуру и Android API (Пример: arm64/android-api-28)
$ $ANDROID_NDK/build/tools/make-standalone-toolchain.sh --arch=arm64 --install-dir=$HOME/Work/test_bgit/android-ndk-28 --platform=android-28 --force
ANDROID_NDK_HOME=$HOME/Work/test_bgit/android-ndk-28
2. Собираем  ZLib
$ wget https://www.zlib.net/zlib-1.2.11.tar.gz
$ tar -xvf zlib-1.2.11.tar.gz
$ mv zlib-1.2.11.tar zlib && cd zlib
export CC="aarch64-linux-android-gcc"
export CXX="aarch64-linux-android-g++"
export RANLIB="aarch64-linux-android-ranlib"
export LD="aarch64-linux-android-ld"
export AR="aarch64-linux-android-ar"
export ARFLAGS="cr"
export CHOST="aarch64-linux-android"
./configure
make

3. Собираем OpenSSL
$ git clone https://github.com/openssl/openssl.git
./Configure
            --prefix=$HOME/Work/test_bgit/openssl_build
            --openssldir=$HOME/Work/test_bgit/openssl_build/ssl
            --with-zlib-include=
            --with-zlib-lib=

Пример: 
export PATH:"$ANDROID_NDK_HOME/bin:${PATH}"
unset <all var from zlib: CC, CXX, .., CHOST>
./Configure android-arm64 --prefix=$HOME/Work/test_bgit/openssl_build --openssldir=$HOME/Work/test_bgit/openssl_build/ssl --with-zlib-include=/path/to/zlib --with-zlib-lib=/path/to/zlib/libz.so
make

4. Собираем LibGit2
git clone https://github.com/libgit2/libgit2.git
mkdir libgit2_build && cd libgit2_build
Создаем файл для CMake: touch toolchain.cmake
В него пишем:
SET(CMAKE_SYSTEM_NAME Linux)
SET(CMAKE_SYSTEM_VERSION Android)

SET(CMAKE_C_COMPILER    $ENV{ANDROID_NDK_HOME}/bin/aarch64-linux-android-gcc)
SET(CMAKE_CXX_COMPILER $ENV{ANDROID_NDK_HOME}/bin/aarch64-linux-android-g++)
SET(CMAKE_FIND_ROOT_PATH $ENV{ANDROID_NDK_HOME}/sysroot/)

SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

Если не установлен pkg-config -> ставим (установится в  /usr/local/bin): $ brew install pkg-config

Далее конфигурируем с помощью cmake проект:
cmake .. -DCMAKE_TOOLCHAIN_FILE=toolchain.cmake -DPKG_CONFIG_EXECUTABLE=/usr/local/bin/pkg-config -DUSE_HTTPS=OpenSSL -DOPENSSL_ROOT_DIR=/Users/o.petrakov/Work/test_bgit/openssl -DOPENSSL_LIBRARIES=/Users/o.petrakov/Work/test_bgit/openssl -DOPENSSL_INCLUDE_DIR=/Users/o.petrakov/Work/test_bgit/openssl/include -DOPENSSL_CRYPTO_LIBRARY=/Users/o.petrakov/Work/test_bgit/openssl/libcrypto.so -DOPENSSL_SSL_LIBRARY=/Users/o.petrakov/Work/test_bgit/openssl/libssl.so
Где:
.. - путь до сорцов (куда забирали с гита исходники)
CMAKE_TOOLCHAIN_FILE - путь до файла для cmake (см выше, что туда писать)
PKG_CONFIG_EXECUTABLE - путь до pkg-config - бинарь для поиска зависимостей в системе
USE_HTTPS=OpenSSL - что использовать для шифрования трафика
OPENSSL_ROOT_DIR - путь до каталога с собранным OpenSSL
OPENSSL_LIBRARIES - путь до каталога, где лежат libcrypto.so, libssl.so
OPENSSL_INCLUDE_DIR - путь до каталога с header-файлами собранного OpenSSL
OPENSSL_CRYPTO_LIBRARY - полный путь до libcrypto.so
OPENSSL_SSL_LIBRARY - полный путь до libssl.so

Собираем: $ make
Теперь в папке build лежит libgit2.so для нашего android приложения

5. Бинарь гита для Android:
ставим Termux, устанавливаем git
вытаскиваем бинарь из /data/data/com.termux/files/usr/bin/git -> <container>/files/usr/libexec/git-core/git - это наш бинарь
переносим библиотеки из <container>/files/usr/lib: libpcre2-*.so и libiconv.so -> /system/lib64/ (предварительно потребуется перевести фс в режим записи: mount -o rw,remount /system)
PreviousOpenSSLNextNavigation

Last updated 5 years ago

Was this helpful?