Hello, I'd like to get started with memory editing in WoW. I'm knot entirely sure if this is allowed here, but where should a beginner start off? LIke hwo to hook processes, injecting your own functions, etc?
Hello, I'd like to get started with memory editing in WoW. I'm knot entirely sure if this is allowed here, but where should a beginner start off? LIke hwo to hook processes, injecting your own functions, etc?
first thing first, do you know a programming language? if no i would recomend you learn one first c# and c++ are both exelent choices but if you're a beginner i recomend c# because it's easy to get started with...
I know alot of Java, and I'm learning C++
Afaik java is "meh" for injection, memory reading and other related stuff...
Depending on how much c++ you know, it's probably a good idea to finish up the learning of the language first because i know from my own example that learning c# while also learning injection and so on have a pretty steep learning curve, yes it is possible just harder because not only do you need to figure out what the code does but also how it works...
at any rate just search the forum and look it through page by page, there is loads of info scatered around and it will take you time to find but it will be worth it
Assuming you know a programming language and have basic reversing knowledge.
As far as WoW goes:
- Object management. Learn how game objects are stored and structured. This includes but is not limited to: descriptor access (UNIT_HEALTH, UNIT_MANA), various struct access (MovementInfo, SpellCastInfo, Auras), calling (virtual) methods (GetName, GetPosition, UpdateDisplayInfo), ...
- Object iteration. Create a versalite objectmanager that allows you to easily query data from the world.
- Movement. Pick one, there's plenty of ways to move around in the world. Look into CTM, CInputControl and Intersect.
- Lua. Research how it works and how it's implemented into World of Warcraft. There's no need for you to reverse certain functions when you can just grab the return value of it's lua equivalent. (GetBattlegroundStatus, GetWeaponEnchantInfo,...)
- Varia: DBC access, Camera handling, Packet management, Events...
Create a solid framework prior to making a bot. It'll save you alot of time and increase the quality of your code.
Edit: and Java is "meh" for everything.
"Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live." - Martin Golding
"I cried a little earlier when I had to poop" - Sku
I should probably mention that the most elegant solution to that is:
1) Uninstall Linux
2) Install Windows
3) ?????
4) Profit
at least as far as the reversing goes afaik, although i suppose wine + ida could do the job and either just programming in c++ or c# with mono
Last edited by !@^^@!; 02-19-2010 at 02:47 AM.
AFAIK:
- IDA's Linux version is text mode.
- He already have Wine anyway (as he is running WoW), and IDA runs out of the box in Wine (only some tooltips don't work, nothing really serious).
BTW, I believe reversing under Linux is even easier than under Windows. I've not tested Windows debuggers under Wine (as I am not keen on debugging WoW on live servers and I am too lazy to set my own private server to do it), but I believe they should work, and you can also resort to debugging Wine itself with a Linux debugger. You can also use the WINEDEBUG variable to watch in real time WoW's usage of each and every windows DLL call, and if you are not afraid to compile Wine yourself you can even instrument Wine to extract whatever information you want (and that includes calling WoW functions, as Wine is already sharing WoW's process).
Besides, about every offset, structure and most methods you find on this forum will work "out of the box", and most that will not work are ones you won't need anyway
Apart from the obvious differences in compilers, you'll run into small difficulties.
Search the posts by sednogmah
Ok, once i get home i'll be able to try out ida