If you change the lengths of strings in a binary, or indeed move any part of a binary around in any way, then you’re likely to break it: offsets to the data (and code) that the program expects to find are stored in the binary, and won’t be adjusted when you alter it.
Thus changing text (or anything else, including code) while preserving the lengths is possible, but anything else is more complex.
EXE files using the MZ header (starting with MZ
) have a checksum at offset 12h, but DOS doesn’t check it as far as I know. Some programs do their own checksumming as a way of resisting tampering, but causing that to fail should produce obvious results (except with some games...).
Some strings in Windows files can be modified without breaking the program, using a resource editor: the editor will know how to update everything needed for the program to find its updated resources. Other features of Windows files are also typically represented using resources, and can be modified too: icons, bitmaps...
The general constraint on changing binaries isn’t limited to DOS and Windows, it’s quite general: you can’t open a binary in a hex editor, move parts around and expect it to work.