Welcome!

Join our community of MMORPG enthusiasts and private server developers! By registering, you'll gain access to in-depth discussions on source codes, binaries, and the latest developments in MMORPG server files. Collaborate with like-minded individuals, explore tutorials, and share insights on building and optimizing private servers. Join us today and unlock the full potential of MMORPG server development!

Join Today!

May I know information about the l1j(lineage 1) 2.7 client launcher?

Newbie Spellweaver
Joined
Jan 26, 2021
Messages
7
Reaction score
0
Hi, I was going to refer to the GitHub code here, but I don't have knowledge of the Win32 API, so it's hard to understand. Also, the 2.7 client I have doesn't have a Login.dll file, so I don't think Injection will be possible. I want to develop a connection launcher with C#, can anyone help me?
 
How do you normally start the lineage2 client?
Does it use a parameter?
Are players going to login "in the game" or "from the launcher"?

, if I understand this correctly, it starts the game using some sort of Parameter using IP Address & Port.
Then the launcher tries to suspend the login method and injects the login.dll.
And When the game client is running, the launcher patches the game's memory to block Gameguard from executing.
Maybe building the project file creates the dll.
 
How do you normally start the lineage2 client?
Does it use a parameter?
Are players going to login "in the game" or "from the launcher"?

, if I understand this correctly, it starts the game using some sort of Parameter using IP Address & Port.
Then the launcher tries to suspend the login method and injects the login.dll.
And When the game client is running, the launcher patches the game's memory to block Gameguard from executing.
Maybe building the project file creates the dll.
Thank you for your detailed answer. I'm analyzing the source code of the GitHub address I mentioned earlier and I think I found a clue, so I'm proceeding with R&D :)

Unfortunately, I don't understand the below very well. Please advise if you know.. 😭

C#:
Lineage.cs [124 line]

// Needed to get the lance master poly working properly
var zelgoPak = File.ReadAllBytes(Path.Combine(clientDirectory, "zelgo.pak"));
Win32Api.WriteProcessMemory(hndProc, (IntPtr)0x004B6CE0, new byte[] { 0xEB }, 1, 0);
Win32Api.WriteProcessMemory(hndProc, (IntPtr)0x00504538, zelgoPak, (uint)zelgoPak.Length - 1, 0);
Win32Api.WriteProcessMemory(hndProc, (IntPtr)0x006DA508, new byte[] { 0x0F, 0x27 }, 2, 0);
Win32Api.ResumeThread(hndProc);
 
Last edited:
With the comment, the launcher patches one of the pak files.
Im not sure why they are doing it this way where it can be fixed IF they have access to the pak file directly. (like opening it and fix the broken file inside it)
So, the launcher now starts the game properly and look for the game window/process and patch it via memory write.
0x004B6CE0 and so on are memory address.
The problem here is that when you use different client, for sure these addresses are dynamic.
It feels like this launcher is like a game hacking tool tbh. xD

By the way, are there any simplistic launcher that does not do these complicated stuff?
Perhaps thats where you should start.

Also, in if this actually works, try to make an editor for the pak files and generally fix what file is broken (that the launcher tried to patch). In this way, you dont need to memory hack the game client.

Edit: The comment says "Get the lance master poly working", so I assume its one of the meshes / models inside Zelgo.pak that needs to be fixed.

P.S. I have no idea how Lineage works so Im just basing my reply from the sources.
 
Last edited:
Back