SlideShare a Scribd company logo
Яev3rse eng1neering
Daniel Stenberg, May 21st
2014
Agenda
A saga about a bunch of people
who grew bored with a factory
installed firmware in consumer
electronics and wrote their own
implementation
Daniel Stenberg
Email: daniel@haxx.se
Twitter: @bagder
Web: daniel.haxx.se
Blog: daniel.haxx.se/blog
hacker at
Please ask!
Feel free to interrupt and ask at any time!
Let me tell you a story...
•this story begins in the early 2001
•3 men in their best years
•embedded systems hackers
•the dawn of the mp3 player revolution
Archos mp3 players
•December 2000
•First mp3 player with a HDD
•Probably the crappiest firmware
in the world
•Surely we could do better? How
hard can it be?
What's inside?
•Read the onboard circuits and search or ask
•Used to be a good away
•… barely gives away anything nowadays
•Can it be hacked?
•Almost universally: yes
Firmware upgrade option!
•Look you can upgrade firmware...
•What's the architecture again?
•Collect several firmware files
•Analyze differences
•Throw everything and everyone at it
•This can take a lot of time
Intermission: legality
•Were we allowed to do this?
•The world is full of jurisdictions
•We are Swedish, what does EU laws say?
•The 1991 EU Computer Programs Directive, article 6:
•The 2009 EU Computer Program Directive:
The authorization of the rightholder shall not be required
where reproduction of the code and translation of its form ...
are indispensable to obtain the information necessary to
achieve the interoperability of an independently created
computer program with other programs
performance of the acts of reproduction and translation by or
on behalf of a person having a right to use a copy of the
program is legitimate and compatible with fair practice and
must therefore be deemed not to require the authorisation of
the rightholder. An objective of this exception is to make it
possible to connect all components of a computer system,
including those of different manufacturers, so that they can
work together
XORing a fixed string
•By guessing parts of the decrypted file some “encryption”
is easier than others
•Early devices just scrambled firmwares like this
How do things work in there?
•Figure out how your architecture works
•Master things like the CPU instruction set and how a
stack works
•These days things are “always” ARM
•The CPU core is not the problem, the peripherals, busses
and associated HW are the challenges
Disassembly
•Objdump is an excellent tool
•Is not as hard as you might think
•Look for register addresses / memory layout patterns
•Error messages/strings/bitmaps or pointers to them
Disassembly even easier
•IDApro is an advanced tool to automate the task even
more
• Detects lots of C/C++ magic by itself
• Stack frames
• Bitmaps
• Structs
• Strings
• Memory layout
Scan the bare PCB and beep them
BGA
removed!
Surprisingly many
clues printed on the
PCB
Hiding what's inside
•Rub off all markings
•Use chips without public documentation
•Use chips unsupported by gcc
Hardware debuggers
•Many devices leave debug points for BDM / JTAG or
debug uarts
•Like this:
Attaching stuff on their HW
•Hm, what do we have here...
oh so useful
Stripped and attached
Anti-bricking measures
•Have multiple devices
•Primary boot-loader feature: run the original
•If possible, load and run from RAM only until tested
Software decoding targets
•Our first targets had mp3 decoding hardware
•New architectures entered
•More XOR and checksums
•Detect code patterns and search online for data sheets.
•Partial matches may give “similar chips” that have
documentation
Early ipods
•Used hidden hard-drive partitions
•Used completely (publicly) undocumented chips
•Took a long time to master
Later target examples
•Boot-loader that loads and decrypts firmware
•Magic constants in the boot-loader code revealed
algorithm.
•Boot-loader also upgradable (plain) gave away crypto
keys
•Known flags in digital signature algorithm (DSA) offered
shortcut in code signing
So what about true cryptography?
Loading encrypted payloads
•Target loads only encrypted files
•User finds flaw in one firmware version that crashes the
device
•A buffer overflow in the HTML reader
•Look, if we add crafted data in that HTML file we can
execute code
•When we used a loop to write in memory we managed to
toggle the backlight
A backlight reading device
From backlight to restored key
• dump memory using a videocamera and toggle backlight
• 32MB contents took many hours
• analyze what's in memory
• code, data, clues
• see, there's a pattern of USB registers
• rewrite the memory dump program to send contents over USB, insert
the whole thing into a HTML file, load it on target device
• there seems to be code referencing an SRAM
• dump SRAM too
• Look, there's something that looks like a crypto key!
It takes time and people
•Many volunteers
•Skilled volunteers
•Devoted volunteers
•Lots of time
•> 1 year from buffer overflow to running code
Getting it done faster?
•What if there was (lots of) money to gain?
•More clever people spending more of their time
•More computers cracking crypto
•More hardware analyzers
•If you can upgrade the device, reverse engineering it will
be possible
From tiny to Android
2001
2MB RAM
6GB HDD
12 MHz CPU
2010
64MB RAM
120GB HDD
500 MHz CPU
Today: the dedicated mp3 player market is dead or dying
and everyone is going Android
Reverse engineering is still done mostly the same
Linux-based reverse engineering
•More devices use full-fledged Linux
•More flaws, more drivers, less ways to have “unique”
solutions hard to figure out
•Manufacturers stick to undocumented hardware
•… and booting encrypted blobs
•Once “hacked”, putting your own SW can be much easier:
• familiar APIs (libc, u-boot, standard libs)
• familar drivers (even if binary blobs will be there)
• gcc!
Rockbox
A complete and very portable open source mp3 player
firmware replacement, including multi-tasking operating
system and application suite...
Started by me and my two friends Linus and Björn.
Runs on almost 100 different mp3 players from brands such
as Toshiba, Tatung, Sony, SanDisk, Samsung, Philips, Pandora,
Onda, Olympus, MPIO, Creative, Apple, Archos, Cowon,
HifiMan, Meizu, iRiver, Packard Bell, iAudio and more...
Tower of Rockbox
Thank you!
Learn more!
•Rockbox http://www.rockbox.org/
•“Reverse Engineering for Beginners”
http://yurichev.com/writings/RE_for_beginners-en.pdf
Doing good is part of our code

