How do you guys think is the best way to get stared into gaming bot development, memory editing, etc etc
How do you guys think is the best way to get stared into gaming bot development, memory editing, etc etc
Your question is awfully broad and its answer could fill textbooks. Could you provide details on what you already know / are capable of? Or limit what you'd like to learn first, ex:
- General bot AI
- Navigation systems
- Reading/writing game memory
- Executing game code via injection
- Finding addresses/patterns of game objects and functions
- REing structure of game objects and functions
- General low level programming knowledge
1: go find yourself a 64 bit memory editing library (or preferable get a 32bit wildstart client)
2: go in game and search up your current xp on cheat engine
3: go kill something
4: search current xp again
5: repeat 2-4 until 1 address is left
6: figure out what writes to it and go find that address in ida
7: simple math 2+2 = offset
8: read memory of playerBase + offset
9: voila bot
Skype: Argixx
Coding Experience: Java: 8 years, c++: 4 years, python: lolk, c#: might as well be java, AutoIt: 1 year
I think you're missing a step between 8 and 9...
In all seriousness though, I think it's probably better to focus on one part at a time. Finding memory addresses of key information can be fairly time consuming just by itself. That said, people like Midi12 have already done the work and shared the fruits of their labor.
[Once you have key addresses/offsets/patterns, one way or another]
The next step is creating a program which externally reads those addresses and constructs a local view of game data, especially a list of game objects, or inject into the game process so you can directly access the data.
There are a number of libraries that assist with reading/writing memory (and potentially boxing/unboxing types, depending on your language of choice), but on windows an external reader/writer is essentially just calling ReadProcessMemory and WriteProcessMemory. Write this yourself or use PyMem, GreyMagic, MemorySharp, etc etc.
Last edited by overture2112; 06-12-2014 at 08:14 AM.
Nope, he's missing step 0.
0. Learn a deep understanding of how memory is managed, how to interpret assembly, and try to understand why compilers do what they do (call conventions, etc.) - best way to learn this is to mess around with a native language, read books, etc.
If you can start interpreting functions in assembly (and pseudocode thanks to hex-rays guys,) then there won't even be a question of "how to find an offset". That will come with learning the essentials.
Fair point. Though instead of spending years slowly accumulating this, we can help direct people to particular topics and exercises.
Example:
I think one of the most useful exercises I've done is hand compiling some OOP c++ to MIPS (x86 will add needless complication your first time). Having a very solid understanding of vtables and dispatching is pretty handy, even with hex-rays.
There's a lot of useful things to know about memory, but I'm guessing a brief understanding of how virtual memory and thread local storage work will be sufficient for most simple things.
I agree about reading books & paper help alot ! It's also a lot of practice and you will still learn stuff during long time ! One word : Practice
I don't think there is such an exercise which explains the specific topics you need to start making a bot, hack, whatever. You're better off learning each individual topic from a guide or book (you don't have to master all of them.) Once you have sufficient knowledge on each subject you will be able to piece all of the information together to make a bot.
Despite what anyone says, making a GOOD bot requires dedication, not just to writing the code but dedication to learning. It's NOT an overnight journey by any means.
The areas I would recommend learning in order to get to bot-making:
1. Programming language. Preferably not a scripting language like AutoIt. I can personally tell you that road is not worth going down.
2. Memory management. How the stack and heap works, different calling conventions, different code sections, etc.
3. Assembly. This is a must-have for debugging and reversing.
4. Debugging. Find a debugger you like. The Cheat Engine debugger is a good start, but it's good to understand some more complex debuggers because they have a lot more to offer.
5. Reversing. Once you understand 2, 3 and 4 this will come pretty natural to you.
And, specifically for botting - there are so many options when it comes to automating gameplay, you'll have to look into this yourself:
1. AI. Behaviour trees and such.
2. Pathfinding. A* and Dijkstra seem to be the common ones.
Last edited by Jadd; 06-12-2014 at 09:20 PM.
Hey guys,
Being a C# programmer myself, I can relate to a lot of the questions that arise in terms of getting into bot development. The past year, the majority of my spare time has been thrown into this particular topic, and I would say that I have gotten a decent grasp of using Cheat Engines debugger to find memory addresses, and I have obtained a somewhat decent understanding of assembly. I consider myself able to understand everything, however I still need to take the next step which itself isn't obvious to me.
My question is; do you guys have any personal preferences regarding literature that covers memory management seeing that some of you have reached "the other side"? And do you have other recommendations or experiences that you want to share that could help me (and hopefully others) out in this particular scenario?
-B