A production-ready web service for dumping and decompiling Unity IL2CPP binaries online. Extract assemblies, process metadata, and get readable code without installing desktop tools.
By @springmusk026 • Telegram Channel
The web interface allows users to upload Unity IL2CPP files and monitor processing in real-time.
Upload your Unity IL2CPP files through the web interface and receive processed results within minutes. The service handles everything automatically.
- Binary files:
.so,.dll,.dylib(Unity IL2CPP shared libraries) - Metadata files:
.dat,global-metadata.dat(Unity metadata containers)
All processing occurs in real-time with live progress updates and secure file handling.
- Extract binary files from Unity IL2CPP assemblies
- Process and extract metadata from Unity containers
- Convert assemblies to readable .NET formats
- Real-time progress tracking with live updates
- Comprehensive file validation before processing
- Support for chunked uploads up to 500MB
- Resumable uploads that survive network interruptions
- Individual progress tracking for each file chunk
- Memory-optimized processing for large files
- Pre-validation to minimize bandwidth usage
- Cloudflare Turnstile bot protection
- Strict file type verification and validation
- Configurable rate limiting for fair resource usage
- CORS protection for cross-origin requests
- Modern security headers and HTTPS enforcement
- RESTful API with comprehensive endpoints
- Server-sent events for real-time progress updates
- Docker containerization for easy deployment
- Structured logging with Winston
- Intelligent caching to avoid redundant processing
- Node.js: Version 16.0.0 or higher
- Il2CppDumper: .NET Core binary (automatically included in Docker)
- Docker: Optional, but recommended for deployment
The easiest way to get started is with Docker, which includes all dependencies.
# Clone the repository
git clone https://github.com/springmusk026/Il2CppDumperWeb.git
cd il2cpp-dumper-server
# Start with Docker Compose
docker-compose up -d
# Access the service at http://localhost:5555For development or custom deployments, install dependencies locally.
# Clone and install
git clone https://github.com/springmusk026/Il2CppDumperWeb.git
cd il2cpp-dumper-server
npm install
# Configure environment
cp .env.example .env
# Edit .env with your settings
# Start the development server
npm run devConfigure the service using environment variables in a .env file:
# Server Configuration
PORT=5555
NODE_ENV=production
# Security Settings
SECRET_KEY=your_turnstile_secret_key
SITE_KEY=your_turnstile_site_key
CORS_ORIGIN=https://yourdomain.com
# Il2CppDumper Path
IL2CPP_DUMPER_PATH=/path/to/Il2CppDumper.dll
# File Upload Limits
MAX_FILE_SIZE=104857600 # 100MB in bytes
ALLOWED_EXTENSIONS=.so,.dll,.dylib,.dat
# Rate Limiting
RATE_LIMIT_WINDOW=15 # Minutes
RATE_LIMIT_MAX_REQUESTS=100
# Processing Limits
MAX_CONCURRENT_JOBS=3
JOB_TIMEOUT=600000 # 10 minutes in ms
CACHE_CLEANUP_INTERVAL=86400000 # 24 hours in msPOST /api/dump
Content-Type: multipart/form-data
Form Data:
- soFile: IL2CPP binary file (.so, .dll, .dylib)
- metaFile: Unity metadata file (.dat)
- cf-turnstile-response: Turnstile verification tokenGET /api/jobs/:jobId # Get job status and details
GET /api/jobs # List jobs with pagination
DELETE /api/jobs/:jobId # Cancel queued job
GET /api/jobs/:jobId/progress # Server-sent events for progressGET /api/health # Service health check
GET /api/cache/stats # Cache performance statistics
DELETE /api/cache # Clear all cached results
DELETE /api/cache/:hash # Remove specific cache entryPOST /api/upload/chunk # Upload file chunk
GET /api/upload/chunk # Check chunk existence
GET /api/upload/status # Get upload progressAll API responses follow a consistent structure:
{
"success": true,
"data": {
"jobId": "uuid-v4",
"status": "processing|completed|failed",
"progress": 45,
"message": "Processing files...",
"downloadUrl": "/api/download/uuid-v4.zip",
"files": {
"soFile": "libil2cpp.so",
"metaFile": "global-metadata.dat"
}
}
}// Submit files for processing
const formData = new FormData();
formData.append('soFile', document.getElementById('soFile').files[0]);
formData.append('metaFile', document.getElementById('metaFile').files[0]);
const response = await fetch('/api/dump', {
method: 'POST',
body: formData
});
const result = await response.json();
if (result.success) {
console.log('Job created:', result.data.jobId);
// Connect to progress stream
const eventSource = new EventSource(`/api/jobs/${result.data.jobId}/progress`);
eventSource.onmessage = (event) => {
const progress = JSON.parse(event.data);
console.log(`Progress: ${progress.progress}% - ${progress.message}`);
};
}# Submit processing job
curl -X POST http://localhost:5555/api/dump
-F "[email protected]"
-F "[email protected]"
# Check job status
curl http://localhost:5555/api/jobs/your-job-id
# Get system health
curl http://localhost:5555/api/healthFor hosting this application in production, we recommend ZapVPS - a reliable VPS provider with excellent performance and support.
Special Offer: Use promo code SPRINGMUSK for 50% off your first purchase!
ZapVPS provides:
- 10Gbps network connectivity
- AMD EPYC processors
- 99.9% uptime guarantee
- 24/7 technical support
- Easy scaling options
For production deployment, use the provided Docker Compose configuration:
version: '3.8'
services:
il2cpp-dumper:
build:
context: .
dockerfile: Dockerfile
ports:
- "5555:5555"
environment:
- NODE_ENV=production
- PORT=5555
- MAX_FILE_SIZE=104857600
volumes:
- ./uploads:/app/uploads:rw
- ./logs:/app/logs:rw
- ./.env:/app/.env:ro
restart: unless-stopped
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost:5555/api/health"]
interval: 30s
timeout: 10s
retries: 3Set these environment variables for production:
# Required for production
NODE_ENV=production
PORT=5555
SECRET_KEY=your_cloudflare_turnstile_secret
SITE_KEY=your_cloudflare_turnstile_site_key
# File and processing limits
MAX_FILE_SIZE=104857600 # 100MB
MAX_CONCURRENT_JOBS=5 # Adjust based on server capacity
JOB_TIMEOUT=900000 # 15 minutes
# Security
CORS_ORIGIN=https://yourdomain.com
ENABLE_HASH_CHECK=true # Enable caching- Dynamic sitemap generation at
/sitemap.xml - Comprehensive robots.txt configuration
- Open Graph and Twitter Card meta tags
- Structured data markup for rich snippets
- Mobile-responsive design with modern CSS
- Optimized meta descriptions for Unity/IL2CPP keywords
- Social media sharing integration
- Progressive Web App capabilities
- Fast loading with optimized assets
il2cpp-dumper-server/
├── config/ # Environment and application configuration
├── controllers/ # Express route handlers and business logic
├── middleware/ # Custom Express middleware (auth, upload, etc.)
├── routes/ # API and web route definitions
├── services/ # Core services (JobManager, SSE, etc.)
├── utils/ # Utility functions and helpers
├── views/ # EJS templates for web interface
├── public/ # Static assets (CSS, JS, images)
├── uploads/ # Temporary file storage
└── logs/ # Application logging output
npm run dev # Start development server with hot reload
npm start # Start production server
npm run lint # Run ESLint code quality checks
npm run lint:fix # Auto-fix linting issues
npm test # Execute test suite
npm run docker:build # Build Docker image
npm run docker:up # Start with Docker Compose
npm run clean # Clean uploads, logs, and cacheWe welcome contributions! Please follow these steps:
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes with tests
- Ensure all tests pass (
npm test) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow ESLint configuration
- Add tests for new features
- Update documentation as needed
- Use conventional commit messages
This project is licensed under the MIT License - see the LICENSE file for details.
- Il2CppDumper: Original reverse engineering tool by Perfare - the foundation of this project
This project builds upon these excellent open source libraries:
- Express.js: Fast, unopinionated web framework for Node.js
- Winston: Versatile logging library
- Multer: Middleware for handling multipart/form-data
- Helmet: Security middleware for Express.js
- Archiver: Streaming interface for archive generation
- Axios: Promise-based HTTP client
- UUID: RFC4122 UUID generation
- EJS: Embedded JavaScript templating
- Express Rate Limit: Rate limiting middleware
- CORS: Cross-Origin Resource Sharing middleware
- Compression: Response compression middleware
- Busboy: Streaming parser for HTML form data
- Dotenv: Environment variable loading
- ESLint: Pluggable linting utility for JavaScript
- Jest: Delightful JavaScript testing framework
- Nodemon: Utility that monitors for changes and restarts server
- Supertest: HTTP endpoint testing library
- Unity Community: For their contributions to reverse engineering and game development
- Open Source Contributors: For their valuable input and improvements
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Documentation: Wiki
Built for the Unity development and reverse engineering community.