More Related Content

PDF
Bootkits: Past, Present & Future - Virus Bulletin
PDF
Unpack your troubles*: .NET packer tricks and countermeasures
PDF
Bare Metal from a Hardware Perspective: Embedded Frameworks & Build Systems
PPTX
Introduction to XMOS Software Defined Silicon Technology
PPTX
A Quick Introduction to Programmable Logic
PDF
Is Linux/Moose endangered or extinct?
PPTX
PDF
高い並列性能と耐障害性を持つElixirとNervesでIoTの新しいカタチを切り拓く
Bootkits: Past, Present & Future - Virus Bulletin
Unpack your troubles*: .NET packer tricks and countermeasures
Bare Metal from a Hardware Perspective: Embedded Frameworks & Build Systems
Introduction to XMOS Software Defined Silicon Technology
A Quick Introduction to Programmable Logic
Is Linux/Moose endangered or extinct?
高い並列性能と耐障害性を持つElixirとNervesでIoTの新しいカタチを切り拓く

What's hot (20)

PPTX
Nerves Project Intro to ErlangDC
PDF
Is Rust Programming ready for embedded development?
PDF
LMG Lightning Talks - SFO17-205
PPTX
Asus Tinker Board
PDF
Arm device tree and linux device drivers
PDF
From Silicon to Software - IIT Madras
PDF
Fuzzing underestimated method of finding hidden bugs
PPTX
Alessandro Abbruzzetti - Kernal64
PDF
Kernel Recipes 2017 - What's inside the input stack? - Benjamain Tissoires
PDF
Kernel Recipes 2017 - The Serial Device Bus - Johan Hovold
PDF
[Wroclaw #4] Fuzzing - underestimated method of finding hidden bugs
PDF
DEF CON 27 - DIMITRY SNEZHKOV - zombie ant farm practical tips
PPTX
Patching Windows Executables with the Backdoor Factory | DerbyCon 2013
PDF
Bz backtrack.usage
PDF
Jollen's Presentation: Introducing Android low-level
PPTX
Intel Edison: Beyond the Breadboard
PDF
Fuzzing malware for fun & profit. Applying Coverage-Guided Fuzzing to Find Bu...
PPTX
Code Injection in Windows
PDF
Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4)
PDF
Cloud, Distributed, Embedded: Erlang in the Heterogeneous Computing World
Nerves Project Intro to ErlangDC
Is Rust Programming ready for embedded development?
LMG Lightning Talks - SFO17-205
Asus Tinker Board
Arm device tree and linux device drivers
From Silicon to Software - IIT Madras
Fuzzing underestimated method of finding hidden bugs
Alessandro Abbruzzetti - Kernal64
Kernel Recipes 2017 - What's inside the input stack? - Benjamain Tissoires
Kernel Recipes 2017 - The Serial Device Bus - Johan Hovold
[Wroclaw #4] Fuzzing - underestimated method of finding hidden bugs
DEF CON 27 - DIMITRY SNEZHKOV - zombie ant farm practical tips
Patching Windows Executables with the Backdoor Factory | DerbyCon 2013
Bz backtrack.usage
Jollen's Presentation: Introducing Android low-level
Intel Edison: Beyond the Breadboard
Fuzzing malware for fun & profit. Applying Coverage-Guided Fuzzing to Find Bu...
Code Injection in Windows
Debian Linux on Zynq (Xilinx ARM-SoC FPGA) Setup Flow (Vivado 2015.4)
Cloud, Distributed, Embedded: Erlang in the Heterogeneous Computing World
Ad

Viewers also liked (20)

PPT
reverse engineering
PPTX
intra and inter personal relations
PPT
Line balancing
PPTX
Measurement System Analysis
PPT
Reverse engineering
PDF
Reverse Engineering of Software Architecture
PPTX
Tools for capacity planning, measurement of capacity, capacity planning process
PPTX
Software reverse engineering
PPTX
Maintenance, Re-engineering &Reverse Engineering in Software Engineering
PPTX
Service Operation - Manajemen Layanan Teknologi Informasi
PPTX
Measuring capacity lesson3
PPT
Unit 1 Service Operations Management
PPT
Legacy Software Maintenance And Management
PDF
Reverse Engineering
PPT
Capacity 1
PPTX
Reverse engineering
PPTX
Capacity Planning with Free Tools
PPT
Capacity Management
PPT
Facility layout
PDF
Service Operation Processes
reverse engineering
intra and inter personal relations
Line balancing
Measurement System Analysis
Reverse engineering
Reverse Engineering of Software Architecture
Tools for capacity planning, measurement of capacity, capacity planning process
Software reverse engineering
Maintenance, Re-engineering &Reverse Engineering in Software Engineering
Service Operation - Manajemen Layanan Teknologi Informasi
Measuring capacity lesson3
Unit 1 Service Operations Management
Legacy Software Maintenance And Management
Reverse Engineering
Capacity 1
Reverse engineering
Capacity Planning with Free Tools
Capacity Management
Facility layout
Service Operation Processes
Ad

Similar to Reverse engineering (20)

PDF
DEF CON 27 - PHILIPPE LAULHERET - introduction to hardware hacking extended v...
PDF
Hardware Reverse Engineering: From Boot to Root
PPTX
Making and breaking security in embedded devices
PDF
Eloi Sanfélix y Javier Moreno - Hardware hacking on your couch [RootedCON 2012]
PDF
44CON 2014 - I gave a talk about robots and hardware!, Josh Thomas
PDF
It's Assembler, Jim, but not as we know it: (ab)using binaries from embedded ...
PDF
Tower defense for hackers: Layered (in-)security for microcontrollers
PPTX
Armadillos - or how to bypass code readout protection on microcontrollers
PDF
A BEGINNER’S JOURNEY INTO THE WORLD OF HARDWARE HACKING
PDF
Reverse Engineering the TomTom Runner pt. 2
PDF
Hardware hacking
PPT
PPTX
BlueHat v17 || Extracting Secrets from Silicon – A New Generation of Bug Hunt...
PDF
Programming the Real World: Javascript for Makers
PPT
Embabded system security for feuture .ppt
PPTX
Pentesting embedded
PDF
BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)
PDF
Finding the needle in the hardware haystack - HRES (1)
PDF
Demystifying Binary Reverse Engineering - Pixels Camp
DEF CON 27 - PHILIPPE LAULHERET - introduction to hardware hacking extended v...
Hardware Reverse Engineering: From Boot to Root
Making and breaking security in embedded devices
Eloi Sanfélix y Javier Moreno - Hardware hacking on your couch [RootedCON 2012]
44CON 2014 - I gave a talk about robots and hardware!, Josh Thomas
It's Assembler, Jim, but not as we know it: (ab)using binaries from embedded ...
Tower defense for hackers: Layered (in-)security for microcontrollers
Armadillos - or how to bypass code readout protection on microcontrollers
A BEGINNER’S JOURNEY INTO THE WORLD OF HARDWARE HACKING
Reverse Engineering the TomTom Runner pt. 2
Hardware hacking
BlueHat v17 || Extracting Secrets from Silicon – A New Generation of Bug Hunt...
Programming the Real World: Javascript for Makers
Embabded system security for feuture .ppt
Pentesting embedded
BYOD Revisited: Build Your Own Device (Embedded Linux Conference 2014)
Finding the needle in the hardware haystack - HRES (1)
Demystifying Binary Reverse Engineering - Pixels Camp

