# Decompiled Reference Files This directory contains **reference files** decompiled from Real Racing 3 APK using JADX. These files are included for: - 📚 **Educational purposes** - Understanding how the game communicates with servers - 🔍 **Reference documentation** - See how custom server support is implemented - 🛠️ **Modification guidance** - Know exactly what files to modify ## ⚠️ Important Legal Notice These files are **decompiled from the original Real Racing 3 APK** and are: - © Electronic Arts Inc. - All rights reserved - Included for **educational and preservation purposes only** - **NOT** to be used for commercial purposes - **NOT** to be redistributed outside this private repository ## 📁 Directory Structure ``` decompiled-reference/ ├── com/ │ ├── ea/ │ │ └── nimble/ │ │ ├── SynergyEnvironmentImpl.java - Custom server configuration │ │ └── SynergyRequest.java - HTTP request handling │ └── firemonkeys/ │ └── cloudcellapi/ │ └── HttpRequest.java - Low-level HTTP implementation └── resources/ └── AndroidManifest.xml - App manifest (original) ``` ## 🔑 Key Files Explained ### SynergyEnvironmentImpl.java **Location**: Lines 166-183 contain the custom server implementation This file contains the `NimbleConfiguration` enum and shows how RR3 reads the custom server URL: ```java public String getSynergyDirectorServerUrl() { switch (this.m_configuration) { case CUSTOMIZED: // 🎯 This is what we're using! return ComponentManager.getComponent(ApplicationEnvironment.class) .getApplicationInfo() .metaData .getString("NimbleCustomizedSynergyServerEndpointUrl"); case LIVE: return "https://api.firemonkeys.ea.com/"; // ... other cases } } ``` ### HttpRequest.java Shows how the game makes HTTP requests, including: - JNI callbacks for response streaming - Custom SSL certificate validation - Header management (EAM-SESSION, EAM-USER-ID, etc.) ### AndroidManifest.xml Original manifest showing: - Current configuration: `com.ea.nimble.configuration = "live"` - Package name: `com.ea.game.realracing3_row` - Permissions and activities - **This is the file we modify** to point to community servers ## 🎓 How to Use These Files ### For Understanding Read these files to understand: 1. How RR3 determines which server to connect to 2. What headers are required for API calls 3. How authentication and sessions work 4. SSL/certificate validation implementation ### For Modification Reference When modifying APKs: 1. Check `SynergyEnvironmentImpl.java` to see expected metadata keys 2. Review `AndroidManifest.xml` to see original configuration 3. Reference `HttpRequest.java` to understand HTTP implementation ### For Server Development Use these files to: - Understand expected API behavior - See what headers the client sends - Know how SSL is validated - Implement compatible server responses ## 🔍 Decompilation Details **Tool Used**: JADX (Java Decompiler) - Version: JADX 1.4.7+ - Command: `jadx realracing3.apk -d decompiled/` - Source: Real Racing 3 v14.0.1 **Quality**: These files are decompiled from Dalvik bytecode: - ✅ Structure is accurate - ✅ Logic flow is correct - ⚠️ Variable names may be obfuscated - ⚠️ Some comments are from decompiler ## 📖 Related Documentation For complete analysis of the protocol, see: - [NETWORK_COMMUNICATION_ANALYSIS.md](../NETWORK_COMMUNICATION_ANALYSIS.md) For modification instructions, see: - [APK_MODIFICATION_GUIDE.md](../APK_MODIFICATION_GUIDE.md) ## 🚫 What's NOT Included We do **NOT** include: - ❌ Full game source code (too large, unnecessary) - ❌ Game assets (textures, models, sounds) - ❌ Native libraries (.so files) - ❌ Compiled APK files - ❌ Obfuscated/minified classes Only the **essential files** needed to understand custom server support are included. ## 📝 Attribution **Original Software**: Real Racing 3 **Developer**: Firemonkeys Studios / Electronic Arts **Decompilation**: For educational research and game preservation --- *These files are provided for educational purposes under fair use for interoperability and preservation research.*