Vivisecting PowerPC
Demonstrates binary analysis and reverse engineering techniques targeting PowerPC firmware commonly found in industrial gear.
Summary
In this ICS Village session, ac0rn and atlas 0f d00m demonstrate how to reverse engineer and disassemble PowerPC firmware using Vivisect, an open-source Python-based binary analysis and emulation framework originally developed by Invisigoth. The speakers explain that while x86 and ARM receive extensive tooling support, PowerPC architectures—widely deployed across industrial control systems, automotive engine control units (ECUs), aerospace systems, and NXP/Freescale platforms—often present distinct challenges for security analysts [05:35]. They highlight Vivisect's interactive IPython workflow, which enables rapid programmatic inspection, workspace modification, and custom disassembly extension [10:53].
The presentation explores the core mechanics of PowerPC instruction set architecture (ISA) decoding, including register conventions and control flow mechanisms [16:12]. The speakers detail the role of critical registers such as r1 for the stack pointer, r2 and r13 for Small Data Area (SDA) pointers, and r12 for indirect function calls [42:00]. They illustrate how firmware binaries handle function prologues, stack frame allocation, and return address management via link register manipulation (`mtlr` and `mflr`). Special focus is given to resolving indirect branches and switch jump tables, utilizing Vivisect's virtual address sets (VA sets) to map dynamic call targets and virtual method tables [47:08].
Through an interactive live demonstration, the authors walk through the manual identification and decoding of PowerPC instructions from raw firmware dumps and Volvo/automotive VBF containers [36:27]. They show how to spot reset vector entry points, identify code boundaries versus data sections, and build custom parsers to resolve ambiguous opcodes [52:30]. The session concludes with practical tips on navigating obscure embedded architectures and expanding automated analysis workflows within Vivisect.
(AI summary — Gemini Flash)
Related talks
Main Stage·43 min
Yaniv Balmas · Lior Oppenheim
Yaniv Balmas and Lior Oppenheim demonstrate reverse engineering KVM switch firmware, subverting the 8051 microcontroller to install an undetectable, persistent hardware keylogger.
Main Stage·18 min
Moritz Abrell
Hardware and software reverse engineering of an industrial VPN gateway revealing critical flaws in its remote maintenance pipeline.
Car Hacking Village·26 min
collin · oblivion
Reverse engineers a commercial odometer rollback tool, extracting locked STM32 firmware and showing how CAN messages are intercepted and rewritten.


