Most visitors online was 17251 , on 24 May 2024
Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!
Join Today!@ s0m3one and whomever else, I searched my archive database and these are the only LC clients I have, would any interest you for testing?
Also, do we have a close idea of the date of the server files and what region it was compiled for?
AquaLung
.
Back home finally i can start working on this!
But first i have to get my loginserver cracked to allow all regions
goto offset 6BAA and replace '0F 84' with '90 E9'
td.AddByte(0x07);
td.AddByte(0x01);
td.AddByte(0x00);
[COLOR=DarkOrange]td.AddInt32(CharID);[/COLOR]
[COLOR=YellowGreen]td.AddString(CharName);[/COLOR]
td.AddByte(0x00);
[COLOR=Blue]td.AddByte(CharClass);[/COLOR]
[COLOR=Lime]td.AddByte(CharJob);[/COLOR]
[COLOR=YellowGreen]td.AddByte(CharHair);[/COLOR]
[COLOR=Red]td.AddByte(CharFace);[/COLOR]
[COLOR=Indigo]td.AddFloat(LocX);[/COLOR]
[COLOR=Teal]td.AddFloat(LocZ);[/COLOR]
[COLOR=DarkOliveGreen]td.AddFloat(LocH);[/COLOR]
[COLOR=Blue]td.AddFloat(LocR);[/COLOR]
td.AddByte(0x00);
[COLOR=Sienna]td.AddInt32(CurHP);[/COLOR]
[COLOR=DarkOrange]td.AddInt32(MaxHP);[/COLOR]
td.AddByte(0x00);
td.AddByte(Sitting);
[COLOR=Lime]td.AddInt32(GoodEvil);[/COLOR]
td.AddByte(0x00);
td.AddByte(0x00);
[COLOR=Magenta]td.AddInt32(Shirt_ID);[/COLOR]
[COLOR=SandyBrown]td.AddInt32(Shirt_Upgrade);[/COLOR]
[COLOR=Magenta]td.AddInt32(Weapon_ID);[/COLOR]
[COLOR=SandyBrown]td.AddInt32(Weapon_Upgrade);[/COLOR]
[COLOR=Magenta]td.AddInt32(Pants_ID);[/COLOR]
[COLOR=SandyBrown]td.AddInt32(Pants_Upgrade);[/COLOR]
[COLOR=Magenta]td.AddInt32(Shield_ID);[/COLOR]
[COLOR=SandyBrown]td.AddInt32(Shield_Upgrade);[/COLOR]
[COLOR=Magenta]td.AddInt32(Gloves_ID);[/COLOR]
[COLOR=SandyBrown]td.AddInt32(Gloves_Upgrade);[/COLOR]
[COLOR=Magenta]td.AddInt32(Boots_ID);[/COLOR]
[COLOR=SandyBrown]td.AddInt32(Boots_Upgrade);[/COLOR]
07 01 00 [COLOR=DarkOrange]00 00 00 22[/COLOR] [COLOR=YellowGreen]78 63 76 62 63 78 76 62[/COLOR] 00
[COLOR=Blue]00[/COLOR] [COLOR=Lime]00[/COLOR] [COLOR=YellowGreen]01[/COLOR] [COLOR=Red]01[/COLOR] [COLOR=Indigo]00 c0 89 44[/COLOR] [COLOR=Teal]00 40 6d 44[/COLOR] [COLOR=DarkOliveGreen]00 c0 20 43[/COLOR]
[COLOR=Blue]00 00 00 00[/COLOR] 00 [COLOR=Sienna]00 00 00 b4[/COLOR] [COLOR=DarkOrange]00 00 00 b4[/COLOR] 00 00 [COLOR=Lime]00
00 00 00[/COLOR] 00 00 [COLOR=Magenta]00 00 00 02[/COLOR] [COLOR=SandyBrown]00 00 00 00[/COLOR] [COLOR=Magenta]00 00 00
0c[/COLOR] [COLOR=SandyBrown]00 00 00 00[/COLOR] [COLOR=Magenta]00 00 00 03[/COLOR] [COLOR=SandyBrown]00 00 00 00[/COLOR] [COLOR=Magenta]ff ff ff
ff[/COLOR] [COLOR=SandyBrown]00 00 00 00[/COLOR] [COLOR=Magenta]00 00 00 04[/COLOR] [COLOR=SandyBrown]00 00 00 00[/COLOR] [COLOR=Magenta]00 00 00
08[/COLOR] [COLOR=SandyBrown]00 00 00 00[/COLOR] 00 00 00 00 00 00 00 ff ff ff ff
00 ff ff ff ff ff ff ff ff 00 00 00 00 0a 00 00
00 00 00 00 01 81 00 00 00 79 00 00 00 00 00 11
01 00 00 00 08 1f 01 00 00 00 00 22 01 f4 c6 0d
33
Knows someone a good tutorial (or book) where i can learn how to debugg?
Im a noob in this section...
Hmm ok, i found something interesting which i wish i didn't found.
So i took the un-encrypted gameserver and sniffed the packet that the server sends to summon another player on the screen.
I compared that packet with the same packet i use in my emulator which uses a recent client.
What i found is that, (only showing the beginning of the packet since thats all that matters for now)
Take a look at the last part, where it tells what equipment the character to display is wearing.Code:td.AddByte(0x07); td.AddByte(0x01); td.AddByte(0x00); [COLOR=DarkOrange]td.AddInt32(CharID);[/COLOR] [COLOR=YellowGreen]td.AddString(CharName);[/COLOR] td.AddByte(0x00); [COLOR=Blue]td.AddByte(CharClass);[/COLOR] [COLOR=Lime]td.AddByte(CharJob);[/COLOR] [COLOR=YellowGreen]td.AddByte(CharHair);[/COLOR] [COLOR=Red]td.AddByte(CharFace);[/COLOR] [COLOR=Indigo]td.AddFloat(LocX);[/COLOR] [COLOR=Teal]td.AddFloat(LocZ);[/COLOR] [COLOR=DarkOliveGreen]td.AddFloat(LocH);[/COLOR] [COLOR=Blue]td.AddFloat(LocR);[/COLOR] td.AddByte(0x00); [COLOR=Sienna]td.AddInt32(CurHP);[/COLOR] [COLOR=DarkOrange]td.AddInt32(MaxHP);[/COLOR] td.AddByte(0x00); td.AddByte(Sitting); [COLOR=Lime]td.AddInt32(GoodEvil);[/COLOR] td.AddByte(0x00); td.AddByte(0x00); [COLOR=Magenta]td.AddInt32(Shirt_ID);[/COLOR] [COLOR=SandyBrown]td.AddInt32(Shirt_Upgrade);[/COLOR] [COLOR=Magenta]td.AddInt32(Weapon_ID);[/COLOR] [COLOR=SandyBrown]td.AddInt32(Weapon_Upgrade);[/COLOR] [COLOR=Magenta]td.AddInt32(Pants_ID);[/COLOR] [COLOR=SandyBrown]td.AddInt32(Pants_Upgrade);[/COLOR] [COLOR=Magenta]td.AddInt32(Shield_ID);[/COLOR] [COLOR=SandyBrown]td.AddInt32(Shield_Upgrade);[/COLOR] [COLOR=Magenta]td.AddInt32(Gloves_ID);[/COLOR] [COLOR=SandyBrown]td.AddInt32(Gloves_Upgrade);[/COLOR] [COLOR=Magenta]td.AddInt32(Boots_ID);[/COLOR] [COLOR=SandyBrown]td.AddInt32(Boots_Upgrade);[/COLOR]
As u can see there is nothing that defines which helmet a character is wearing. this is because in the old days helmets were never displayed.
Helmets were seen for the first time i think around the release of the 97 armor. (maybe earlyer for costumes but i forgot since its a long time ago)
So i think we are infact searching for to new clients.
For those who want to see for themselves :
Thats the packageCode:07 01 00 [COLOR=DarkOrange]00 00 00 22[/COLOR] [COLOR=YellowGreen]78 63 76 62 63 78 76 62[/COLOR] 00 [COLOR=Blue]00[/COLOR] [COLOR=Lime]00[/COLOR] [COLOR=YellowGreen]01[/COLOR] [COLOR=Red]01[/COLOR] [COLOR=Indigo]00 c0 89 44[/COLOR] [COLOR=Teal]00 40 6d 44[/COLOR] [COLOR=DarkOliveGreen]00 c0 20 43[/COLOR] [COLOR=Blue]00 00 00 00[/COLOR] 00 [COLOR=Sienna]00 00 00 b4[/COLOR] [COLOR=DarkOrange]00 00 00 b4[/COLOR] 00 00 [COLOR=Lime]00 00 00 00[/COLOR] 00 00 [COLOR=Magenta]00 00 00 02[/COLOR] [COLOR=SandyBrown]00 00 00 00[/COLOR] [COLOR=Magenta]00 00 00 0c[/COLOR] [COLOR=SandyBrown]00 00 00 00[/COLOR] [COLOR=Magenta]00 00 00 03[/COLOR] [COLOR=SandyBrown]00 00 00 00[/COLOR] [COLOR=Magenta]ff ff ff ff[/COLOR] [COLOR=SandyBrown]00 00 00 00[/COLOR] [COLOR=Magenta]00 00 00 04[/COLOR] [COLOR=SandyBrown]00 00 00 00[/COLOR] [COLOR=Magenta]00 00 00 08[/COLOR] [COLOR=SandyBrown]00 00 00 00[/COLOR] 00 00 00 00 00 00 00 ff ff ff ff 00 ff ff ff ff ff ff ff ff 00 00 00 00 0a 00 00 00 00 00 00 01 81 00 00 00 79 00 00 00 00 00 11 01 00 00 00 08 1f 01 00 00 00 00 22 01 f4 c6 0d 33
Given that dratan siege is working i think that we should look for a client that has dratan siege and the tomb of theo. (maybe strayana but doesn't have to) And the highest armor obtainable is 85-87. if it has the strayana caves, then its to new.
As u can see there is nothing that defines which helmet a character is wearing.
its imposible do change the sending packed by server with helmed information?
sure, server sends instandly "no helmed" but right packedsize, only an dummy cause i already think we should make the server campatiple with newer clients and don´t search an much older
if we have an newer cilient update shoult be easy with new content like items, sure its also easy with an older but much easyer with an newer
and update server with items, mobs, skills its pretty easy
~ILAN12346
Dear wizatek let's you do not make the emulators, I beg of you), tk the server better, and easier to finish it)
1)open engine.dll with PEiD
2)start the pluggin KANAL
3)Look at the DES [keyscroll] [char]
4)copy the addrees from the second reference to
5)open engine.dll with olly debugger
6)goto adress of the reference
7)scroll down 2 RETN
8)change the code with this
Code:104FEBD0 /$ 51 PUSH ECX 104FEBD1 |. 8B4C24 08 MOV ECX,DWORD PTR SS:[ESP+8] 104FEBD5 |. 53 PUSH EBX 104FEBD6 |. 55 PUSH EBP 104FEBD7 |. 56 PUSH ESI 104FEBD8 |. 8B01 MOV EAX,DWORD PTR DS:[ECX] 104FEBDA |. 8B51 04 MOV EDX,DWORD PTR DS:[ECX+4] 104FEBDD |. 57 PUSH EDI 104FEBDE |. C74424 10 080>MOV DWORD PTR SS:[ESP+10],8 104FEBE6 |. 5F POP EDI 104FEBE7 |. 8B4C24 14 MOV ECX,DWORD PTR SS:[ESP+14] 104FEBEB |. 5E POP ESI 104FEBEC |. 5D POP EBP 104FEBED |. 8951 04 MOV DWORD PTR DS:[ECX+4],EDX 104FEBF0 |. 5B POP EBX 104FEBF1 |. 59 POP ECX 104FEBF2 \. C3 RETN link by dsfgw patch
Second Method:
Open Engine.dll with an Hex Editor, search for 518B4C2408 hex values, copy the offset to the paper.
Open Engine.dll with OllyDbg Goto->expression, Calculate the address (10001000-1000+offset), use the code above.
Not working for me...
Lamesauce :blink:
Hmm ok, i found something interesting which i wish i didn't found.
So i took the un-encrypted gameserver and sniffed the packet that the server sends to summon another player on the screen.
I compared that packet with the same packet i use in my emulator which uses a recent client.
What i found is that, (only showing the beginning of the packet since thats all that matters for now)
Take a look at the last part, where it tells what equipment the character to display is wearing.Code:td.AddByte(0x07); td.AddByte(0x01); td.AddByte(0x00); [COLOR=DarkOrange]td.AddInt32(CharID);[/COLOR] [COLOR=YellowGreen]td.AddString(CharName);[/COLOR] td.AddByte(0x00); [COLOR=Blue]td.AddByte(CharClass);[/COLOR] [COLOR=Lime]td.AddByte(CharJob);[/COLOR] [COLOR=YellowGreen]td.AddByte(CharHair);[/COLOR] [COLOR=Red]td.AddByte(CharFace);[/COLOR] [COLOR=Indigo]td.AddFloat(LocX);[/COLOR] [COLOR=Teal]td.AddFloat(LocZ);[/COLOR] [COLOR=DarkOliveGreen]td.AddFloat(LocH);[/COLOR] [COLOR=Blue]td.AddFloat(LocR);[/COLOR] td.AddByte(0x00); [COLOR=Sienna]td.AddInt32(CurHP);[/COLOR] [COLOR=DarkOrange]td.AddInt32(MaxHP);[/COLOR] td.AddByte(0x00); td.AddByte(Sitting); [COLOR=Lime]td.AddInt32(GoodEvil);[/COLOR] td.AddByte(0x00); td.AddByte(0x00); [COLOR=Magenta]td.AddInt32(Shirt_ID);[/COLOR] [COLOR=SandyBrown]td.AddInt32(Shirt_Upgrade);[/COLOR] [COLOR=Magenta]td.AddInt32(Weapon_ID);[/COLOR] [COLOR=SandyBrown]td.AddInt32(Weapon_Upgrade);[/COLOR] [COLOR=Magenta]td.AddInt32(Pants_ID);[/COLOR] [COLOR=SandyBrown]td.AddInt32(Pants_Upgrade);[/COLOR] [COLOR=Magenta]td.AddInt32(Shield_ID);[/COLOR] [COLOR=SandyBrown]td.AddInt32(Shield_Upgrade);[/COLOR] [COLOR=Magenta]td.AddInt32(Gloves_ID);[/COLOR] [COLOR=SandyBrown]td.AddInt32(Gloves_Upgrade);[/COLOR] [COLOR=Magenta]td.AddInt32(Boots_ID);[/COLOR] [COLOR=SandyBrown]td.AddInt32(Boots_Upgrade);[/COLOR]
As u can see there is nothing that defines which helmet a character is wearing. this is because in the old days helmets were never displayed.
Helmets were seen for the first time i think around the release of the 97 armor. (maybe earlyer for costumes but i forgot since its a long time ago)
So i think we are infact searching for to new clients.
For those who want to see for themselves :
Thats the packageCode:07 01 00 [COLOR=DarkOrange]00 00 00 22[/COLOR] [COLOR=YellowGreen]78 63 76 62 63 78 76 62[/COLOR] 00 [COLOR=Blue]00[/COLOR] [COLOR=Lime]00[/COLOR] [COLOR=YellowGreen]01[/COLOR] [COLOR=Red]01[/COLOR] [COLOR=Indigo]00 c0 89 44[/COLOR] [COLOR=Teal]00 40 6d 44[/COLOR] [COLOR=DarkOliveGreen]00 c0 20 43[/COLOR] [COLOR=Blue]00 00 00 00[/COLOR] 00 [COLOR=Sienna]00 00 00 b4[/COLOR] [COLOR=DarkOrange]00 00 00 b4[/COLOR] 00 00 [COLOR=Lime]00 00 00 00[/COLOR] 00 00 [COLOR=Magenta]00 00 00 02[/COLOR] [COLOR=SandyBrown]00 00 00 00[/COLOR] [COLOR=Magenta]00 00 00 0c[/COLOR] [COLOR=SandyBrown]00 00 00 00[/COLOR] [COLOR=Magenta]00 00 00 03[/COLOR] [COLOR=SandyBrown]00 00 00 00[/COLOR] [COLOR=Magenta]ff ff ff ff[/COLOR] [COLOR=SandyBrown]00 00 00 00[/COLOR] [COLOR=Magenta]00 00 00 04[/COLOR] [COLOR=SandyBrown]00 00 00 00[/COLOR] [COLOR=Magenta]00 00 00 08[/COLOR] [COLOR=SandyBrown]00 00 00 00[/COLOR] 00 00 00 00 00 00 00 ff ff ff ff 00 ff ff ff ff ff ff ff ff 00 00 00 00 0a 00 00 00 00 00 00 01 81 00 00 00 79 00 00 00 00 00 11 01 00 00 00 08 1f 01 00 00 00 00 22 01 f4 c6 0d 33
Given that dratan siege is working i think that we should look for a client that has dratan siege and the tomb of theo. (maybe strayana but doesn't have to) And the highest armor obtainable is 85-87. if it has the strayana caves, then its to new.
Why did you attached The debugger to an active process, and searching into ntdll.dll module.
To change back to the Engine.dll module:
RightClick(on Cpu main Window)->view->module Engine.dll
Goto->Expression(or CTRL+G)
-----------------------------------------------
To start it all over:
File->Open->Engine.dll
Goto->Expression(or CTRL+G)
-----------------------------------------------
Thanx i now know where to go Into Engine.dll: