Remoticon 2021: URI Shaped Umkehrt das ESP32 WiFi

Sie wissen, wie Sie, wenn Sie an einem Projekt arbeiten, andere Seitenquests auf dem Weg nach links und rechts? Sie können sie kurz und kurzzeitig verwalten, oder Sie können als Projekte selbst in sie tauchen. Nun, URI Shaped ist der Autor von Wokwi, einem Online-Arduino-Simulator, mit dem Sie unseren Code auf emulierter Hardware testen können. (Es ist sehr, sehr cool.) Am Tag zeigte Arduino AVR an, und er setzte sich ein paar großartige Anstrengungen auf Reverse Engineering an, die im KAUFEN, um es erfolgreich zu emulieren. Aber dann zeigt “Arduino” so viel viel mehr als nur AVR in diesen Tagen, also musste URI die STM32-Armchips und sogar den letzten RP2040 angehen.

Arduino läuft auch auf dem ESP32, sodass Uri seinen reverse Engineering-Hut (wörtlich) anzog (buchstäblich) und ging das Ziel in diesem Chip an. Das ESP32 ist jedoch eine Tonne viel komplizierter als alle dieser anderen Mikrocontroller, die nicht nur auf dem etwas Nischen-Xtensa-Chip basiert, sondern auch an Bord-WLAN und der zugehörigen binären Firmware aufweist. Reverse Engineering Das WLAN-WiFi von ESP32 ist die Seitenquest, auf der URI auftritt, absolut zerquetscht und Papiere in diesem Standout-Remoticon 2021 sprechen.

Spähen und stechen.

Das ESP32 behandelt das WIFI als merkwürdige periphere Peripherie, wie Sie wahrscheinlich an Mikrocontrollers verwendet werden. Für GPIO-Pins Beispielsweise zeigt Speicher-Mapping an, dass Sie eine 1 oder 0 in ein bestimmtes Bit von Speicher schreiben können, und es dreht eine externe LED an oder aus. Lesen Sie von diesem Speicherplatz, und Sie können erkennen, ob jemand einen Knopf drückt. Für WLAN ist es im Allgemeinen dasselbe, nur das ist meistens völlig undokumentiert, wo die Speicheradressen sind und was sie für sie sind. URIs Technik verwendet einen Debugger an den JTAG auf der physischen Hardware, einem Ghidra-Plugin, um ihm zu helfen, an den Binärdateien zu arbeiten, und sein eigener ESP32-Simulator, um das alles zu freten.

Zunächst einmal blitzte er eines der grundlegenden ESP-IDF-WiFi “Hello-World” -Programme in seinen Simulator, drehte sich mit der Protokollierung der Anmelden bis Eleven auf, und lief es, bis es abgestürzt ist. Was es schnell getan hat, weil sein Simulator keine der bisher emulierten WiFi-Hardware hatte. Mit GDB, dem Debugger, konnte er herausfinden, welche Funktion insbesondere abgestürzt ist. Dann nahm er diese Funktion auseinander.

Direkt von der Fledermaus, hatte er Glück. Eine Funktion, die hilfsbereit namens Hal_mac_DEINIT () genannt wurde, schien nicht viel zu tun, außer dass bestimmte Werte auf eine feste Speicheradresse schreiben und auf eine bestimmte Antwort warten. Er programmierte dann seinen Simulator, um diese Antwort zu geben, wodurch das Programm zusätzlich stromabwärts ein wenig absturz wurde. Erfolg! Was macht die Speicheradresse in Frage zu? Das Datenblatt sagt “reserviert”, aber es dauerte nicht zu groß, um anzunehmen, dass es ein Wifi-Kontrollregister ist.

Der Rest des Talks hat URI, der dieses wiederholte Ping-Ponging zwischen einem abgestürzten Programm auf seinem Simulator unter Verwendung von Ghidra und GDB beschreibt, um herauszufinden, was der abgestürzte Code tut, und dann, um das gewünschte Verhalten in seinen Simulator zu integrieren, bis dieses Bit von Code funktioniert . Was wirklich erstaunlich ist, ist, dass dies mit einer Simulation des WLANs des ESP32-WLANs arbeitet, das in der Innenseite so gut ist, dass er Python MQTT-Bibliotheken auf dem simulierten Gerät ausführen kann, und es funktioniert genau so, als würde es auf der nativen Hardware ausgeführt werden. Tolle!

Dies ist ein tolles Gespräch, das eine hohe Einführung von Reverse Engineering mit Emulation als entscheidender Werkzeug bereitstellt. Es ist eine großartige Technik, und wir haben an der Lage, über URIs metaphorische Schultern schauen zu können. Hör zu!

Leave a Reply

Your email address will not be published. Required fields are marked *