The only things that come up to my mind are the following:
1. The program is checking for IsDebuggerPresent and acting accordingly (but if you've been patching programs for years, I believe that you already considered this option and most important, know how to fix it).
2. There are tricks to detect if the program is being started by windows or by another program and the software is acting accordingly.
3. There is some sort of exception that is caught by the debugger and not by the program. This way the program knows it is being debugged and might/might not do some operations.
|