2013-08-22 6 views
0

바이너리 파일을 직접 편집하려고하는데 vi와 hexedit라는 두 개의 편집기를 알고 있습니다. 그러나 이진 파일을 사용하여 이진 파일을 별도로 열면 cotens가 달라집니다. 아래는 내가 한 일이다.vi와 hexedit를 사용하여 이진 파일을 엽니 다. 왜 다른 파일이 사용됩니까?

먼저 mbr 데이터가 들어있는 바이너리 파일을 생성하기 위해 "dd if =/dev/sda of = mbr bs = 512 count = 1"을 사용합니다. 그리고 나는 "hexedit MBR"을 사용하여 열, 그리고이 표시 종료

00000000 EB 63 90 D0 BC 00 7C 8E C0 8E D8 BE 00 7C BF 00 
00000010 06 B9 00 02 FC F3 A4 50 68 1C 06 CB FB B9 04 00 
00000020 BD BE 07 80 7E 00 00 7C 0B 0F 85 0E 01 83 C5 10 

: 시작 내가 입력을 열고 "VI MBR"을 사용하여

000001E0 FF FF 83 FE FF FF 00 40 D6 02 00 38 2B 01 00 00 
000001F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 55 AA 

"! % xxd를" 시작 :

0000000: c3ab 63c2 90c3 90c2 bc00 7cc2 8ec3 80c2 
0000010: 8ec3 98c2 be00 7cc2 bf00 06c2 b900 02c3 
0000020: bcc3 b3c2 a450 681c 06c3 8bc3 bbc2 b904 

종료 :

00002b0: bfc3 bf00 40c3 9602 0038 2b01 0000 0000 
00002c0: 0000 0000 0000 0000 0000 0000 55c2 aa0a 
01,이 표시

hexedit 표시는 mbr에서 예상 한 것입니다. 그러나 vi가 표시되면서 무엇을 말할 것인가? 또한 512 바이트가 있기 때문에 vi 디스플레이가 잘못되었습니다.

설명해 주셔서 감사합니다.

xxd mbr 

이 좋으면

는, 바이너리 모드 (EOL)에 VI를 열어보십시오 :

를 먼저 입력하여 출력을 확인하기 위해 시도해야하므로

답변

6

명령 :%!xxd

는 외부 프로그램 xxd를 사용
vi -b mrb 

:%!xxd

+0

매우 멋지다! 나는 당신의 방법을 시도하고 모두 괜찮습니다. 고맙습니다! – Akr

+0

답변이 필요에 응답하는 경우 답을 표시하십시오. 감사. – JScoobyCed

1

은 "VI"에 표시되는 바이트는 이진 코드 정확하게 UTF-8 표현이 될 것으로 보인다.

어쩌면 "vi"는 "xxd"로 전달하기 전에 바이너리에서 읽은 데이터를 UTF-8로 변환합니다.