Why almost every emulators written in java? Why nobody use C#? Is c# unable to use to create emualtor for aion? I also checked your Aion Online Emulation Development Theory, and have some questions:
1 Encryption is needed from game directly, like without it game will not understand packets?
2 If game directly needed encryption does it mean anyone can send packets to server and controls it?
3 Is there any list describes packets name and also how to determine what is this packet do & what opcode belong what packet?
There has been a C# base started, you most certainly can use C# but then you are stuck running it on a windows machine which is more expensive to run in the cloud. The Java Code base is an old attempt at building a cross platform emulator that can run on any machine that supports java and their Java Virtual Machine(JVM).
People continue to develop the java code base because lack of coding knowledge and also worries about trying something new.
Rebuilding an emulator is actually pretty easy, if you don't care about instances and all the extra stuff that require custom code solutions.
With this all being said, the java code base is incredibly bloated and I don't recommend continuing to work on it as there are far better alternatives from an engineering point of view. This is just my opinion
1. There is a static key that is used on the login server to encrypt the first login packet SM_INIT, inside SM_INIT is the new blowfish key to use for the rest of the login packets the server receives and sends.
The game server creates a server key and a client key using a base integer and that base integer is then obfuscated and sent in the SM_KEY packet when the client connects to the game server for the first time.
The client and server can both encrypt and decrypt packets with a key they have both agreed on using.
2. You technically can MITM the SM_INIT when the server sends it to the client since you know the clients static key to decrypt it. You can also MITM the SM_KEY packet and de-obfuscate the base integer to create the initial client and server keys.
This becomes very complicated though especially on the game server side because you need to know which iteration of the base integer is being used in the key and with how fast packets get sent(20 or so just to enter game in a matter of a few seconds) it's a tough task as hacker to try match timings and hope you can catch up.
You also have the issue of needing to know what the packet data is as it's used to cycle the key in the decryption and replace it with the old key.
3. Not a public list that I know of, the values change based on what aion version you are using, for eg. I am building my emu using my 4.5.0.31 client from 2014 and the opcodes are not documented so I need to manually verify packet content and match up the opcodes. If you are just learning, it's best to start with a client that's documented and has a java emulator for it already so you can match the opcodes easily.
I tried it but im getting an error "replace me" the read thingy
Sorry, I don't modify my client so I am not sure how to switch models. I play with a clean 4.5 client.