A mobile reverse engineering toolkit inspired by IDA Pro, built with Jetpack Compose and C++ for binary analysis on Android devices.
- Binary File Support: Load and analyze various binary formats (ELF, PE, Mach-O)
- Disassembly Viewer: Interactive disassembly with syntax highlighting for x86, x86-64, and ARM architectures
- Hexadecimal Viewer: Raw binary data inspection with search capabilities
- Function Detection: Automatic detection and listing of functions in binary files
- Annotation System: Add comments and notes to assembly instructions
- Material Design 3: Modern, professional UI following Material Design principles
- Cross-Platform: Native C++ backend with Kotlin frontend for optimal performance
- UI: Modern Material Design 3 interface
- Navigation: Tab-based navigation between different analysis views
- State Management: ViewModel pattern with StateFlow for reactive UI updates
- Database: Room database for local data persistence
- Binary Analysis: Native C++ engine for binary parsing and analysis
- Disassembly: Custom disassembly engine supporting multiple architectures
- Function Detection: Pattern-based and symbol table-based function detection
- JNI Bridge: Seamless integration between Kotlin and C++ components
- Android Studio Arctic Fox or later
- Android NDK 25.1.8937393
- JDK 17
- Minimum Android API level 24 (Android 7.0)
-
Clone the repository
git clone https://github.com/your-username/ida-pro-mobile.git cd ida-pro-mobile -
Install NDK
# Through Android Studio SDK Manager or command line sdkmanager "ndk;25.1.8937393"
-
Build the project
./gradlew assembleDebug
-
Run tests
./gradlew test ./gradlew connectedAndroidTest
- Open the app and navigate to the "Files" tab
- Tap "Choose File" to select a binary file from your device
- The app will analyze the file and extract basic information
- Select the file from the list to begin analysis
- Switch to the "Disassembly" tab with a file selected
- View assembly instructions with syntax highlighting
- Tap on instructions to add comments and annotations
- Navigate through the code using the address view
- Use the "Hex View" tab to inspect raw binary data
- Search for hex patterns or ASCII strings
- View both hex and ASCII representations side by side
- The "Functions" tab shows all detected functions
- Filter functions by name, address, or type
- View function statistics and signatures
- Tap functions to navigate to their location in disassembly
- ELF: Linux/Unix executables and shared libraries
- PE: Windows executables (.exe, .dll)
- Mach-O: macOS executables and dylibs
- Raw Binary: Generic binary files
- x86: 32-bit Intel architecture
- x86-64: 64-bit Intel architecture
- ARM: 32-bit ARM architecture
- ARM64: 64-bit ARM architecture (basic support)
ida-pro-mobile/
βββ app/
β βββ src/
β β βββ main/
β β β βββ java/com/idapro/mobile/
β β β β βββ MainActivity.kt # Main activity with Compose setup
β β β β βββ IdaProMobileApplication.kt # Application class with dependency injection
β β β β βββ ui/
β β β β β βββ screens/ # Main UI screens
β β β β β β βββ MainScreen.kt # Tab navigation and main layout
β β β β β β βββ FileUploadScreen.kt # Binary file upload interface
β β β β β β βββ DisassemblyScreen.kt # Disassembly viewer with syntax highlighting
β β β β β β βββ HexViewerScreen.kt # Hex viewer with search capabilities
β β β β β β βββ FunctionListScreen.kt # Function detection and listing
β β β β β βββ components/ # Reusable UI components
β β β β β β βββ BinaryFileCard.kt # File display card
β β β β β β βββ DisassemblyView.kt # Assembly instruction rendering
β β β β β β βββ HexGrid.kt # Hex data grid component
β β β β β β βββ FunctionItem.kt # Function list item
β β β β β β βββ AnnotationDialog.kt # Comment annotation dialog
β β β β β βββ theme/ # Material Design 3 theming
β β β β β βββ Color.kt # Color palette
β β β β β βββ Theme.kt # Theme configuration
β β β β β βββ Type.kt # Typography system
β β β β βββ data/
β β β β β βββ database/ # Room database layer
β β β β β β βββ AppDatabase.kt # Database configuration
β β β β β β βββ entities/ # Database entities
β β β β β β β βββ BinaryFileEntity.kt # Binary file metadata
β β β β β β β βββ AnnotationEntity.kt # User annotations
β β β β β β βββ dao/ # Data access objects
β β β β β β βββ BinaryFileDao.kt # File operations
β β β β β β βββ AnnotationDao.kt # Annotation operations
β β β β β βββ model/ # Data models
β β β β β β βββ BinaryFile.kt # Binary file representation
β β β β β β βββ DisassemblyInstruction.kt # Assembly instruction model
β β β β β β βββ Function.kt # Function metadata
β β β β β β βββ Annotation.kt # User annotation model
β β β β β βββ repository/ # Repository pattern implementation
β β β β β βββ BinaryAnalysisRepository.kt # Data management layer
β β β β βββ viewmodel/ # ViewModel layer
β β β β β βββ MainViewModel.kt # Main screen state management
β β β β β βββ FileUploadViewModel.kt # File upload logic
β β β β β βββ DisassemblyViewModel.kt # Disassembly state management
β β β β β βββ HexViewerViewModel.kt # Hex viewer state
β β β β β βββ FunctionListViewModel.kt # Function list state
β β β β βββ native/ # JNI bridge layer
β β β β β βββ NativeBinaryAnalyzer.kt # JNI interface
β β β β β βββ DisassemblyData.kt # Data transfer objects
β β β β β βββ FunctionData.kt # Function data DTOs
β β β β βββ utils/ # Utility classes
β β β β βββ BinaryUtils.kt # Binary analysis utilities
β β β β βββ FileUtils.kt # File handling utilities
β β β β βββ Constants.kt # App constants
β β β βββ cpp/ # Native C++ backend
β β β β βββ binary_analyzer.cpp # Main binary analysis engine
β β β β βββ disassembler.cpp # Disassembly engine
β β β β βββ function_detector.cpp # Function detection algorithms
β β β β βββ jni_bridge.cpp # JNI integration layer
β β β β βββ CMakeLists.txt # C++ build configuration
β β β βββ res/ # Android resources
β β β βββ values/ # Resource values
β β β β βββ colors.xml # Color definitions
β β β β βββ strings.xml # String resources
β β β β βββ themes.xml # XML theme definitions
β β β βββ xml/
β β β βββ file_paths.xml # File provider configuration
β β βββ test/ # Unit tests
β β β βββ java/com/idapro/mobile/
β β β βββ BinaryAnalysisTest.kt # Binary analysis unit tests
β β β βββ viewmodel/ # ViewModel tests
β β β βββ utils/ # Utility function tests
β β βββ androidTest/ # Instrumented tests
β β βββ java/com/idapro/mobile/
β β βββ DatabaseTest.kt # Room database tests
β β βββ ui/ # UI integration tests
β β βββ native/ # Native code tests
β βββ build.gradle.kts # App module build configuration
β βββ proguard-rules.pro # ProGuard obfuscation rules
βββ .github/
β βββ workflows/
β βββ android.yml # GitHub Actions CI/CD pipeline
βββ gradle/
β βββ wrapper/ # Gradle wrapper files
βββ build.gradle.kts # Root project build configuration
βββ settings.gradle.kts # Gradle settings
βββ gradle.properties # Gradle properties and optimizations
βββ README.md # Project documentation
- High-Performance Analysis: Custom C++ engine for binary parsing and disassembly
- Multi-Architecture Support: x86, x86-64, ARM, and ARM64 instruction sets
- Memory Efficient: Optimized algorithms for mobile devices with limited resources
- JNI Integration: Seamless bridge between Java/Kotlin and native code
- Jetpack Compose: Fully declarative UI with Material Design 3
- MVVM Pattern: Clean separation of concerns with ViewModels and StateFlow
- Room Database: Type-safe local storage with automatic schema management
- Repository Pattern: Abstraction layer for data access and caching
- Binary Format Support: ELF, PE, Mach-O, and raw binary files
- Intelligent Disassembly: Context-aware instruction decoding with syntax highlighting
- Function Detection: Pattern-based and symbol table-based function identification
- Interactive Annotations: User-generated comments and notes system
- ProGuard Optimization: Code obfuscation and size reduction for release builds
- NDK Integration: Native development kit for optimal performance
- Memory Management: Efficient handling of large binary files
- Secure Storage: Encrypted local database for sensitive analysis data
- BinaryAnalysisTest.kt: Tests for binary file analysis utilities including architecture detection, file type identification, hash calculation, and string extraction
- ViewModel Tests: Comprehensive testing of all ViewModels with mock repositories
- Utility Tests: Testing of binary utilities, file handling, and helper functions
- DatabaseTest.kt: Room database integration tests including CRUD operations, foreign key constraints, and cascade deletions
- UI Tests: Jetpack Compose UI component testing with user interaction simulation
- Native Integration Tests: JNI bridge testing for C++ backend integration
The GitHub Actions workflow includes:
- Automated Testing: Unit tests, instrumented tests, and lint checks
- Code Quality: ktlint formatting and detekt static analysis
- Security Scanning: Trivy vulnerability scanner integration
- APK Building: Debug and release APK generation with signing
- Multi-stage Pipeline: Test β Build β Security Scan β Quality Check
- Parallel Execution: Independent jobs for faster feedback
- Artifact Storage: APK files and test reports automatically uploaded
- Environment Setup: Automatic NDK installation and caching
- Kotlin Code Style: Automated ktlint formatting verification
- Static Analysis: detekt rules for code quality and best practices
- Vulnerability Scanning: Trivy security scanner for dependency vulnerabilities
- Test Coverage: Unit and integration test execution with reporting
- Install Android Studio Arctic Fox or later
- Install Android NDK 25.1.8937393 through SDK Manager
- Clone repository and open in Android Studio
- Sync project to download dependencies
- Follow Kotlin coding conventions
- Use ktlint for automatic formatting
- Maintain comprehensive test coverage
- Document public APIs with KDoc
- Follow Material Design 3 principles for UI
- Create feature branch from
develop - Implement changes with tests
- Run local tests:
./gradlew test lint - Submit PR targeting
developbranch - Ensure CI pipeline passes
- Request code review from maintainers
- Tag Creation: Create version tag (e.g.,
v1.0.0) - Automated Build: GitHub Actions builds and signs release APK
- Release Notes: Generate changelog from commit history
- Asset Upload: Signed APK attached to GitHub release
# Generate signing key
keytool -genkey -v -keystore release-key.keystore -alias ida-pro-mobile \
-keyalg RSA -keysize 2048 -validity 10000
# Configure GitHub Secrets
SIGNING_KEY # Base64 encoded keystore file
ALIAS # Keystore alias name
KEY_STORE_PASSWORD # Keystore password
KEY_PASSWORD # Key password- GitHub Releases: Direct APK download from releases page
- F-Droid: Open source app store distribution
- Internal Testing: TestFlight-style internal distribution
- Play Store: Google Play Store publication (with developer account)
βββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββ
β UI Layer β β Domain Layer β β Data Layer β
β (Compose) βββββΊβ (ViewModels) βββββΊβ (Repository) β
β β β β β β
β β’ Screens β β β’ State Mgmt β β β’ Room DB β
β β’ Components β β β’ Business Logic β β β’ Native JNI β
β β’ Navigation β β β’ Data Transform β β β’ File System β
βββββββββββββββββββ ββββββββββββββββββββ βββββββββββββββββββ
ββββββββββββββββ βββββββββββββββ ββββββββββββββββββββ
β Kotlin β β JNI β β C++ β
β Frontend βββββΊβ Bridge βββββΊβ Backend β
β β β β β β
β β’ File Load β β β’ Data β β β’ Binary Parser β
β β’ UI Updates β β Transfer β β β’ Disassembler β
β β’ User Input β β β’ Error β β β’ Function β
β β β Handling β β Detection β
ββββββββββββββββ βββββββββββββββ ββββββββββββββββββββ
- Local Storage Encryption: SQLCipher integration for database encryption
- Secure File Handling: Temporary file cleanup and secure deletion
- Memory Protection: Sensitive data clearing after analysis
- Permission Model: Minimal required permissions for file access
- Sandbox Execution: Isolated analysis environment
- Resource Limits: Memory and CPU usage constraints
- Input Validation: Comprehensive file format validation
- Error Handling: Graceful handling of malformed binaries
- Lazy Loading: On-demand binary parsing and disassembly
- Memory Management: Efficient handling of large files with pagination
- Background Processing: Coroutines for non-blocking analysis
- Caching Strategy: Intelligent caching of analysis results
- SIMD Instructions: Vectorized operations for pattern matching
- Multi-threading: Parallel analysis for multi-core devices
- Memory Mapping: Efficient large file handling
- Algorithmic Optimization: Custom algorithms optimized for mobile CPUs
MIT License - See LICENSE file for details.
- Inspired by IDA Pro's powerful reverse engineering capabilities
- Built with modern Android development best practices
- Leverages the power of Jetpack Compose and Material Design 3
- C++ backend designed for mobile performance constraints