More from Daniel Stenberg (20)

PDF
What comes after world domination with Daniel Stenberg, April 2025
PDF
digital infrastruktur är open source-1.pdf
PDF
Tightening every bolt at FOSDEM 2025 by Daniel Stenberg
PDF
curl security by Daniel Stenberg from curl up 2024
PDF
rust in curl by Daniel Stenberg from- curl up 2024
PDF
trurl 2024 by Daniel Stenberg from curl up 2024
PDF
curl future 2024 by Daniel Stenberg from curl up 2024
PDF
The state of curl 2024 by Daniel Stenberg from curl up 2024
PDF
mastering libcurl part 2
PDF
mastering libcurl part 1
PDF
curl - openfourm europe.pdf
PDF
curl experiments - curl up 2022
PDF
curl security - curl up 2022
PDF
HTTP/3 in curl - curl up 2022
PDF
The state of curl 2022
PDF
Let me tell you about curl
PDF
Curl with rust
PDF
Getting started with libcurl
PDF
HTTP/3 is next generation HTTP
PDF
Landing code in curl
What comes after world domination with Daniel Stenberg, April 2025
digital infrastruktur är open source-1.pdf
Tightening every bolt at FOSDEM 2025 by Daniel Stenberg
curl security by Daniel Stenberg from curl up 2024
rust in curl by Daniel Stenberg from- curl up 2024
trurl 2024 by Daniel Stenberg from curl up 2024
curl future 2024 by Daniel Stenberg from curl up 2024
The state of curl 2024 by Daniel Stenberg from curl up 2024
mastering libcurl part 2
mastering libcurl part 1
curl - openfourm europe.pdf
curl experiments - curl up 2022
curl security - curl up 2022
HTTP/3 in curl - curl up 2022
The state of curl 2022
Let me tell you about curl
Curl with rust
Getting started with libcurl
HTTP/3 is next generation HTTP
Landing code in curl

