Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Android Bootloader Images #299

Open
zachriggle opened this issue Oct 31, 2017 · 0 comments
Open

Android Bootloader Images #299

zachriggle opened this issue Oct 31, 2017 · 0 comments

Comments

@zachriggle
Copy link

Some Android bootloaders start with BOOTLDR! and contain other images used in the boot process. The format is pretty straightforward, and at least on modern Qualcomm devices, the images contained are just strings (e.g. version strings) or ELF images.

Currently, Binwalk may find the ELFs by magic, but may not extract them perfectly -- and may extract internal resources separately (rather than in a second stage of recursion).

I've written an extremely simple parser in ctypes here: https://gist.github.com/zachriggle/4d78433cd93dbb8fb0858dc7a98e0d5e

Which has the ability to extract the names of the partitions, as well as their contents. Hopefully you can integrate this into BinWalk :)

You can get example images by downloading a Google Pixel (or Nexus) factory image ZIP from here and looking at the bootloader .img file (e.g. walleye-opd3.170816.012/bootloader-walleye-mw8998-002.0059.00.img).

For that image, my script will generate the following output (contents truncated to be reasonable), which should hopefully be easy to integrate into Binwalk.

BOOTLDR! 21 4096 39657472
version-bootloader 0x1000
'mw8998-002.0059.00\n\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
partition:0 0xb000
'htcVerMSM8998.LA.1.1.r1-00043-ST'
partition:1 0xb000
'htcVerMSM8998.LA.1.1.r1-00043-ST'
partition:2 0xb000
'htcVerMSM8998.LA.1.1.r1-00043-ST'
partition:3 0xb000
'htcVerMSM8998.LA.1.1.r1-00043-ST'
partition:4 0xb000
'htcVerMSM8998.LA.1.1.r1-00043-ST'
partition:5 0xb000
'htcVerMSM8998.LA.1.1.r1-00043-ST'
cmnlib64 0x49000
'\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
cmnlib 0x38000
'\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00(\x00\x01\x00\x00\x00\x00\x00\x00\x004\x00\x00\x00'
devcfg 0xf000
'\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7\x00\x01\x00\x00\x00\x00\x80\x1e\x1c\x00\x00\x00\x00'
hyp 0x40000
'\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7\x00\x01\x00\x00\x00\x00\x00\x81\x85\x00\x00\x00\x00'
keymaster 0x46000
'\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
lockbooter 0x16000
'\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00\xb7\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
pmic 0xd000
'\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7\x00\x01\x00\x00\x000p \x00\x00\x00\x00\x00'
rpm 0x3a000
'\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00(\x00\x01\x00\x00\x00\t\x00 \x004\x00\x00\x00'
tz 0x1db000
'\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7\x00\x01\x00\x00\x00\x00\x00h\x14\x00\x00\x00\x00'
xbl 0x3a2000
'\x7fELF\x02\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00\xb7\x00\x01\x00\x00\x00\xf0\x1c\x02\x14\x00\x00\x00\x00'
apdp 0x4000
'\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00(\x00\x01\x00\x00\x00\x00\xf0\x1f\x1c4\x00\x00\x00'
msadp 0x4000
'\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00(\x00\x01\x00\x00\x00\x00\xf0\x1f\x1c4\x00\x00\x00'
hosd 0x1e31000
'ANDROID!=\xc3\x80\x01\x00\x80\x00\x00}\x19b\x00\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\xf0\x00'
abl 0x65000
'\x7fELF\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x02\x00(\x00\x01\x00\x00\x00\x00\x00\xa0\x9f4\x00\x00\x00'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants