Hi, I have been on this forum since late 2005 but I've been away for about a year now. I recently came back and wondered what had been changed since then server-client wise. It would be nice if someone could fill me in
5018( after blowfish was implented)
Alot of packets must of obviously been changed and some even added, no doubt about that, but how is it with like the Login sequence?
Has anything changed in the Login sequence?
Well there is a "new" password cryptography that you failed to mention about and it looks like 0x43e is a bit changed. I'm going to take a look at it in the morning, going to sleep now..
Well there is a "new" password cryptography that you failed to mention about and it looks like 0x43e is a bit changed. I'm going to take a look at it in the morning, going to sleep now..
thers Korv's wiki might be some help
the auth server still uses the old keys,then the blowfish-DH starts
there is a padding on the packets tqserver tqclient ****
and some random type garbage that might show up aswell
but now as for A complete list of changes,I dont know when you quit
Well there is a "new" password cryptography that you failed to mention about and it looks like 0x43e is a bit changed. I'm going to take a look at it in the morning, going to sleep now..
Allright so I got another problem now, I am trying to get my proxy to work with SocksCap so that I can force the connection from the Client to localhost.
This is my Idea:
Client 127.0.0.1 port: 2324(random) -> Proxy 127.0.0.1 port:5555, then process the information to AuthServer so, ExternalIpAddress(81.651.51.23) 2652(random) -> AuthserverIP(Let's say) 56.515.166.41(made up) 9958/9959
Allright so I got another problem now, I am trying to get my proxy to work with SocksCap so that I can force the connection from the Client to localhost.
Let's say I use the port 5555 and localhost for SocksCap settings.
Then I make the proxy listen on port 5555 at localhost. Bingo it opens a connection on port 5555 and then this is were I get stuck. Shouldn't the Client open up a random port on local host that then connects to SocksCap on localhost 5555 that would then process the information to the Proxy? And If so then I have an issue, I can't seem to get the Client to open up a connection :S. Do I have to process something from the authserver to the Client to make it open a connection?
Edit:
This is my idea of it
Client 127.0.0.1 port: 2324(random) -> Proxy 127.0.0.1 port:5555, then process the information to AuthServer so, ExternalIpAddress(81.651.51.23) 2652(random) -> AuthserverIP(Let's say) 56.515.166.41(made up) 9958/9959
So are the ports that I marked as random really random or is there something that decides what they should be?
SocksCap connects using a socks4/5 connection so there's usually extra headers in the packet, the thing to do is that you can hook the connect function in the client and make it connect to the proxy instead, in my proxy here's my hooked function
Basically if it tries to connect to any host with port 9959 (auth server), it connects to my proxy on port 9958 (the port that handles auth server requests) and if tries to connect to any host with port 5816 (game server) it connects to my proxy on port 5816.
Current auth server my proxy connects to is 208.96.34.46 : 9959
To get the game server ip you either get it from the authentication reply from the auth server or from the server.dat file.
SocksCap connects using a socks4/5 connection so there's usually extra headers in the packet, the thing to do is that you can hook the connect function in the client and make it connect to the proxy instead, in my proxy here's my hooked function
Basically if it tries to connect to any host with port 9959 (auth server), it connects to my proxy on port 9958 (the port that handles auth server requests) and if tries to connect to any host with port 5816 (game server) it connects to my proxy on port 5816.
Current auth server my proxy connects to is 208.96.34.46 : 9959
To get the game server ip you either get it from the authentication reply from the auth server or from the server.dat file.
Nice, what if I just want to use SocksCap, I could make it connect to port 5555, have a method in my Proxy that would reply to the client until the client sends the login 0x43e packet and process the packet to the Auth server at port 9959. Then I should recieve the Auth response 0x41f packet and I can read the IP and Port and proceed to connect to the Client?
Edit: God damn your way is waaaaayy better...
My concerns are can TQ Patch your method?
I mean in the long run, Sockscap or hooking to connect function?
Nice, what if I just want to use SocksCap, I could make it connect to port 5555, have a method in my Proxy that would reply to the client until the client sends the login 0x43e packet and process the packet to the Auth server at port 9959. Then I should recieve the Auth response 0x41f packet and I can read the IP and Port and proceed to connect to the Client?
Edit: *** **** your way is waaaaayy better...
My concerns are can TQ Patch your method?
I mean in the long run, Sockscap or hooking to connect function?
Well I hook the connect function by having the injected dll search for the address of the function so basically the dll should work on all patches, that's the function that gets the address
The Bloodshed Dev C++ project is attached if you want to change the ports you want to use.
So in conclusion, it's much more efficient and convenient to use the hooking method while also it being patch proof.
But I get address 1906985479. Is that correct?
If I call MyConnect function once, then it should hook on WS2_32.DLL, force it to redirect all 9958 and 5816 port connections to the desired ports/ IP that I've set in the MyConnect function.
Also the best part is, this doesn't even touch Conquer at all, basicly no TOS Violations.
If I said something incorrect, then please do correct me, thanks
Well you don't call MyConnect what you do is hook the function so when conquer calls connect, it calls MyConnect instead so what you need to do is that once the dll is injected you used the APIHook function to hook the connect function like this
Is there something not working with the Inject function? Because Conquer crashes when pressing on Login after injecting the DLL.
Could we talk on msn? If so PM me your mail. Thanks!
Edit: This would be alot easier if I was using c++, but I am pInvoking this for c#
If i had enough time to work on this.. anyhow in addition to Gabrola's technique (and since you are pinvoking to C#) you can:
1- Allocate space in conquer's p-memory
2- Write your delegate pointer to the allocated space ( Marshal.GetFunctionPointerForDelegate(Delegate d); )
3- Add some JMPs, OpenProcess, CreateRemoteThread and other win api used to call the delegate so that when conquer calls connect, your delegate gets called instead.
hope this helps.
UPDATE: by the way, the function doesn't do the same as Winject, this is basically a 'Thread' not a function to inject the dll
Mfg,
Nullable.
Ah ok. I am going to use the COM Interop method to call the function Inject(); in C#. I am also going to see if I can put something together in C# that would inject the dll, so that I don't have to use winject for that.
Edit:
Hey do you know what this would correspond to in C#?
Code:
*(PDWORD)&OrigConnect = APIHook(
The first part. Also is PDWORD a uint just like DWORD in c#?
Just trying to understand the code better. Not that familar with C++ xD
**** the code confuses me abit.. The function for APIHook has 3 arguments, (In C#) (UInt HookFunc, UInt MyFunc, UInt OrigFunc).
When this is called
D2NT 3.0 Barb Sequence 04/12/2010 - Diablo 2 - 1 Replies Kann man den so einstellen, dass er mit dem einen Slot teleportiert und Bo'd und mit dem anderen nur angreift?
Wäre ganz hilfreich
Base sequence patch 5226 04/08/2010 - CO2 Programming - 2 Replies Hello,
I thought I'd give it a try, but before I continue on pointess searching through executables, has anything changed? As in cryptography?
Thanks,
ImmuneOne.
Conquer 4267 Login Sequence 01/25/2010 - CO2 Private Server - 28 Replies Anyone remember it? Ive got to the game server and im receiving a 1010:137 Packet which is empty except for my Character ID, Ive tried the following:
Respond with identical packet - Displays interface, servername, cords 0,0, with the message "Logging into server.....please wait", opening interface panels scars the background.
Respond with 1010:74 packet - Nothing changes, remains with the black login screen, so im assuming that the client doesnt understand it at this version.
Respond...
Remove Death sequence 06/14/2009 - Conquer Online 2 - 2 Replies How do i remove the monsters right after they die. I would much rather them die and diapear rather that fall down and just lay there for a few seconds.
Thx
nid help with the sequence 03/09/2008 - Dekaron - 0 Replies i have this as a sequence for my 2mbot but it doesnt do anything?
SL(1000)
CN
MT(200,200)
MT(200,100)
CR
AT
MT(100,50)