A fresh start...

08/24/2013 02:30 Healian#1
Well it has been a lot since the last time i visited this section... and i had a lot of free time practicing c# by programming small projects and small bots for browser based games, and i have to admit that it helped me a alot... actually it turned me from a very newbie to a someone who understands what is c# and what is all the thing is about, now i consider myself intermediate. However when it comes to MMORPG game bot programming or even private servers i feel myself very new again. I don't know where to start or what to learn more in order to get involved in creating private servers or bots for MMORPGs from scratch without having any outside help... [maybe a small collaboration on a project but i want to be able to handle things even if i were alone], i am very confused. But the one thing i am sure about is that i will find the best help to put me on the road here at epvp especially at the CO2 section where i knew a lot very talented programmers are in.
08/26/2013 16:09 Healian#2
i think i am not that sure :D
08/26/2013 21:21 diedwarrior#3
Grab a source, check how its done, mostly the socket/crypto is probably what you'll suffer with at first, but should be easy since you're not new to c#.
Albetros is a nice source.
08/27/2013 01:12 Healian#4
Quote:
Originally Posted by diedwarrior View Post
Grab a source, check how its done, mostly the socket/crypto is probably what you'll suffer with at first, but should be easy since you're not new to c#.
Albetros is a nice source.
i want to know how exactly they reversed the client encrypted packets, aslo how to hook any game client's connection to my custom proxy or server... ,the sockets are no problem for me at all.., also i want to know how to gain access to game memory to read write data, move a character or something. All that with a nice series of tutorials or even a detailed projects to examine on my own.

And thank you very much for your help... Albetros is an awesome project btw.

NB : don't provide me with a very wide subjects though, like learn assembly or what ever, you may say learn assembly by putting me at least at the beginning of the road.

Also i can use Cheat Engine to extract game info base addresses; However i have no clew how to get the character movement address from the memory using cheat engine or whatever...
08/27/2013 15:33 _DreadNought_#5
The packets are mostly "reversed" with a proxy. Refer to: [Only registered and activated users can see links. Click Here To Register...]

Hooking the games connection would normally be done by hooking the winsock connect() function - Now you can do it with C# and a nice lib, but I don't think anybodys released a system yet but you're best off doing it in C++ using Detours [Only registered and activated users can see links. Click Here To Register...] (If you also read the posts you'll see where I struggled a couple years back in achieving a connect() hook and manipulating the destination; and achieved it with thanks to Sparkie & Tane)
08/27/2013 17:34 Healian#6
Any more info ?. I don't want only conquer advice.. i need things that help me in general like the detours.
08/27/2013 18:01 Super Aids#7
As for hooking there is this as well:
[Only registered and activated users can see links. Click Here To Register...]
08/27/2013 23:59 Lateralus#8
Personally (and objectively), I find using a proxy to be extremely inaccurate in packet analysis. There's a ton of fields in packets that you can't get with a proxy alone (as the field may have a different value in rare circumstances, aka packet 2031 client->server). This is why most server sources have inaccurate information about packets. I can tell you, in the early versions of the client, there are maybe 5 truly useless fields in all of the packets, unlike what said sources may imply. What I'd suggest is learning how to reverse the client, since you can get every valid packet and subtype that the client processes and sends, along with the exact field offsets and sizes, and sometimes you can even figure out what they do. All of this without having to replicate sometimes complicated situations to analyze packets and subtypes you may or may not know exist, like in a proxy.

Unfortunately, I can't guide you on how to do this, because virtually every case is different, and it requires you to be able to read x86 assembly and know how to basically use a debugger. You could, of course, lame out and use a proxy (or worse, a source created by people who used a proxy to get packet information) like everyone else is suggesting, but if you want to do it right, then they're wrong.

I know that you said you don't want people to tell you to "learn assembly", but that's basically what you have to do, sorry. This goes for the crypto routines as well.
08/28/2013 02:45 Healian#9
Quote:
Originally Posted by Lateralus View Post
Personally (and objectively), I find using a proxy to be extremely inaccurate in packet analysis. There's a ton of fields in packets that you can't get with a proxy alone (as the field may have a different value in rare circumstances, aka packet 2031 client->server). This is why most server sources have inaccurate information about packets. I can tell you, in the early versions of the client, there are maybe 5 truly useless fields in all of the packets, unlike what said sources may imply. What I'd suggest is learning how to reverse the client, since you can get every valid packet and subtype that the client processes and sends, along with the exact field offsets and sizes, and sometimes you can even figure out what they do. All of this without having to replicate sometimes complicated situations to analyze packets and subtypes you may or may not know exist, like in a proxy.

Unfortunately, I can't guide you on how to do this, because virtually every case is different, and it requires you to be able to read x86 assembly and know how to basically use a debugger. You could, of course, lame out and use a proxy (or worse, a source created by people who used a proxy to get packet information) like everyone else is suggesting, but if you want to do it right, then they're wrong.

I know that you said you don't want people to tell you to "learn assembly", but that's basically what you have to do, sorry. This goes for the crypto routines as well.
So it is all about assembly if i want to create either good packet bot for a game or a memory based bot... Also if i fairly learned assembly, will i be able to start digging any game and be able to find my way creating a bot\private server for it ?

Quote:
Originally Posted by Super Aids View Post
As for hooking there is this as well:
[Only registered and activated users can see links. Click Here To Register...]
I have a small point of view about D. If you gonna waste your time learning a language like D so you better learn C++ because of it's huge field compared to that of D. IDK but it still a personal view...

Also what are the games i better start learning reversing on ? can you suggest me some ?. is it better to start on old games or what?
08/28/2013 03:22 Super Aids#10
Quote:
Originally Posted by Healian View Post
So it is all about assembly if i want to create either good packet bot for a game or a memory based bot... Also if i fairly learned assembly, will i be able to start digging any game and be able to find my way creating a bot\private server for it ?



I have a small point of view about D. If you gonna waste your time learning a language like D so you better learn C++ because of it's huge field compared to that of D. IDK but it still a personal view...

Also what are the games i better start learning reversing on ? can you suggest me some ?. is it better to start on old games or what?
LOL do you know anything about D? D is like C, C++ and C# mixed together into one language.
08/28/2013 04:18 Healian#11
Quote:
Originally Posted by Super Aids View Post
LOL do you know anything about D? D is like C, C++ and C# mixed together into one language.
see this, [Only registered and activated users can see links. Click Here To Register...]

I don't say that D language is bad or something because i never tried it but as i can see there is no/little field for D language in the real world... simply almost 80% of the jobs target C#, C++ or Java.
08/28/2013 05:02 Super Aids#12
It's referring to D1 and not D2 :)

And I would go indepth why I prefer D over C++, but too lazy to type that much now.
08/28/2013 06:12 Lateralus#13
Quote:
Originally Posted by Healian View Post
So it is all about assembly if i want to create either good packet bot for a game or a memory based bot... Also if i fairly learned assembly, will i be able to start digging any game and be able to find my way creating a bot\private server for it ?
Not technically. At least it's not all about assembly for a game that has been run into the ground like Conquer. Now for a game that hasn't been messed with much, you'll have to figure out a way to decrypt (unless there's no encryption at all [doubtful]) and analyze the packets. Whether or not you have to actually dig with a debugger is dependent on what you know how to do and how blatantly obvious the cryptography is. Furthermore, some executables are packed/protected, so you have to learn how to break those (and I've seen some ridiculously complicated packers) before you can really do anything at all.

I can tell you though, since I learned how to reverse, I can't go without it for this type of stuff. It's sad there are ~5 of us who are still "active" in the community who can actually reverse, because it's so damn useful. It's also not that hard - but it is tedious and requires a lot of patience. I'd highly advise you to learn the basic concepts of assembly programming, then take a look at lena151's tutorials for reversing (google it)... then practice, experiment, practice.
08/28/2013 15:59 _DreadNought_#14
Notice how I said 'mostly' use proxys to log the packets? that was because I knew Lateralus did it the awesome way :P
08/29/2013 02:52 Healian#15
Quote:
Originally Posted by Super Aids View Post
It's referring to D1 and not D2 :)

And I would go indepth why I prefer D over C++, but too lazy to type that much now.
I would love to be convinced to learn D over C++ as i realized that i will need C++ if i want to go for Memory Editing and staff... Also i want to know whether D , either 1 or 2, can give me a working career in some gaming industry or whatever because when i take a look anytime at any job it always requires C#, C++ or Java and i never heard about D :D