Is there a more or less reliable way to tell whether data at some location in memory is a beginning of a processor instruction or some other data?

For example, `E8 3F BD 6A 00` may be `call` instruction (`E8`) with relative offset of `0x6ABD3F`, or it might be three bytes of data belonging to some other instruction, followed by `push 0` (`6A 00`).

I know the question sounds silly and there is probably no simple way, but maybe instruction set was designed with this problem in mind and maybe some simple code examining +-100 bytes around the location can give an answer that is very likely correct.

I want to know this because I scan program's code and replace all calls to some function with calls to my replacement. It's working this far but it's not impossible that at some point, as I increase number of functions I'm replacing, some data will look exactly like a function call to that exact address, and will be replaced, and this will cause a program to break in a most unexpected fashion. I want to reduce the probability of that.