Yes, the great thing about Java is that it runs on your own computer, and not on the server (like Lop pointed out.) The Java applet is then communicating with the server, and maybe are sending it commands which does stuff, which later is sent to the player you're playing against.
But it isn't as easy as it sounds - they're not stupid, so most applets is using encryption to prevent this kind of cheat. It's going to be a lame job to crack the encryption, if you know nothing about that kind of stuff, but there's another alternative; the applet. It's the applet which is sending the encrypted commands to the server, and receives some as well. That means that the encryption algorithm is in the applet.
If you not are extremely brain-death you can remember that the applet is running at our computer. Yes, our own computer. So we have full access to the applet. The Java applet works somewhat like Javascript does. When the browser sees Javascript, it handles it and executes it. It's the same with Java, but instead of executing it, it sends it to the Java machine, which is communicating with the browser, and executing the Java source. The Java source is fully available, but still not. It's compiled into class files, which only the Java machine can handle. Not good, eh? Then it's good there's something called decompilers (like Lop also pointed out.)
The Java class-files is usually saved in so-called cabinet files (*.cab), which is on the server. F.ex. on Yahoo!'s server. As I said, it's like Javascript, so you're able to download this cabinet file (it's basically just a RAR-compressed file, so it's easy to get its content.) When that is done, you end up with a lot of class files. You've to decompile those, and then you'll end up with a complete Java sourcecode (depends on the quality of the decompiler.)
Now you probably have the ****tiest job in front of you. You've to read through the sourcecode to find the encryption algorithm. But it's sometimes easy to find. When you're playing the game, then there's usually some kind of message, or other stuff that could lead you some where, f.ex. "Loading..." which maybe could lead you to the place where it communicates with the server - which means it encrypts messages and sends them. Then you just have to move backward.
When you've got the encryption algorithm, you can implement it in your own application, or whatever you want to. So let's say you want to make an application which receives and sends messages. You've to connect to the server on the right port (if you have problems finding it, look in the source) and then encrypt the messages and sent them, or decrypt them if you want to receive.
Have in mind that it probably isn't messages like "Do this and that" you're receiving, it could be something like "x 1, 1" which actually meant "Go to position 1 at x-axis and 1 at y-axis." To deal with this problem, you've to look at the sourcecode again. Somewhere you'll found the different messages, and such.
You've to remember one important thing; this is cracking and is illegal. So you've to do this on your own risk. But good luck, if you really want to try.
I think that answered your question as well, Jordan.
|