The current L2J core has very limited protection against bots.
As Evilus said, and I think he's 100% correct about this, most of the bot protection needs to be done when the bots are trying to connect.
To be completely honest, I really have no interest in studying the different bots and how they connect to the servers. I'd be happy to help block them if someone was to give me precise pointers as to how they connect and interact with the server (i.e.: if someone else was to study them and explain to me how they connect, etc... the actual mechanics of it).
I also think that the bot protection part of the core should be in an independant library, obfuscated, and that the source for that library should NOT be on SVN or anywhere other than the hidden L2J dev SVN (yes, for those of you who didnt know... that exists

)