Of course you can. The object here is the difference between making life hard for the source-code thief and making things (practically) impossible. If the program "just runs" but is otherwise unreadable then you've just throw up some obstacles for an attacker to work around. This is true regardless of what language you used to implement your program - C, perl, Visual Basic, whatever.
The other idea is that using the program requires some form of secret to unlock it. This doesn't really work for the environment you specified since the program must ultimately be unlocked for use on the potentially hostile computer. You could use some form of encryption to prevent all access to something but once you've allowed something to be decrypted ... the game is over. Or... you could view encryption as yet another technical barrier for use in preventing the clients from accessing the source — just another hurdle.