二进制编辑

时间:2018-11-26 08:57:40

标签: vim binary hex reverse-engineering vi

我一直在修补多个十六进制编辑器,但没有任何效果。

我正在寻找的是一种在实际二进制文件中(而不是十六进制)更改二进制文件的方法。这纯粹是出于教育目的,我知道在两者之间进行转换是微不足道的,但是我希望能够像修改十六进制一样更改1和0。

我已经尝试过将Vim与%!xxd -b一起使用,但随后将无法与%!xxd -r一起使用。我知道如何将文件转换为二进制文件,但我正在寻找一种以这种格式动态更改并保存文件的方法。

更好的是,如果我能找到一种方法来通过纯粹用实际的二进制代码进行编码来实际创建二进制文件。

任何帮助将不胜感激:D

2 个答案:

答案 0 :(得分:1)

vimgvim应该直接为您工作,而无需使用xxd过滤器。

在(g)vim中打开文件。将光标置于字符上,然后键入ga以在状态行中查看其字符代码。要插入字符NNN,请将光标放在所需的位置,进入插入模式并键入Ctrl-v,然后键入三位数的十进制代码值。使用Ctrl-v x HH通过十六进制代码输入字符。

请确保您的终端未设置为使用UTF8,因为在UTF8中,键入Ctrl-v 128实际上会插入c280(字符128的utf-8编码),而不是80

LC_ALL=C vim binary-file

是确保您在vim中进行基于二进制字符的编辑的最简单方法,但是如果您的终端是utf-8,这可能会做一些奇怪的事情。

LC_ALL=C gvim binary-file

应打开一个独立的窗口,以正确显示。

仅供参考,如果您确实想在utf-8中工作,Ctrl-v u HHHH是如何使用十六进制代码点HHHH输入Unicode字符的方法。

答案 1 :(得分:0)

windows 打开cmd.exe或notepad ++或任何编辑器
启用numlock键
在笔记本电脑上,您需要使用功能键或字母键上方的蓝色/灰色银色数字(使用顶行的数字将无法工作,因为它们映射到不同的扫描代码。

按alt键+ 255对应于0xff
按alt键+ 254将对应于0xfe

请参见下面的演示

C:\>copy con rawbin.bin
 ■²ⁿ√·∙⌂~}─^Z
^Z
        1 file(s) copied.

C:\>xxd rawbin.bin
0000000: fffe fdfc fbfa f97f 7e7d c41a 0d0a       ........~}....

C:\>

Alt-CHar_in winword