{"id":26909716,"url":"https://github.com/theqmaks/sosaver-frida","last_synced_at":"2026-04-29T18:31:56.329Z","repository":{"id":285556030,"uuid":"958537508","full_name":"TheQmaks/soSaver-frida","owner":"TheQmaks","description":"TypeScript Frida agent for extracting shared libraries (.so) from Android apps. Features memory scanning, hooking dlopen, and modular architecture. Part of the soSaver project.","archived":false,"fork":false,"pushed_at":"2025-04-01T11:48:51.000Z","size":15,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-01T12:28:28.663Z","etag":null,"topics":["android","android-security","application-analysis","binary-analysis","frida","frida-agent","memory-analysis","mobile-security","reverse-engineering","security-tools","so-dumper","typescript"],"latest_commit_sha":null,"homepage":"https://www.linkedin.com/in/ant01","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/TheQmaks.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-04-01T11:07:09.000Z","updated_at":"2025-04-01T11:48:13.000Z","dependencies_parsed_at":"2025-04-01T12:40:03.121Z","dependency_job_id":null,"html_url":"https://github.com/TheQmaks/soSaver-frida","commit_stats":null,"previous_names":["theqmaks/sosaver-frida"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheQmaks%2FsoSaver-frida","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheQmaks%2FsoSaver-frida/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheQmaks%2FsoSaver-frida/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/TheQmaks%2FsoSaver-frida/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/TheQmaks","download_url":"https://codeload.github.com/TheQmaks/soSaver-frida/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246644096,"owners_count":20810687,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["android","android-security","application-analysis","binary-analysis","frida","frida-agent","memory-analysis","mobile-security","reverse-engineering","security-tools","so-dumper","typescript"],"created_at":"2025-04-01T13:19:53.463Z","updated_at":"2026-04-29T18:31:56.286Z","avatar_url":"https://github.com/TheQmaks.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# soSaver-frida\n\nTypeScript Frida script component for the [soSaver](https://github.com/TheQmaks/sosaver) project - a tool for dumping shared libraries (.so files) from Android applications.\n\n## Overview\n\nThis repository contains the Frida agent script portion of the soSaver tool, rewritten from JavaScript to TypeScript using a modular, object-oriented approach. The script is responsible for extracting loaded shared libraries from Android applications.\n\n## Features\n\n- **Memory Scanning**: Scans process memory for ELF headers to detect loaded libraries\n- **Dynamic Library Hooking**: Intercepts library loading functions (`dlopen`, `android_dlopen_ext`)\n- **Modular Architecture**: Clean, object-oriented design with separation of concerns\n- **Robust Error Handling**: Comprehensive error handling and fallback mechanisms\n- **Periodic Scanning**: Automatically detects newly loaded libraries\n- **Multiple Extraction Methods**: Extracts libraries from memory or filesystem when available\n\n## Project Structure\n\n```\nsrc/\n├── config/\n│   └── constants.ts      # Configuration constants\n├── core/\n│   ├── memoryScanner.ts  # Memory scanning logic for ELF headers\n│   └── moduleDumper.ts   # Module extraction and data transmission\n├── hooks/\n│   └── libraryLoaderHook.ts # Dynamic library loader interception\n├── utils/\n│   ├── logger.ts         # Logging utilities\n│   ├── memoryUtils.ts    # Memory reading helpers\n│   └── messageSender.ts  # Communication with host\n└── main.ts               # Main application entry point\n```\n\n## Integration with soSaver\n\nThis TypeScript Frida script is designed to be used as part of the [soSaver](https://github.com/TheQmaks/soSaver) project. It is injected into target Android processes by the Python component of soSaver, which handles:\n\n- Device connection management\n- Script injection\n- Processing data received from this script\n- Saving extracted libraries to disk\n- Command line interface\n\n**You should not use this script directly** - instead, use the soSaver Python tool which will deploy and manage this agent.\n\n## For Developers\n\n### Requirements\n\n- Node.js 14+\n- TypeScript 5.0+\n- Yarn package manager\n\n### Development Setup\n\n1. Clone the repository:\n   ```\n   git clone https://github.com/TheQmaks/sosaver-frida.git\n   cd sosaver-frida\n   ```\n\n2. Install dependencies:\n   ```\n   yarn install\n   ```\n\n3. Build the project:\n   ```\n   yarn build\n   ```\n\n### Development Commands\n\n- **Build**: `yarn build` - Compile TypeScript to JavaScript\n- **Watch Mode**: `yarn watch` - Automatically rebuild on code changes\n- **Linting**: `yarn lint` - Run ESLint checks\n- **Formatting**: `yarn format` - Format code with Prettier\n\n### Configuration\n\nYou can modify constants in `src/config/constants.ts` to adjust behavior:\n\n- `CHUNK_SIZE`: Size of memory chunks for reading/sending (default: 64KB)\n- `SCAN_INTERVAL_MS`: Interval for periodic scanning (default: 10 seconds)\n- `LOADER_HOOK_DELAY_MS`: Delay after dlopen returns (default: 250ms)\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheqmaks%2Fsosaver-frida","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftheqmaks%2Fsosaver-frida","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftheqmaks%2Fsosaver-frida/lists"}