Modify binary files with VIM
TL;DR
xxd ./bin/app | vim —and:%!xxd -r > ./bin/new_app

When I was a student, I used a lot Windows. It was hard times and we had to crack tools like Total Commander or FAR manager or upgrade Diablo’s heroes in saves files. I used editors like: WinHex and UltraEdit .
Today I came to similar problem modify binary file in Linux terminal. I started search with one requirements:
-
it should be cross distributive solution
-
should be easy to use with Vim (as main my editor for linux machines)
Few searches and I came to: xxd. It is a part of vim-common package, that lucky would be installed on each system. I need to learn only how to read, modify and write.
Read: Use xxd to decode binary and redirect output to vim: xxd ./bin/app | vim -
Modification: You can edit evrything - because it is just a text. There are 3 big sections. First column is the addresses, second is the hex representation of a binary file, and third one is the ASCII preview of the binary. With this solution preview would not be updated on changes.
Write: After you modify required bytes in the middle section. Instead of type :w , you should run xdd: :%!xdd -r > ./bin/new_app .
Summary

Michael Nikitochkin is a Lead Software Engineer. Follow him on LinkedIn or GitHub.
If you enjoyed this story, we recommend reading our latest tech stories and trending tech stories.
