Jump to content

Recommended Posts

Posted

So long story short ever since L2 Revolution came out i couldn't stop thinking how good the game would be if it didn't have the restrictions and the paywalls it has.

 

I've been working on creating the login server and after a lot of decompiling and tests i was able to replicate the login process outside of the application programmatically .

It is just a simple back end forth over simple SSL and it happens as part of the java side of the app so i was able to emulate it because i decompiled the APK.

 

The gameserver connections is a TCP socket connection over the 12000 port. The problem is that the payload of the packets is encrypted (ofc) but the whole decryption thing happens inside the UE4 side of the app and im not good with encryption so I don't know how to find the key. I would assume that a key is being exchanged during the login but there was nothing i could find.

 

Anyone tried to do something similar or anyone good with packets and encryption?

 

Thanks

 

Posted

You read my mind or what? ;p
I was searching yesterday if there is any private server for L2Revolution, it is indeed a great game, but after playing on the US or UK servers don't really remember waiting for the EU version i felt it was way harder than it was, i guess it's because it's a new server but still, the way the worked on the EU server made it really hard to play, you have to pay in order to get some assist or if you're not willing to pay you have to wait some times 24h to reload the daily-weekly quests, dungeons etc so you can achieve the next level required to start the next quest, meaning if you want to play for hours you simply can't without the boost on elite dungeon, the dungeons and the quests it's a waste of time trying to exp on zones you gonna need like 4,5 hours for 10,15%?!?!. From my point of view it's kinda easier to play on the Official on PC than on mobile which shouldn't be that hard with a 130 maximum level cap.

Posted (edited)

Haven't validated that yet, but asymmetric encryption for packets sounds bad. public key cryptography seems is slow and packets on TCP need to be lightning fast. Could be wrong tho. I ain't experienced in game development at all.

Edited by .Elfocrash
Posted
24 minutes ago, .Elfocrash said:

Haven't validated that yet, but asymmetric encryption for packets sounds bad. public key cryptography seems is slow and packets on TCP need to be lightning fast. Could be wrong tho. I ain't experienced in game development at all.

if it's  asymmetric encryption then there must be a packet that exchanges encryption key where you can replace and initiate a new key pairs , it must be sent at the very beginning , and if it's symmetric encryption then there must be somewhere in apk where encrypt data and this is where you can reverse the algorithm and emulate, if you have this files lemme take a look  

Posted

Exactly what Sdw said basically.

 

I packaged some points of interest from the APK. If you wanna dig around you can download them here:

http://www.mediafire.com/file/nf4ito90fhl4vbo/l2revonetwork.zip

 

There is a network folder in there but im not 100% sure if that is the socket code that the game itself is using.

Posted (edited)
19 minutes ago, Sdw said:

Too bad I won't have the time but it seems REALLY straightforward to handle

If that's what the game itself is using then yeah

 

SessionNetwork.java seems to be containing all the encryption info as it is getting iv key and salt from the server

Edited by .Elfocrash
Posted
On 21.11.2017 at 4:13 PM, .Elfocrash said:

So long story short ever since L2 Revolution came out i couldn't stop thinking how good the game would be if it didn't have the restrictions and the paywalls it has.

 

 

You should be aware modified app like that will never be accepted to play store and it would be very hard to get any players while not being listed :/

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.



  • Posts

    • L2JMobius C1 System C1 + bonus textures C3 for C1 https://www.mediafire.com/folder/6oh7l7hf34xr9/C1
    • https://prnt.sc/Bkkc0ShGXv9m https://prnt.sc/-JFLvZXsn27A
    • Hello guys want to sell adena in L2 Reborn Signature x1  Stock =14kk good price 
    • Hi guys, I have the following problem, I want to set up two servers on the same dedicated server and I can't.   L2jacis 409 Linux Server. The first gameserver has the following configuration: # ================================================================ # Gameserver setting # ================================================================ # This is transmitted to the clients, so it has to be an IP or resolvable hostname. If this ip is resolvable by Login just leave * Hostname = 190.25.103.103 # Bind ip of the gameserver, use * to bind on all available IPs. GameserverHostname = * GameserverPort = 7777 # The Loginserver host and port. LoginHost = 127.0.0.1 LoginPort = 9014 # This is the server id that the gameserver will request. RequestServerID = 1 # If set to true, the login will give an other id to the server (if the requested id is already reserved). AcceptAlternateID = True UseBlowfishCipher = True # ================================================================ # Database informations # ================================================================ URL = jdbc:mariadb://localhost/server1 Login = server1 Password = server1 I configured the second gameserver like this:   # ================================================================ # Gameserver setting # ================================================================ # This is transmitted to the clients, so it has to be an IP or resolvable hostname. If this ip is resolvable by Login just leave * Hostname = 0.0.0.0 # Bind ip of the gameserver, use * to bind on all available IPs. GameserverHostname = * GameserverPort = 7788 # The Loginserver host and port. LoginHost = 127.0.0.1 LoginPort = 9014 # This is the server id that the gameserver will request. RequestServerID = 2 # If set to true, the login will give an other id to the server (if the requested id is already reserved). AcceptAlternateID = True UseBlowfishCipher = True # ================================================================ # Database informations # ================================================================ URL = jdbc:mariadb://localhost/server2 Login = server2 Password = server2 apart from having tested 0.0.0.0 on the second gameserver I also tried 127.0.0.1 In both cases I see the two servers in the login when I log in, but I try to enter the one with the lowest ping and it kicks me out. The other server always appears with ping 9999 and I try to enter but it doesn't do anything and it freezes the login so I have to log in again. The hexids are in their respective folders. For server 1, it has its hexid inside the gameserver config folder, and I checked that the hexid id is the same id, for example id 1 in the gameserver is also id1 for server 1, and hexid 2 has its hexid 2 for server 2. The server ports are open and listening when I turn on both gameservers. I really don't know what could be wrong. If you could give me some help I would appreciate it. Excuse my English.
  • Topics

×
×
  • Create New...