One question is whether the program is statically or dynamically linked, and if the latter, whether it is possible (as it is in many Unices) to slide your own open(2) definition in between the program and the system library. If it is, it's possible to slide in something that fakes /dev/stdin.