PWABS: Anti-Ban System (Pre-Release Thread)

02/22/2009 00:43 vuduy#16
When you finish your project, you will see what I mean about AI...
An example... say a group of players come near your character. One started to say "Hi <friend name>", your bot sees "Hi", then replies "Hello", even though that was not directed to you.

If you program the AI to only respond to your name, then sometimes people stop by and say "Hi" to you only (without your name, and you don't respond)... either way... words trigger won't do the job, it only exposes yourself as a bot more than hiding yourself.

As to the source codes, I don't mind sharing my work with others; but one thing I do mind is that this forum is public and GMs may visit here to find counter measures against all our work.

Instead of me giving away the source code (which I probably won't), I will gladly answer specific questions; but please do try to do some research on your own first; I will only help you get the answer; I will not give you the answer.

Here's a screenshot of my chatlog monitor

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

Note: the squares are emote icons in the game; I didn't bother translate those.
02/22/2009 00:56 J250#17
Quote:
Originally Posted by vuduy View Post
When you finish your project, you will see what I mean about AI...
An example... say a group of players come near your character. One started to say "Hi <friend name>", your bot sees "Hi", then replies "Hello", even though that was not directed to you.

If you program the AI to only respond to your name, then sometimes people stop by and say "Hi" to you only (without your name, and you don't respond)... either way... words trigger won't do the job, it only exposes yourself as a bot more than hiding yourself.

As to the source codes, I don't mind sharing my work with others; but one thing I do mind is that this forum is public and GMs may visit here to find counter measures against all our work.

Instead of me giving away the source code (which I probably won't), I will gladly answer specific questions; but please do try to do some research on your own first; I will only help you get the answer; I will not give you the answer.
Thanks so much for this support!
As for the source, of course you wont share it, that goes without saying, as does the bit about me researching before asking questions.

It also gives me courage to know it has been done before, and is possible.
Also, there is a reason I have simplified the bot, because i'm sure GM's trawl these forums ;)
If I do make a special version of the bot which is much more complex, I shall only be releasing it to a certain few, sorry, but that's how it always is.

Thanks again,
J250
02/23/2009 12:06 kristkos#18
umm i whould like to add a thing btw XP
since on private servers aren't those populated and gm's tend to use alot the invizibility and like u say'd at a life triger point like "oh no i need pots" whouldn't it be weird for it to actually no one to be near you and u actually say that and with a invizible gm nearby?O ...lols and that chat is from celestial destroyer but it has the same basics as pw tho xP
a thingy will be nice to triger wich class is wich to set macros to ask for buffs :) and after the buffing to say "thank you" but after them lol xP
oh yeah and also gm's tend to teleport you alot xD so that thing sounds kinda scarry if u get into a densly populated town like ADC when there is alot of random chatter and it might triger at the same time like 20 lines for exemple
02/23/2009 15:33 Smurfin#19
Quote:
Originally Posted by vuduy View Post

Here's a screenshot of my chatlog monitor

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

Note: the squares are emote icons in the game; I didn't bother translate those.
it looks very nice vuduy, will you release it here ? what language is it, the gui looks good. Can we use it for chatting like in the game, because if we're botting the chat window is useless because of the bot spamming keysend.
02/23/2009 16:54 vuduy#20
The inputbox left to Clear/View/Delete is where you can type in text to send to the game if the game window is hidden. But you can also type text in the game window while the bot is running. There are no keypresses or mouse clicks. All botting functions are memory reading/writing.

Moving, targeting (full HP-mode), attacking, looting, meditating, and using skills are done purely by memory writing.

Mouse clicking is only used in buy/sell. But how often does your bot buy/sell so it shouldn't bother your in-game chatting.

The program is private and free for my guild only. I used C++/CLR (NET) to make it.
02/23/2009 17:03 Smurfin#21
that's very advanced! will you share the offsets or hint on how to do that, i mean for executing skills without sending keypress, you must have a lot of offsets collection, how you figure all that, i don't think it's possible using ce coz it has no value to search.

btw did you decompile element client.exe , is it possible ? just maybe we can check how things work in there
02/25/2009 16:33 BuBucekTop#22
Quote:
Moving, targeting (full HP-mode), attacking, looting, meditating, and using skills are done purely by memory writing.
Sounds great. The most interesting thing for me is how did you managed to make character move (or even gather resources) only by memory writes ??
Please give me some hints or klues. (PM is also wellcome =))
02/25/2009 21:05 J250#23
Hey all, screenshots are ready, i'll update the first post in a minute.

I have integrated basic support for "Custom_OffSets.ini" for all of your client integration needs, although edits may need to be made! (More to come on this soon)

Anyway, I have written a class that reads from & writes to a programs memory, and using static pointers I have done things like changed vista game scores, and got the element clients HP from a pointed I found with CE.
Now as you may have guessed, this is pretty useless as the pointers change every time you restart the client, which is why you use the base address and offsets.
But I cant seem to get how to use offsets!

This may be somewhat similar to C++ so others could be able to help me
Code:
                hparray = memory.ReadProcessMemory((IntPtr)BASE_ADDRESS, 4, out bytesread);
                HP = BitConverter.ToInt32(hparray, 0);
                HP += HP_OFFSET;
                hparray = memory.ReadProcessMemory((IntPtr)HP, 4, out bytesread);
                int value = BitConverter.ToInt32(hparray, 0);
                lblHP.Text = value.ToString();
That is an adaptation of some code I found on the internet with regards to adding an offset to a base address. Personally I don't think this makes sense at all, but I have no other examples to go by. I thought the final pointer was
BASE_ADDRESS + HP_OFFSET in hex, and I dont know how to do this! (Please excuse my uselessness!)
Any help greatly appreciated.

Another question, how are strings handled in pointers? because I have only ever done things with ints/longs/shorts and never strings. And of course for a chat hack string reading/writing in memory will need to be done!

A test would be to get the character name. How would I go about find my own string pointers and made them readable by an application?
Post any help in any language, I know basics of a fair few and might be able to convert things where appropriate

Progress: The whole base application (Objects/Classes/Save/Load) has been done, just need to add application handling

Thanks!
J250
02/26/2009 01:09 vuduy#24
Hmm... if you don't know basic pointers and offsets operations, this project will never be finished. Using offsets and pointers for names (strings), HP, MP and other basic information is a walk in the park compared to working with chat logs pointers and offsets.

Even commercial bot programmers could not get the chat logs offsets/pointers to work with, there is no way you can do it.

Perhaps you should do some basic bot programming project first.

Quote:
Sounds great. The most interesting thing for me is how did you managed to make character move (or even gather resources) only by memory writes ??
Please give me some hints or klues. (PM is also wellcome =))
There are many movement modes in the game. Normal movement mode (ie: by mouse click or keyboard), moving to attack target (ie: you hit a target but it's far away, so it moves toward it first), moving by follow (ie: auto follow), etc...

Each mode has its own offset and value. To move by memory writing, you first write in the parameters, then set the movement mode value.

Eg. for normal movement mode, you store the X,Y,Z coordinates in the parameters, set its flag, then write in the "Normal movement" mode value to the Current movement mode offset.
02/26/2009 10:25 J250#25
Quote:
Originally Posted by vuduy View Post
Hmm... if you don't know basic pointers and offsets operations, this project will never be finished. Using offsets and pointers for names (strings), HP, MP and other basic information is a walk in the park compared to working with chat logs pointers and offsets.

Even commercial bot programmers could not get the chat logs offsets/pointers to work with, there is no way you can do it.

Perhaps you should do some basic bot programming project first.
Thanks for the support... >.<
I know how they work, but not relative to C#, I was wondering if it had some in house hex operations or something, I suppose I shall google it some more or just make my own. Anyway, as for chat logs, as I say, I have some other developers helping me out on this, and it is not just me. I am writing the main application, but they shall help get pointers/offsets/etc. for the chat log system, in fact I beleive they already have. I just need some help encorporating them into the application.
Well, thats my two cents. I see your point of view, but as I said before, if it doesn't get finished, ill release the source for anyone else to takeup.
Thanks,
J250
02/27/2009 04:53 ezono42#26
this post is for the
"Your suggested features I shall add:" area i was thinking if you could have the script right unknown in game chat into a .txt file so user can set a user type of reply.
02/27/2009 11:02 J250#27
Quote:
Originally Posted by ezono42 View Post
this post is for the
"Your suggested features I shall add:" area i was thinking if you could have the script right unknown in game chat into a .txt file so user can set a user type of reply.
Sorry, I don't quite understand what you mean. Do you mean it should create a log of chat in a .txt file?
Or have a box in the application where that you can use to type a reply?
Sorry if there is something i'm missing...
Thanks,
J250
03/04/2009 05:22 xavierboi#28
next time pls make a config for us so we can all save the trouble of setting it
thx
03/04/2009 10:44 Smurfin#29
look interesting j250, hope you provide custom text for the messages to send in the chatbox.
07/10/2009 13:39 mlota#30
Quote:
Originally Posted by J250 View Post
Hey all, screenshots are ready, i'll update the first post in a minute.

I have integrated basic support for "Custom_OffSets.ini" for all of your client integration needs, although edits may need to be made! (More to come on this soon)

Anyway, I have written a class that reads from & writes to a programs memory, and using static pointers I have done things like changed vista game scores, and got the element clients HP from a pointed I found with CE.
Now as you may have guessed, this is pretty useless as the pointers change every time you restart the client, which is why you use the base address and offsets.
But I cant seem to get how to use offsets!

This may be somewhat similar to C++ so others could be able to help me
Code:
                hparray = memory.ReadProcessMemory((IntPtr)BASE_ADDRESS, 4, out bytesread);
                HP = BitConverter.ToInt32(hparray, 0);
                HP += HP_OFFSET;
                hparray = memory.ReadProcessMemory((IntPtr)HP, 4, out bytesread);
                int value = BitConverter.ToInt32(hparray, 0);
                lblHP.Text = value.ToString();
That is an adaptation of some code I found on the internet with regards to adding an offset to a base address. Personally I don't think this makes sense at all, but I have no other examples to go by. I thought the final pointer was
BASE_ADDRESS + HP_OFFSET in hex, and I dont know how to do this! (Please excuse my uselessness!)
Any help greatly appreciated.

Another question, how are strings handled in pointers? because I have only ever done things with ints/longs/shorts and never strings. And of course for a chat hack string reading/writing in memory will need to be done!

A test would be to get the character name. How would I go about find my own string pointers and made them readable by an application?
Post any help in any language, I know basics of a fair few and might be able to convert things where appropriate

Progress: The whole base application (Objects/Classes/Save/Load) has been done, just need to add application handling

Thanks!
J250
Hi J250, any progress?
I am developing in C # too, with a code similar to yours. I have thevalues of 'baseaddress' and 'offset', but they don't work. How do you it?