Recently uploaded (20)

PDF
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
DOCX
The AUB Centre for AI in Media Proposal.docx
PPTX
Big Data Technologies - Introduction.pptx
PDF
cuic standard and advanced reporting.pdf
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Encapsulation_ Review paper, used for researhc scholars
PDF
Diabetes mellitus diagnosis method based random forest with bat algorithm
PDF
Chapter 3 Spatial Domain Image Processing.pdf
PPTX
Programs and apps: productivity, graphics, security and other tools
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PPTX
sap open course for s4hana steps from ECC to s4
PPTX
MYSQL Presentation for SQL database connectivity
PDF
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PPTX
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
PPTX
Cloud computing and distributed systems.
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Peak of Data & AI Encore- AI for Metadata and Smarter Workflows
The AUB Centre for AI in Media Proposal.docx
Big Data Technologies - Introduction.pptx
cuic standard and advanced reporting.pdf
Reach Out and Touch Someone: Haptics and Empathic Computing
20250228 LYD VKU AI Blended-Learning.pptx
Encapsulation_ Review paper, used for researhc scholars
Diabetes mellitus diagnosis method based random forest with bat algorithm
Chapter 3 Spatial Domain Image Processing.pdf
Programs and apps: productivity, graphics, security and other tools
Per capita expenditure prediction using model stacking based on satellite ima...
sap open course for s4hana steps from ECC to s4
MYSQL Presentation for SQL database connectivity
Optimiser vos workloads AI/ML sur Amazon EC2 et AWS Graviton
Advanced methodologies resolving dimensionality complications for autism neur...
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
VMware vSphere Foundation How to Sell Presentation-Ver1.4-2-14-2024.pptx
Cloud computing and distributed systems.
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...

