If it detects whenever a byte is changed then it has a CRC check on the .text section of the file (or something similar). There are multiple ways of going around this, but most of them are complicated. Some methods are:
> Disabling checks completely by finding the functions that check them (Stack tracing comes to mind)
> Finding the stored value for the CRC and then modifying it the exact value required, after the bytes are changed.
All these are pretty difficult but one other method you can do is to reroute control flow by setting breakpoints in the .data/.idata sections or causing exceptions anyhow then catching these exceptions in handlers (using winapi functions to set on top of chain) and then modifying what is required.
Best advice I have is to see how that other guy did it. Compare the two files (original and modified) to see the changes he made.
Hope something here helps