Basic command sets for usual NAND Flash memory (small blocks)
10
Reading a small block page
11
Write operation pin states
12
ECC (Error Correction Code)
13
Example - P8 calculation
14
Example - P2 calculation
15
ECC calculation code
16
Example bad block check routine
17
An example of Flash memory layout
18
U-boot boot code
19
Custom boot code
20
Kernel image disassembly
21
Mounting JFFS2 file system using a MTD
22
Bridge & damaged pins
23
Tamper detection
24
Conclusion
Description:
Explore the intricacies of reverse engineering embedded devices through direct interaction with Flash memory in this 45-minute Black Hat conference talk. Delve into the process of reprogramming chips and reinstalling them on circuit boards, gaining access to out-of-band data containing crucial page and block information. Learn how to handle common issues like bad blocks and page data contamination while extracting and writing back data. Discover techniques for recalculating sums and setting correct flags in meta information areas. Examine the fascinating world of journaling file systems used in embedded systems, and understand how to mount these file systems or create parsers to analyze file operation history. Gain insights into Flash memory programming and usage through hands-on examples, including MCU Host Bus Emulation Mode, basic command sets for NAND Flash memory, ECC calculations, and JFFS2 file system mounting. Address challenges such as heat management, damaged pins, and tamper detection while mastering the art of reverse engineering Flash memory for both entertainment and practical benefits.
Read more
Reverse Engineering Flash Memory for Fun and Benefit