Have you ever seen i², by pai? Try looking at its code, which is not impossible to read, but does desmotivate one who wants at first. It's basically made like Othello said, though it was made to be very compact, so it's composed of a lot of wild, unique, mostly 1-2-length tokens (i.e. ^, ¨, ª, ¿, ¼, ¥, æ etc.), instead of understandable names.
You could just make a list of all the names you use for aliases and stuff like that, then replace all of them (and of course keep that list for debugging and/or updating in the future). Use more vars, load more remote files quietly, hell, you could do a lot of things, but it will never be impossible to break them all.
I don't like this attitude, though. But, whatever floats your boat. You'll never be protected anyway. But this does bring more fun when breaking it all