A comprehensive multi-architecture firmware emulator and analysis toolkit for set-top boxes, embedded systems, and reverse engineering.
Features real ARM/MIPS/x86 instruction execution, in house hypervisor, complete AT&T U-verse/Mediaroom boot sequences, and advanced filesystem analysis.
- Custom ARM Hypervisor: VMware/VirtualBox-style virtualization with real ARM Cortex-A15 instruction execution
- ARM Instruction Emulation: Authentic ARM opcode processing (MOV, ADD, BRANCH, LDR/STR, SWI)
- Multi-Architecture Support: ARM, MIPS, x86, PowerPC, SPARC with both custom and QEMU backends
- Hardware Simulation: Broadcom BCM7445/7449 SoC emulation with memory-mapped I/O
- AT&T U-verse: Complete MIPS/WinCE emulation with Microsoft Mediaroom boot manager
- RDK-V/RDK-B: Cable industry reference platform emulation for research
- DirecTV: MIPS-based satellite receiver analysis and SWM LNB simulation WIP
- Generic STB: Universal firmware analysis for unknown set-top box platforms
- Filesystem Probing: Automatic detection and analysis of ext2/3/4, JFFS2, UBIFS, YAFFS, SquashFS
- Firmware Unpacking: ARRIS PACK1 containers, U-Boot images, WinCE nk.bin kernels
- Security Analysis: DOCSIS BPI+ V2 framework, CableLabs signature bypass research
- Cross-Architecture: RetDec integration for binary translation and reverse engineering
This tool uses the RetDec decompiler CLI to perform static cross-architecture translation of raw binaries.
Prerequisites:
- Install RetDec on your system and ensure
retdec-decompileris in your PATH.- Windows: Download the latest RetDec Windows release and add its
binfolder to your PATH. - Linux/macOS: Follow RetDec build instructions or use package manager if available.
- Windows: Download the latest RetDec Windows release and add its
- Supported source/target architectures: x86 (32-bit), x64 (64-bit), ARM, ARM64, MIPS.
Usage:
- In the app UI, select Cross-Compile Binary.
- Choose an input file (
.bin,.exe, etc.). - Pick the target architecture from the dropdown.
- The tool will invoke:
retdec-decompiler --mode raw -e <source> -t <target> -o <output> <input> - The resulting file will be saved and opened in a result window.
Note: Raw mode preserves only code sections. PE/ELF headers are not rebuilt. For full executable formats, integrate a header-rebuilder or patcher on the output.
This project can extract YAFFS filesystem images using the external unyaffs tool. To enable YAFFS extraction:
- Clone or download the
unyaffsrepository:git clone https://github.com/jbruchon/unyaffs.git cd unyaffs # Build with MinGW or on Linux make
- Copy the resulting
unyaffs(orunyaffs.exeon Windows) binary into your PATH or into the same folder as the emulator executable. - When running in extract mode, YAFFS images will be passed to
unyaffsfor real file extraction. If the tool is not found, the fallback stub will run.
- Windows: .NET 6 or later
- Visual Studio: 2022 or VS Code with C# extension
- Optional: UnicornEngine for enhanced ARM emulation
- Optional: RetDec decompiler for cross-architecture binary analysis
-
Clone the repository:
git clone https://github.com/julerobb1/Processor-Emulator.git cd Processor-Emulator -
Build the project:
dotnet build ProcessorEmulator.csproj --configuration Release
-
Run the emulator:
dotnet run --project ProcessorEmulator.csproj
- Launch the application
- Select "Custom Hypervisor" from the main menu
- Choose your ARM firmware file (.bin, .img, .elf)
- Watch real ARM instruction execution in the VMware-style hypervisor window
- Select "Uverse Box Emulator"
- Load a U-verse firmware image
- Experience complete WinCE + Microsoft Mediaroom boot sequence
- Analyze IPTV platform components and services
- Choose "RDK-V Emulator"
- Load RDK-V firmware for Broadcom BCM7445/7449
- Monitor ARM Cortex-A15 instruction execution
- Analyze cable industry reference software stack
We welcome contributions to enhance the Processor-Emulator project!
- Target
devbranch for all pull requests - Follow IChipsetEmulator pattern for new platform emulators
- Implement real execution - avoid synthetic/fake boot sequences
- Test thoroughly - verify firmware loading and execution on Windows/.NET 6
- Document changes - update README and include screenshots for UI changes
- Real Firmware Focus: Implement authentic instruction execution, not simulation
- Error Handling: Use
ErrorManagerwith appropriate error codes and humor - UI Threading: Use
Application.Current.Dispatcher.Invoke()for background-to-UI updates - Chunked Loading: Handle large firmware files with streaming to avoid memory limits
- Create emulator class implementing
IChipsetEmulator - Add platform detection logic in
MainWindow.xaml.cs - Implement authentic boot sequence with visual display
- Test with real firmware images from the target platform
This project is designed for research and educational purposes only:
- Reverse Engineering Education: Learn ARM/MIPS instruction sets and embedded systems
- Security Research: Study cable/satellite industry firmware protection mechanisms
- Platform Analysis: Understand set-top box architectures and IPTV systems
- Academic Use: Support computer science and cybersecurity curriculum
Use responsibly and ethically in compliance with applicable laws and regulations.
MIT License - see LICENSE file for details.
- Issues: Report bugs and feature requests via GitHub Issues
- Discussions: Technical questions and research collaboration
- Documentation: See
.github/copilot-instructions.mdfor AI development guidelines
"The lesson is, never try." - Homer Simpson
Educational/archival firmware emulation for the next generation of security researchers.
MainWindow.xaml.cs: Main UI with 25+ emulation options and platform selectionVirtualMachineHypervisor.cs: VMware-style ARM hypervisor with real instruction executionMediaroomBootManager.cs: Complete Microsoft Mediaroom/WinCE boot sequence implementation/Emulation/HomebrewEmulator.cs: Advanced ARM emulator with BCM7449 SoC simulationErrorManager.cs: Centralized error handling with educational pop culture references
All emulators implement the IChipsetEmulator interface:
public interface IChipsetEmulator
{
string ChipsetName { get; }
bool Initialize(string configPath);
byte[] ReadRegister(uint address);
void WriteRegister(uint address, byte[] data);
}This project emphasizes authentic firmware execution over simulation:
- Real ARM instruction decoding and processing - PARTIALLY WORKS
- Actual memory-mapped I/O simulation - PARTIALLY WORKS
- Hardware-accurate boot sequences
- Chunked firmware loading for large images (>100MB) - WIP
- DOCSIS 4.0: BPI+ V2 security framework for cable modem research
- Firmware Unpacking: ARRIS PACK1 container extraction and analysis
- Signature Bypass: CableLabs PKCS#7 certificate research techniques
- Memory Protection: ARM security state and privilege level emulation
- Real-time Logging: Live ARM instruction traces with register states - WIP
- Filesystem Mounting: Direct access to embedded Linux filesystems from Windows - NON WSL
- Cross-compilation: RetDec integration for architecture translation
- Debug Interface: Memory dumps, register inspection, execution control - WIP
- This project emphasizes real firmware execution over QEMU dependency
- ARM instruction emulation is PARTIALLY WORKING with custom hypervisor
- Memory-mapped I/O simulation is PARTIALLY WORKING
- Large firmware file handling (>100MB) uses chunked streaming to avoid .NET limits
- Some advanced features are WORK IN PROGRESS - see status indicators above
- Windows/.NET 6 focused - Linux support not currently implemented
MIT License (see LICENSE file for details).
The Processor Emulator has demonstrated the ability to analyze .avr files and extract their contents. This behavior was discovered while analyzing firmware files from Denon AVR devices.
- Navigate to the
Analysistab in the Processor Emulator. - Feed a
.avrfile into theanalyze FWfunctionality. - Observe the extracted files in the output directory.
The extracted files include:
- Configuration settings
- Product IDs
- MCU details
- Other related data
This feature provides insights into the structure and configuration of .avr files, enabling reverse engineering and deeper analysis of firmware.
- Enhance robustness to handle edge cases.
- Implement additional features to parse and interpret extracted files.
- Provide user feedback during the extraction process.