What kind of overcomplicated solutions are those? There are 2 simple solutions to this problem:
1. using custom ClassicUO client - this is the simplest solution, just add some kind of key to a login packet (like 0xAD). On server check the existance of correct key and react accordingly.
2. inject...