바이너리 파일에서 부분 바이너리 데이터를 제거하는 방법은 무엇입니까? (16진 덤프). GHex 3.18.0 바이너리 편집기를 사용해 보았지만 이에 적합하지 않으며 간단한 기능도 부족합니다. 예를 들어, 오프셋 주소 범위 0x83FFF0 – 0xDDAFEB를 선택하고 전체 블록을 삭제해야 합니다(실제로는 0x83FFF0에서 파일 끝까지의 부분을 삭제합니다).
어쨌든 바이너리 콘텐츠를 봐야 하기 때문에 GUI 도구를 선호합니다. 하지만 먼저 GUI 편집기를 사용하여 주소를 찾은 다음 일부 스크립트 명령을 사용하여 파일을 수정할 수 있습니다. (어쩌면 bbe
명령일까요?)
답변1
다음에서 이 작업을 수행할 수 있습니다.이맥스, 사전 설치되지 않은 경우 대부분의 Unix 시스템에서 패키지로 사용할 수 있습니다. 내장된 헥스 뷰어는 삭제를 지원하지 않으나 개선된 헥스 뷰어Nhexl 모드하다.
Emacs에서 파일을 열고 를 입력하십시오 Alt+x nhexl-mode
Enter. "일치 없음"이라고 표시되면 Ctrl+gnhexl-mode를 입력하고 설치한 후 다시 시도하십시오. nhexl-mode를 설치하는 가장 쉬운 방법은 Emacs 패키지를 사용하는 것입니다. 옵션 메뉴에서 Emacs 패키지 관리를 선택한 다음 nhexl-mode를 선택하고 설치를 클릭하거나 를 입력합니다 Alt+x package-install
Enter nhexl-mode
Enter.
nhexl 모드에서 삭제하려는 영역의 시작 부분으로 이동한 후 키를 누릅니다 Ctrl+Space. 해당 영역의 끝으로 이동하여 을 누릅니다 Delete. 변경 사항에 만족하면 파일을 저장합니다.
Emacs는 대용량 파일에는 적합하지 않지만 수십 MB 정도는 괜찮습니다.
답변2
파일의 첫 번째 부분만 필요한 경우 명령줄에서 다음 줄을 사용하세요.
head --bytes=8650736 Original > Truncated
(여기서 83FFF0 16진수 는 분명히 8650736 십진수 입니다 )
당신이 사용하는 경우간단한 명령줄 계산기그것은 다음과 같이 된다:
head --bytes=$(c "ibase=16; 83FFF0") Original > Truncated