All notable changes to this project will be documented in this file.
- JSON_Web_Token regex pattern compilation error that caused repeated warnings during scans
- Updated pattern to use standard JWT format detection:
eyJ[A-Za-z0-9_-]*\.[A-Za-z0-9_-]*\.[A-Za-z0-9_-]*
-
Enhanced Error Handling System
- Structured error types:
ApkError,JadxError,ConfigurationError,ScanError,PatternError - Detailed error context with actionable messages
- Comprehensive error scenarios documentation (ERROR_SCENARIOS.md)
- Structured error types:
-
Performance Optimizations
- Configurable concurrency control via
scanConcurrencyparameter (default: 16) Semaphoreclass for bounded concurrent operations- Progress reporting with
ScanProgressclass - Efficient memory management for large APKs
- Streaming file reading for large files
- Configurable concurrency control via
-
Modern Dart Features
- Enhanced enums:
ScanStatus,OutputFormat - Type-safe data models:
ScanResult,ScanStatistics - Records and pattern matching for cleaner code
- Improved type system throughout
- Enhanced enums:
-
Code Organization
JadxLogHandlerclass for log managementConfigLoaderutility for configuration file resolutionFileUtilsutility for file type detection and handling- Modular architecture with clear separation of concerns
-
Refactored Core Engine
- Extracted large functions into smaller, focused methods
- Improved pattern matching logic organization
- Better separation of concerns in scanning workflow
- Cleaner decompile method with extracted log handling
-
Configuration Loading
- Centralized configuration file resolution
- Consistent error messages across all config operations
- Better handling of optional configuration files
-
File Scanning
- Modular file enumeration with BFS approach
- Extracted file type checking into utilities
- Improved artifact detection logic
- Removed duplicate configuration loading code
- Eliminated redundant file extension checking
- Improved error message consistency
- Fixed unused imports
- Enhanced dartdoc comments for all public APIs
- Added comprehensive usage examples
- Created error scenarios guide
- Updated README with new features
- Generated API documentation with zero warnings
- Detect Mapbox public/secret tokens and Supabase publishable/secret keys via bundled patterns (config/regexes.json, lib/config/regexes.json)
- Stamp generated reports with generator metadata and upstream repository links (OhMyG0sh.generateReport)
- Stream JAXB suppression improvements to hide noisy
ERROR - finished with errorslines while preserving progress output (OhMyG0sh.decompile)
- Resolve bundled configs via package: URIs for pub global installs (OhMyG0sh._loadPatterns(), OhMyG0sh._loadNotKeyHacks())
- Ship default patterns/filters with the package for global CLI (lib/config/regexes.json, lib/config/notkeyhacks.json)
- README notes for output file naming and config resolution (README.md)
- Bump version to 1.69.777+69 (pubspec.yaml)
- Add .pubignore and ensure CHANGELOG.md is included (.pubignore)
- Ignore RELEASE_STEP.md in VCS (.gitignore)
- Standardize doc comments across library, CLI, core engine, scanner, example, and tests
- Initial release of ohmyg0sh APK security scanner
- APK decompilation using jadx 1.5.3
- Regex-based detection for 50+ API key and secret patterns
- Configurable detection rules via
config/regexes.json - False-positive filtering via
config/notkeyhacks.json - JSON and text output formats
- Docker image for easy deployment
- Continue-on-error mode for jadx failures
- Comprehensive pattern library including:
- AWS, Google Cloud, Azure credentials
- Social media API keys (Facebook, Twitter, Slack)
- Payment services (Stripe, PayPal, Square)
- Database connection strings
- Private keys and certificates
- Automatic cleanup of temporary files
- Detailed logging for troubleshooting
- Scans Java, Kotlin, Smali, XML, JavaScript, and text files
- Package name extraction from AndroidManifest.xml
- Pattern matching with context-aware filtering
- Complete README with installation and usage examples
- Docker Hub deployment guide
- Troubleshooting section
- Contributing guidelines