[Question] Memory based bot. How to start?

08/26/2012 10:45 tanelipe#16
I found one project that I've done for memory related things (actual functionality). It's a DLL project so you would need to inject it to conquer.exe with some other program. It doesn't have much comments but it's shouldn't be that complicated. :P This code is however pretty outdated (1.5 years) so it won't work straight on.
08/26/2012 12:36 itachi26#17
Oh oh, that sounds like C++ source code! Very nice haha!

I will take a look, try to understand something. Thanks for your code!

[Only registered and activated users can see links. Click Here To Register...]
08/26/2012 13:04 *M*#18
Depending how complex you want it, you could just make the bot inside the client if you get proficient enough at ASM. At the end of the executable, and throughout the exe too there is dead code and free space. In this space you can make codecaves that you reroute the program flow to, execute your own code, then direct it back. It's probably the most fun thing I enjoy about reversing.

When I was playing I managed to squeeze in a basic bot that read the moblist for monsters listed in the chat box & attacked them, and pressed f1 if hp went below 500. That was about as far as I got but if I pushed on and found the free space, I could probably make a reasonably featured bot.
I've deleted my CO folder but I might still have the exe for you to look at, I will have a proper search once I manage to pull myself away from GuildWars 2 haha.

Also, I learned from leena's & other similar ollydbg tutorials, then just started using the knowledge in many different executables & figuring things out. Tuts4you & OpenRCE are great knowledge bases.
08/26/2012 13:36 itachi26#19
That's amazing... Really....

But WTF, a bot in ASM?! I'm crying while coding in C++, and you want me to code a bot into the .EXE, and in ASM?!
Seriously, I didn't start learning anything about ASM at the moment, I'm struggling with programming bases in C++ and my spare time is going away... That being said, I'm very curious to see how did you do, to make your bot in ASM, you must be strong.

Same picture for you (as the above) haha!
08/26/2012 14:10 *M*#20
You'd be surprised how easy it can be, when you write a bot in c++ or whatever your language of choice is you have to write you have to write a fair bit of code to even establish the base of your app, In asm you can just write small snippets of code so in some ways it's much easier, and since you're inside the exe, the data's all there and you don't have to worry about half the stuff you need for a standalone app, I'm pretty lazy so it works for me.
08/26/2012 15:37 itachi26#21
I'll have to work my ASM knowledge, seriously... Haha!

Well, thanks for your replies, all of you are helping me a lot. Now I should start to learn/read and doing some test, or I'll never get further...
08/29/2012 10:06 Nitroxide3#22
Quote:
Originally Posted by IAmHawtness View Post
[Only registered and activated users can see links. Click Here To Register...] is most likely some of the best reversing tutorials you'll find on the Internet.
This made my day.
08/29/2012 10:54 IAmHawtness#23
Quote:
Originally Posted by Nitroxide3 View Post
This made my day.
Please provide better ones then
08/29/2012 16:55 tanelipe#24
Here's a link to another set of reversing tutorials I found. I have not personally read through them, yet, so I don't know the quality but they seem to be appreciated.

[Only registered and activated users can see links. Click Here To Register...]

P.S I find Lena's tutorials to be rather good when starting reversing.
08/30/2012 16:58 tanelipe#25
*BUMP*

Out of curiosity I have downloaded the newest conquer client and updated the little project I sent you earlier. It's working currently. Please note that it only logs the packets and doesn't modify them in any way.

Hooking the send was easy since the packets are created on your client. I took a look at the server source posted by InfamousNoone to get the packet types (much easier this way to be honest).

Receiving was almost the same, I looked for 0x423 packet type being received and from there on I just had to find a good place to re-route the traffic to my functions :P (This took around 40-60 minutes~)

EDIT: The code isn't much commented so feel free to ask any questions
08/30/2012 17:23 itachi26#26
Quote:
(This took around 40-60 minutes~)
Guess that it's normal to don't find it after ten minutes of searching (my case) now... Haha !

Seriously, that's very cool you work put in it, I keep developing my game and learning C++, but I'm a noob so your code is very complicated for me. I won't be able to understand your code for the moment, but keep in mind your explanations and your source code for later.

Thanks again, it will be very useful for me!
08/31/2012 02:37 tkblackbelt#27
Also check out [Only registered and activated users can see links. Click Here To Register...] they have some asm and reversing videos.
08/31/2012 14:17 itachi26#28
Thank you for the youtube channel, I'll favorite that link also!

Thanks for all who replied and gave me so much informations. You're so cool! :)
09/02/2012 08:52 Silent-Death#29
Quote:
Originally Posted by tkblackbelt View Post
Also check out [Only registered and activated users can see links. Click Here To Register...] they have some asm and reversing videos.
i hate watching video tutorials on programming, it`s like watching flies fuck.. 58 minutes of that dude's distorted voice, wow, that`s the poor man's xanax..
10/24/2012 21:57 itachi26#30
Hello, back for new adventures.

I up that topic because I need an answer to my question, then I'll be able to keep my project workin'. The fact is, I don't have lots of time to code, so I don't have lots of time to make tests... I really hope that someone will help me...

I know how to find pointers with C.E. and how to reach statics adresses with my programm but the thing is, let's say that life points's static adress is : 0x45ABE698. That means that when I lunch one conquer, I'll just have to take a look there and I'll have my number of life points. But, what about two lunched conquer clients? They can't use the same static adress, no?

Any helps will be much appreciated! Thanks a lot!