Skip to content

Reverse Engineering MicroPython Frozen Modules

Wesley McGrew

Techniques and tools for extracting, decompiling, and reversing bytecode from frozen MicroPython modules in embedded devices and badges.

Summary

MicroPython in Embedded Systems

MicroPython is a firmware environment for quickly developing and deploying software onto microcontroller systems. It is used in a variety of industrial and scientific applications, as well as (most importantly) in some DEF CON #badgelife projects. It's easy to learn and use for rapid prototyping.

Structure of Frozen Modules

For hackers interested in reverse engineering compiled or obfuscated MicroPython code, there are some obstacles. MicroPython is an implementation of CPython, not a port, so it has its own compiled bytecode language that existing reverse engineering tools aren't designed to parse. Also, modules can be "frozen", compiled directly into the microcontroller firmware, and may be difficult to locate and parse when microcontroller firmware is extracted and analyzed.

Decompilation and Reverse Engineering Workflow

In this talk, Wesley will walk the audience through the process of identifying "frozen"/compiled modules in a firmware image without debug symbols using the Ghidra disassembler. The relevant module, string, object, and raw code data structures will be detailed, so that everything required to rebuild a non-frozen module can recovered. Once a compiled module is reconstructed, Wesley will present a detailed example of reading and understanding MicroPython compiled bytecode, for the purpose of reverse engineering the purpose and implementation of the module.

Related talks

Main Stage·41 min

  • DEF CON
  • Hardware
  • Date: Aug 2025
  • Location: Las Vegas

Jeroen 'Jeroen' Domburg

Demonstrates hardware hacking and reverse engineering to run custom Linux kernels and open software on inexpensive USB webcams.

embeddedlinuxhardware+2