Reverse engineering

  • 2. Agenda A saga about a bunch of people who grew bored with a factory installed firmware in consumer electronics and wrote their own implementation
  • 3. Daniel Stenberg Email: daniel@haxx.se Twitter: @bagder Web: daniel.haxx.se Blog: daniel.haxx.se/blog hacker at
  • 4. Please ask! Feel free to interrupt and ask at any time!
  • 5. Let me tell you a story... •this story begins in the early 2001 •3 men in their best years •embedded systems hackers •the dawn of the mp3 player revolution
  • 6. Archos mp3 players •December 2000 •First mp3 player with a HDD •Probably the crappiest firmware in the world •Surely we could do better? How hard can it be?
  • 7. What's inside? •Read the onboard circuits and search or ask •Used to be a good away •… barely gives away anything nowadays •Can it be hacked? •Almost universally: yes
  • 8. Firmware upgrade option! •Look you can upgrade firmware... •What's the architecture again? •Collect several firmware files •Analyze differences •Throw everything and everyone at it •This can take a lot of time
  • 9. Intermission: legality •Were we allowed to do this? •The world is full of jurisdictions •We are Swedish, what does EU laws say? •The 1991 EU Computer Programs Directive, article 6: •The 2009 EU Computer Program Directive: The authorization of the rightholder shall not be required where reproduction of the code and translation of its form ... are indispensable to obtain the information necessary to achieve the interoperability of an independently created computer program with other programs performance of the acts of reproduction and translation by or on behalf of a person having a right to use a copy of the program is legitimate and compatible with fair practice and must therefore be deemed not to require the authorisation of the rightholder. An objective of this exception is to make it possible to connect all components of a computer system, including those of different manufacturers, so that they can work together
  • 10. XORing a fixed string •By guessing parts of the decrypted file some “encryption” is easier than others •Early devices just scrambled firmwares like this
  • 11. How do things work in there? •Figure out how your architecture works •Master things like the CPU instruction set and how a stack works •These days things are “always” ARM •The CPU core is not the problem, the peripherals, busses and associated HW are the challenges
  • 12. Disassembly •Objdump is an excellent tool •Is not as hard as you might think •Look for register addresses / memory layout patterns •Error messages/strings/bitmaps or pointers to them
  • 13. Disassembly even easier •IDApro is an advanced tool to automate the task even more • Detects lots of C/C++ magic by itself • Stack frames • Bitmaps • Structs • Strings • Memory layout
  • 14. Scan the bare PCB and beep them BGA removed! Surprisingly many clues printed on the PCB
  • 15. Hiding what's inside •Rub off all markings •Use chips without public documentation •Use chips unsupported by gcc
  • 16. Hardware debuggers •Many devices leave debug points for BDM / JTAG or debug uarts •Like this:
  • 17. Attaching stuff on their HW •Hm, what do we have here...
  • 20. Anti-bricking measures •Have multiple devices •Primary boot-loader feature: run the original •If possible, load and run from RAM only until tested
  • 21. Software decoding targets •Our first targets had mp3 decoding hardware •New architectures entered •More XOR and checksums •Detect code patterns and search online for data sheets. •Partial matches may give “similar chips” that have documentation
  • 22. Early ipods •Used hidden hard-drive partitions •Used completely (publicly) undocumented chips •Took a long time to master
  • 23. Later target examples •Boot-loader that loads and decrypts firmware •Magic constants in the boot-loader code revealed algorithm. •Boot-loader also upgradable (plain) gave away crypto keys •Known flags in digital signature algorithm (DSA) offered shortcut in code signing
  • 24. So what about true cryptography?
  • 25. Loading encrypted payloads •Target loads only encrypted files •User finds flaw in one firmware version that crashes the device •A buffer overflow in the HTML reader •Look, if we add crafted data in that HTML file we can execute code •When we used a loop to write in memory we managed to toggle the backlight
  • 27. From backlight to restored key • dump memory using a videocamera and toggle backlight • 32MB contents took many hours • analyze what's in memory • code, data, clues • see, there's a pattern of USB registers • rewrite the memory dump program to send contents over USB, insert the whole thing into a HTML file, load it on target device • there seems to be code referencing an SRAM • dump SRAM too • Look, there's something that looks like a crypto key!
  • 28. It takes time and people •Many volunteers •Skilled volunteers •Devoted volunteers •Lots of time •> 1 year from buffer overflow to running code
  • 29. Getting it done faster? •What if there was (lots of) money to gain? •More clever people spending more of their time •More computers cracking crypto •More hardware analyzers •If you can upgrade the device, reverse engineering it will be possible
  • 30. From tiny to Android 2001 2MB RAM 6GB HDD 12 MHz CPU 2010 64MB RAM 120GB HDD 500 MHz CPU Today: the dedicated mp3 player market is dead or dying and everyone is going Android Reverse engineering is still done mostly the same
  • 31. Linux-based reverse engineering •More devices use full-fledged Linux •More flaws, more drivers, less ways to have “unique” solutions hard to figure out •Manufacturers stick to undocumented hardware •… and booting encrypted blobs •Once “hacked”, putting your own SW can be much easier: • familiar APIs (libc, u-boot, standard libs) • familar drivers (even if binary blobs will be there) • gcc!
  • 32. Rockbox A complete and very portable open source mp3 player firmware replacement, including multi-tasking operating system and application suite... Started by me and my two friends Linus and Björn. Runs on almost 100 different mp3 players from brands such as Toshiba, Tatung, Sony, SanDisk, Samsung, Philips, Pandora, Onda, Olympus, MPIO, Creative, Apple, Archos, Cowon, HifiMan, Meizu, iRiver, Packard Bell, iAudio and more...
  • 35. Learn more! •Rockbox http://www.rockbox.org/ •“Reverse Engineering for Beginners” http://yurichev.com/writings/RE_for_beginners-en.pdf
  • 36. Doing good is part of our code