vi를 사용하다 보면 가끔씩 Binary를 편집하고 싶은 순간이 있다.

그리고 vi에는 아주 재미있는 기능이 있다.

바로 :%!TERMINAL_COMMAND 인데, 이게 무슨 명령이냐면, 편집기 내에 존재하는 텍스트들을 piping 해서 TERMINAL_COMMAND의 입력으로 넘기고, 해당 TERMINAL_COMMAND 의 출력을 다시 편집기 내에 존재하는 텍스트로 바꾸어주는 녀석이다. 지금 당장 커맨드 모드에서 :%!ls -al 을 입력해보면 어떤 느낌인지 딱 올 것이다.

이것과 함께 xxd 라는, 유닉스에서 사용되는, 데이터를 받아 HEX로 출력해주는 프로그램을 이용하여, 다음을 따라해보시라.

편집하고 싶은 파일 something.exe 을 다음의 과정을 따라하면 된다.

vi something.exe
:%!xxd

Binary를 편집한 이후…

:%!xxd -r
:w