Jak extrahovat boot.img?

Pokouším se zobrazit obsah souboru boot.img z obrázku systému Android.

Vyhledal jsem google a našel tento článek k extrahování system.img, ale nefunguje to pro boot.img. Když to zkusíte udělat pro boot.img, zobrazí se následující:

Invalid sparse file format at header magi Failed to read sparse file 

Používá se simg2img pouze k extrakci system.img?

  1. Pokud ano, existuje ještě nějaký jiný metoda pro extrakci boot.img?
  2. Pokud ne, jaký je problém pro extrahování boot.img?

Komentáře

Odpověď

boot.img je malý (ish) soubor, který obsahuje dvě hlavní části.

 * kernel(important for android) * ramdisk( a core set of instruction & binaries) 

Rozbalte boot.img:

Obsahuje následující kroky:

  1. Stáhněte si nástroj pomocí wget https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/android-serialport-api/android_bootimg_tools.tar.gz

  2. Extrahujte soubor pomocí tar xvzf android_bootimg_tools.tar.gz.

    Obsahuje two binární soubory:

     * unpackbootimg * mkbootimg 

3. Potom proveďte ./unpackbootimg -i <filename.img> -o <output_path>

It will contain, * boot.img-zImage ----> kernel * boot.img-ramdisk.gz ----> ramdisk 

Můžeme také extrahovat ramdisk pomocí následujícího příkazu

gunzip -c boot.img-ramdisk.gz | cpio -i 

Po změně souborů můžeme tyto soubory znovu zabalit jako boot.img pomocí mkbootimg

Bavte se!

Komentáře

  • Ve třetím kroku se zobrazuje chyba prosím, pomozte mi … terminál říká, že příkaz unpackbootimg nebyl nalezen
  • Získání stejné chyby pro krok 3 v mincovně 17 zde. Pokusili jsme se je spustit pomocí sudo a po chmod 755 bezvýsledně.
  • V kroku 3 zkontrolujte, zda output_path již existuje, jinak unpackbootimg segfault.
  • Odkaz na nástroj je mrtvý.
  • Oprava: " příkaz unpackbootimg nebyl nalezen ", na 64bitovém počítači používáte 32bitovou binární verzi bez 32bitových závislostí. Nainstalujte je pomocí " apt-get install gcc-multilib "

odpovědi

boot.img není komprimovaný obrázek souborového systému jako system.img. Čte jej bootloader a obsahuje o něco více než obraz jádra a obraz ramdisku.

Některé binární distribuce dodávají obrazy jádra a ramdisku samostatně. V takovém případě s boot.img nemusíte dělat nic, stačí vygenerovat nový pomocí mkbootimg.

Pokud potřebujete extrahovat informace z boot.img, zkuste split_bootimg (autor William Enck , prostřednictvím Android wiki ).

Komentáře

  • Odkaz na split_bootimg již není platný.
  • @NathanOsman Nahrazen odkazem na kopii na stránce William Enck ' s.

Odpověď

Používám opensuse. Nainstaloval jsem abootimg. Pokud chcete extrahovat (boot | zotavení) .img spusťte například:

abootimg -x (boot|recovery).img 

Pak získáte další soubory : bootimg.cgf, zImage a initrd.img Pokud chcete zabalit obraz, spustíte takový

abootimg --create (boot|recovery).img -f bootimg.cfg -k zImage -r initrd.img 

Pak dostanete (boot | recovery) .img

Užijte si

Odpověď

Následující nástroj můžete použít k extrakci a opětovnému zabalení spouštěcího obrazu systému Android.

$ git clone https://github.com/cfig/Android_boot_image_editor.git 

zkopírujte soubor boot.img do klonované úložiště git. Spustit:

$ ./gradlew unpack 

Při prvním spuštění bude nutné stáhnout potřebné knihovny z internetu, buďte trpěliví. Obsah můžete získat na adrese „build / unzip_boot /“, například takto:

build/unzip_boot/ ├── bootimg.json (boot image info) ├── kernel ├── second (2nd bootloader, if exists) ├── boot.img.avb.json (AVB only) └── root 

Komentáře

  • Toto je odpověď, protože tento kód a projekt jsou aktuální a udržované.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *