Prerequisite knowledge for the creation of a decent proxy-based bot.

10/08/2013 09:06 DeathByMoogles#1
Before you ask, yes, I have read the sticky, as well as the publicly available information about the subject. I am curious to know though, what exactly I should be thoroughly familiar with in order to be able to put together any kind of decent proxy-based bot (something along the lines of SirHooks, RIP Clinton). A general overview, or any information at all, would be much appreciated.

Thank you,
DBM
10/08/2013 19:43 Smaehtin#2
Quote:
Originally Posted by DeathByMoogles View Post
(something along the lines of SirHooks, RIP Clinton).
What? Clinton didn't die...
10/08/2013 21:54 DeathByMoogles#3
Quote:
Originally Posted by Smaehtin View Post
What? Clinton didn't die...
No, but he quit actively developing for CO.
10/08/2013 22:16 pro4never#4
Ollydbg/Reverse engineering
General knowledge of cryptography
General knowledge of networked communications (sockets, packets, etcetc)
Strong logical thinking (creating bot logic, reverse engineering game systems and hack protection, etc)
Intermediate programming skills in any programming language. C++, C#, Java, etcetc are all just fine. I do not recommend trying with any 'scripting' languages as they will be more trouble then they are worth.


All of the existing guides and open source proxies (such as my proxy paradise tutorials) are all still relevant but you now need to be able to do the digging to update them. This means reverse engineering and ollydbg experience to get yourself the required information to update the projects or use them as a template for your own project.
10/09/2013 04:50 DeathByMoogles#5
Thanks, P4N, much appreciated. *Sigh* I guess I'm off to learn Assembly, and then enhance C++/C# skills. Long journey ahead...
10/09/2013 08:00 nicolastyler#6
Quote:
Originally Posted by DeathByMoogles View Post
Thanks, P4N, much appreciated. *Sigh* I guess I'm off to learn Assembly, and then enhance C++/C# skills. Long journey ahead...
Assembly is not required, although it can be useful. and you don't need to know c++ and C#, just one is good enough. They can both do the job.
10/09/2013 13:03 Smaehtin#7
Quote:
Originally Posted by DeathByMoogles View Post
No, but he quit actively developing for CO.
Oh, right. By the way, SirHooks wasn't a proxy at all, it was a memory-based bot, hence the "Hooks" in the name :p.
10/09/2013 23:01 DeathByMoogles#8
Quote:
Originally Posted by nicolastyler View Post
Assembly is not required, although it can be useful. and you don't need to know c++ and C#, just one is good enough. They can both do the job.
Really? I was under the impression that in order to become proficient in OllyDbg and packet manipulation one had to have an elementary knowledge of inline ASM in order to fathom what exactly it is one is looking at. I wouldn't know though, so I could be completely mistaken.
As for C++/C#, I meant to reference them in an either/or fashion. My apologies, I suppose I should have made that more clear.

Quote:
Originally Posted by Smaehtin View Post
Oh, right. By the way, SirHooks wasn't a proxy at all, it was a memory-based bot, hence the "Hooks" in the name :p.
Really? I actually find that quite surprising. I assumed it had to be a proxy because I have never encountered a memory-based bot that was able to attack as fast as SirHooks. Did it store the monsters' coordinates in some kind of array and then iterate through it? Always was curious about the secret to its speed...
10/09/2013 23:07 pro4never#9
Quote:
Originally Posted by DeathByMoogles View Post
Really? I actually find that quite surprising. I assumed it had to be a proxy because I have never encountered a memory-based bot that was able to attack as fast as SirHooks. Did it store the monsters' coordinates in some kind of array and then iterate through it? Always was curious about the secret to its speed...


Just because it's memory based doesn't mean it's more limited.

Hook based bots do everything proxies do without having to fiddle with encryption at all. I'd actually suggest hooking the send/receive function of the client and tada! You have a fully working packet sniffer which can then be used to spoof packets to the client or to the server (exactly what a proxy does)


You can also read or control the client through extra hooks but they are all optional and for simplicity sake and not actually required.


I suggest looking at the existing frameworks as a guideline of how bots CAN work but there's no reason to not go with a hook based approach.


Quote:
Originally Posted by nicolastyler View Post
Assembly is not required, although it can be useful. and you don't need to know c++ and C#, just one is good enough. They can both do the job.
Without a decent knowledge of assembly how are you going to reverse engineer anything? Olly is useful for breakpointing and tracking down things but you still need to know what you're looking at if you want to re-write it or reverse engineer it.

This is even more important if you want to move towards a proxy based approach where you'll be required to reverse engineer much of the clients protection as well as cryptography.
10/10/2013 00:30 phize#10
Quote:
Originally Posted by pro4never View Post
Just because it's memory based doesn't mean it's more limited.

Hook based bots do everything proxies do without having to fiddle with encryption at all. I'd actually suggest hooking the send/receive function of the client and tada! You have a fully working packet sniffer which can then be used to spoof packets to the client or to the server (exactly what a proxy does)


You can also read or control the client through extra hooks but they are all optional and for simplicity sake and not actually required.


I suggest looking at the existing frameworks as a guideline of how bots CAN work but there's no reason to not go with a hook based approach.




Without a decent knowledge of assembly how are you going to reverse engineer anything? Olly is useful for breakpointing and tracking down things but you still need to know what you're looking at if you want to re-write it or reverse engineer it.

This is even more important if you want to move towards a proxy based approach where you'll be required to reverse engineer much of the clients protection as well as cryptography.
It isn't all that simple now with the increased "security". You have to know how to deal with their anti-cheat system or you will just get banned. So you can't use traditional hooks (unless you manage to disable their AC).
10/10/2013 01:16 pro4never#11
Quote:
Originally Posted by phize View Post
It isn't all that simple now with the increased "security". You have to know how to deal with their anti-cheat system or you will just get banned. So you can't use traditional hooks (unless you manage to disable their AC).
Which is why I suggested a decent background in assembly and reverse engineering.


The same could be said about proxies as you still need to override certain client functionality via hooks to set the login server IP. I'd assume the same protection would get you banned for using coloader in new patches.
10/10/2013 06:47 DeathByMoogles#12
Quote:
Originally Posted by pro4never View Post
Which is why I suggested a decent background in assembly and reverse engineering.


The same could be said about proxies as you still need to override certain client functionality via hooks to set the login server IP. I'd assume the same protection would get you banned for using coloader in new patches.
Oh joy, sounds like I have a lot of fun ahead of me...

Anyways, thank you all for the responses so far! They are much appreciated.

Edit: I found this, could any of you more experienced coders tell me whether or not this will be helpful?
[Only registered and activated users can see links. Click Here To Register...]

Edit2: Would appreciate any links/ebooks that deal specifically with game networking/client-server packets and reverse engineering. These would help me tremendously!

Edit3: Also, my attempts to resend basic packets (e.g. saying "test", jumping once) all end in immediate disconnects, leading me to believe I'm going to have to hook into the client or route my connection through a proxy in order to run even basic tests. Oh joy, once more.