This page confirms it was add in Photoshop CS (October 2003): https://gist.github.com/msikma/04bfae8670300a12c55937c3b61d6...
Edit: looks like the first CS. https://m.slashdot.org/story/42050
For this particular example, Photoshop, an error message is displayed for currency detection. The first thing I would do is load up the executable and look for that particular string. If I'm lucky and there aren't many protections for the executable, I'll be in the right area for figuring out what to patch, or I'll at least know which code paths to start tracing.
The hard part is finding where that is. One approach is to start with the error string - find it in the file and put a memory-read breakpoint on it in the debugger. Trigger the error and capture the call stack - start working up the chain until you identify why that text was read, either the failure directly or a message passed to that thread - if it's a message, find what sent it and why.
This has never ever worked for me, unless it was some prepared example. There just never are any meaningful strings in the EXE.