Gömülü initramfs ayıkla


9

Bir initramfın gömülü olduğu bir çekirdeğim var. Çıkarmak istiyorum.

Yaptığım x86 boot sectorzaman çıktı aldımfile bzImage

Bu çekirdek görüntüsü için System.map dosyam var.

Katıştırılmış initramfs görüntüsünü bu çekirdekten System.map dosyasının yardımıyla veya yardımı olmadan ayıklamanın herhangi bir yolu var mı ?

Sistem harita dosyasında bulunan ilginç dize : (Sadece yardımcı olması durumunda)

57312:c17fd8cc T __initramfs_start
57316:c19d7b90 T __initramfs_size

Yanıtlar:


14

Gentoo wiki'sinde bu konuda bazı bilgiler var: https://wiki.gentoo.org/wiki/Custom_Initramfs#Salvaging

Son binwalkderece iyi çalışan kullanımını önerir .

Bir örnekle hızlıca gözden geçireceğim:

önce bzImage dosyasını binwalk ile çıkarın:

> binwalk --extract bzImage
DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             Microsoft executable, portable (PE)
18356         0x47B4          xz compressed data
9772088       0x951C38        xz compressed data

Üç dosyaları ile sona erdi: 47B4, 47B4.xzve951C38.xz

> file 47B4
47B4: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, BuildID[sha1]=aa47c6853b19e9242401db60d6ce12fe84814020, stripped

Şimdi binwalk'u tekrar çalıştıralım 47B4:

> binwalk --extract 47B4
DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
0             0x0             ELF, 64-bit LSB executable, AMD x86-64, version 1 (SYSV)
9818304       0x95D0C0        Linux kernel version "4.4.6-gentoo (root@host) (gcc version 4.9.3 (Gentoo Hardened 4.9.3 p1.5, pie-0.6.4) ) #1 SMP Tue Apr 12 14:55:10 CEST 2016"
9977288       0x983DC8        gzip compressed data, maximum compression, from Unix, NULL date (1970-01-01 00:00:00)
<snip>

Bu, bulunan yolların ve potansiyel olarak ilginç birkaç dosyanın uzun bir listesiyle geri döndü. Bir bakalım.

> file _47B4.extracted/*
<snip>
_47B4.extracted/E9B348:     ASCII cpio archive (SVR4 with no CRC)

dosyası E9B348(zaten sıkıştırılmış) bir cpio arşivi, sadece aradığımız şey! Bingo!

Mevcut dizininizdeki sıkıştırılmamış cpio arşivini (initramfs!) Açmak için

> cpio -i < E9B348

Bu neredeyse çok kolaydı. binwalkkesinlikle aradığınız araç. Referans olarak, burada v2.1.1 kullanıyordum.


Bingo !!! Başardın !
SHW

2

Bildiğim kadarıyla, initramfs cpio arşivi çekirdeğe bağlı.

Bu nedenle, bu işe yaramalıdır:

  1. ve ddarasındaki aralığı ayıklamak için kullanınc17fd8ccc19d7b90
  2. elde edilen verileri bir CPIO paketleyicisini kullanarak paketinden çıkarın.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.