I am a new reverse enigneerer. I know I can patch strings using a hex editor, but I obviously can't add or remove a single byte. Is there any workaround that will let me make a... let's say, 10 byte string, into a 1 MB string? (Just an example).
In this case you will likely need to add a new section (dont think a code cave can be 1MB.. on any architecture) and overwrite the code to read from the the original string location to the new string location (at least) or write your own code to do that.
Also, depending on the architecture and implementation its very much likely that you can make the string shorter than the original, by adding a null terminator as your last byte (i.e. 0x00). Depending on whats after that string, you can in some cases make it longer by moving the null terminator.