기기에서 bml7을 덤프해서 bml7파일이 있다는 가정하에
1. 헥스에디터를 이용해서 bml7파일을 연 후 "1f 8b" 를 찾아갑니다. ( <-- gunzip의 매직넘버)
2. "0x0" 부터 처음 발견된 "1f 8b" 직전까지의 헥사코드들을 지우고 temp.gz로 저장
3. 터미널에서 gunzip temp.gz 입력 ----> temp파일이 생성됩니다.
이제 두 가지 가능성이 있습니다.
4-1. temp파일을 다시 헥스에디터로 열어서 "1f 8b"를 다시 찾습니다.
5-1. "0x0002****" 부근에서 첫 번째 "1f 8b"가 발견됩니다.
6-1. 다시 "0x0" 부터 위의 "1f 8b" 직전까지의 코드를 지우고 난 뒤 initrd.cpio.gz 파일로 저장합니다.
7-1. 터미널에서 gunzip initrd.cpio.gz 입력 ------> initrd.cpio파일이 생성
8-1. mkdir initramfs , cd initramfs
9-1. cat ../initrd.cpio | cpio -i --no-absolute-filenames
혹은
4-2. temp파일을 헥스에디터로 열어서 "1f 8b" 검색시 "0x0002****"부근에서 발견되지 않고 저~멀리서 발견될 경우
5-2. "30 37 30 37"을 검색하셔서 "0x0"부터 "30 37" 이전까지의 헥사코드들을 지웁니다.
6-2. initrd.cpio로 저장합니다.
7-2. mkdir initramfs , cd initramfs
8-2. cat ../initrd.cpio | cpio -i --no-absolute-filenames
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
헥사에디터를 이용하지 않을 수도 있습니다.
터미널에서
1) hexdump -C bml7 | grep "1f 8b"
00003420 00 00 00 00 1f 8b 08 00 dc 96 20 4c 02 03 ec fd |.......... L....|
dd if=bml7 bs=1 skip=$((0x3424)) of=temp.gz
2) gunzip temp.gz
3-1) hexdump -C temp | grep "1f 8b"
00026660 1f 8b 08 00 d2 96 20 4c 02 03 b4 fd 05 54 24 4d |....O. L..y.T$M|
dd if=temp bs=1 skip=$((0x00026660)) of=initrd.cpio.gz
4-2) gunzip initrd.cpuo.gz
5-2) mkdir initramfs, cd initramfs
6-2) cat ../initrd.cpio | cpio -i --no-absolute-filenames
위의 4번과정에서 역시나 0002****대에서 1f 8b가 발견되지 않고 저~ 멀리서 발견된다면
3-2) hexdump -C temp | grep "30 37 30 37"
00123456 3e 80 00 30 37 30 37 30 37 ~~~~~~~
dd if=temp bs=1 skip=$((0x00123459)) of=initrd.cpio
4-2) mkdir initramfs, cd initramfs
5-2) cat ../initrd.cpio | cpio -i --no-absolute-filenames
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
아 참고로 bml덤프에서 zImage만 추출하는 방법은
헥스에디터로 "18 28 1f 01"을 검색
00000020 00 02 ea 00 18 28 6f 01 00 00 00 00 a5 10 5e 00
위의 줄에서
0x24 : 18 28 6f 01 --> zImage의 매직넘버
0x28 : 00 00 00 00 --> zImage의 시작 부분
0x2c : a5 10 5e 00 --> zImage의 끝 부분
그러므로
헥스에디터로 "0x5e10a5"로 이동하셔서 이 것을 포함한 뒷부분을 모조리 날려주시면 됩니다.
1. 헥스에디터를 이용해서 bml7파일을 연 후 "1f 8b" 를 찾아갑니다. ( <-- gunzip의 매직넘버)
2. "0x0" 부터 처음 발견된 "1f 8b" 직전까지의 헥사코드들을 지우고 temp.gz로 저장
3. 터미널에서 gunzip temp.gz 입력 ----> temp파일이 생성됩니다.
이제 두 가지 가능성이 있습니다.
4-1. temp파일을 다시 헥스에디터로 열어서 "1f 8b"를 다시 찾습니다.
5-1. "0x0002****" 부근에서 첫 번째 "1f 8b"가 발견됩니다.
6-1. 다시 "0x0" 부터 위의 "1f 8b" 직전까지의 코드를 지우고 난 뒤 initrd.cpio.gz 파일로 저장합니다.
7-1. 터미널에서 gunzip initrd.cpio.gz 입력 ------> initrd.cpio파일이 생성
8-1. mkdir initramfs , cd initramfs
9-1. cat ../initrd.cpio | cpio -i --no-absolute-filenames
혹은
4-2. temp파일을 헥스에디터로 열어서 "1f 8b" 검색시 "0x0002****"부근에서 발견되지 않고 저~멀리서 발견될 경우
5-2. "30 37 30 37"을 검색하셔서 "0x0"부터 "30 37" 이전까지의 헥사코드들을 지웁니다.
6-2. initrd.cpio로 저장합니다.
7-2. mkdir initramfs , cd initramfs
8-2. cat ../initrd.cpio | cpio -i --no-absolute-filenames
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
헥사에디터를 이용하지 않을 수도 있습니다.
터미널에서
1) hexdump -C bml7 | grep "1f 8b"
00003420 00 00 00 00 1f 8b 08 00 dc 96 20 4c 02 03 ec fd |.......... L....|
dd if=bml7 bs=1 skip=$((0x3424)) of=temp.gz
2) gunzip temp.gz
3-1) hexdump -C temp | grep "1f 8b"
00026660 1f 8b 08 00 d2 96 20 4c 02 03 b4 fd 05 54 24 4d |....O. L..y.T$M|
dd if=temp bs=1 skip=$((0x00026660)) of=initrd.cpio.gz
4-2) gunzip initrd.cpuo.gz
5-2) mkdir initramfs, cd initramfs
6-2) cat ../initrd.cpio | cpio -i --no-absolute-filenames
위의 4번과정에서 역시나 0002****대에서 1f 8b가 발견되지 않고 저~ 멀리서 발견된다면
3-2) hexdump -C temp | grep "30 37 30 37"
00123456 3e 80 00 30 37 30 37 30 37 ~~~~~~~
dd if=temp bs=1 skip=$((0x00123459)) of=initrd.cpio
4-2) mkdir initramfs, cd initramfs
5-2) cat ../initrd.cpio | cpio -i --no-absolute-filenames
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
아 참고로 bml덤프에서 zImage만 추출하는 방법은
헥스에디터로 "18 28 1f 01"을 검색
00000020 00 02 ea 00 18 28 6f 01 00 00 00 00 a5 10 5e 00
위의 줄에서
0x24 : 18 28 6f 01 --> zImage의 매직넘버
0x28 : 00 00 00 00 --> zImage의 시작 부분
0x2c : a5 10 5e 00 --> zImage의 끝 부분
그러므로
헥스에디터로 "0x5e10a5"로 이동하셔서 이 것을 포함한 뒷부분을 모조리 날려주시면 됩니다.