Valhalla Legends Forums Archive | Battle.net Bot Development | A "newb" programmer.

AuthorMessageTime
FaDeS
Yes, I am a newb programmer... I recently went out and bought Visual Studio, and have a few questions about Battle.net chat client creation. First, is C++, or VB6 a better platform? I have heard both ways, but those on these forums seem to be the authority on the matter...

Second, do you have any tips? I have limited, *limited* knowledge of VB6, and none of C++, so far... But I am teaching myself VB through a few books, and websites with tutorials/ code samples.

Thanks for the read!
January 30, 2005, 12:54 AM
Twix
You should probley learn the language befor you try and make a bot and get a name for yourself and try to learn winsock to avoid using csb
January 30, 2005, 1:08 AM
FaDeS
Thanks! I now have to read the entire "Visual Basic 6 for Dummies" book... And figure out what it means. Then Winsock... Man, so I have a solid month of work ahead of me, then I will make a newb ops bot, fix it, then it will be relatively decent!
January 30, 2005, 1:16 AM
R.a.B.B.i.T
I'd recommend doing something NOT BNCS first, like all the basic crap (it sucks, but it helps).  Then you should probably do a telnet connection to Battle.Net before using the binary protocol.
January 30, 2005, 3:31 AM
Newby
[quote author=rabbit link=topic=10362.msg97359#msg97359 date=1107055886]
I'd recommend doing something NOT BNCS first.
[/quote]
I recommend doing something NOT BNET related at all altogether.

Programming for Battle.net is a waste of time. You people who don't think it is will find that out sooner or later.
January 30, 2005, 3:32 AM
R.a.B.B.i.T
Yeah...I've pretty much given up on BNET altogehter.  I meant that if he really wanted to do a bot, he should do telnet as opposed to BNCS first.
January 30, 2005, 3:40 AM
shout
The only reason I am making a bnet bot is to put a more solid foot in coding.
January 30, 2005, 8:24 AM
Adron
[quote author=Newby link=topic=10362.msg97360#msg97360 date=1107055966]
Programming for Battle.net is a waste of time. You people who don't think it is will find that out sooner or later.
[/quote]

But then, everything is a waste of time, so you might as well waste it on something you enjoy ;)
January 30, 2005, 12:57 PM
UserLoser.
[quote author=Newby link=topic=10362.msg97360#msg97360 date=1107055966]
[quote author=rabbit link=topic=10362.msg97359#msg97359 date=1107055886]
I'd recommend doing something NOT BNCS first.
[/quote]
I recommend doing something NOT BNET related at all altogether.

Programming for Battle.net is a waste of time. You people who don't think it is will find that out sooner or later.
[/quote]

You kids and your wastes of time for this and that for Battle.net.  Who cares if it is? Even though most "good" bots have a combination of many skills for programmers...  Networking, (G)UI, databases, file i/o, graphics, algorithms, images, encryption/decryption, compression/decompression, and the list can go on...  But hey, it's nothing special since it combines all these skills into one application.  Ohwell, they'll learn eventually
January 30, 2005, 2:09 PM
bethra
Ok wait a second, it is a waste of time?

Well I see learning more about programming and stuff by making a bot, more educational than acutally sitting down and playing the game, Starcraft, Warcraft III w/e client.
January 31, 2005, 4:45 AM
Newby
[quote author=Adron link=topic=10362.msg97398#msg97398 date=1107089832]
[quote author=Newby link=topic=10362.msg97360#msg97360 date=1107055966]
Programming for Battle.net is a waste of time. You people who don't think it is will find that out sooner or later.
[/quote]

But then, everything is a waste of time, so you might as well waste it on something you enjoy ;)
[/quote]
You make a good point. I guess it's just an acquired taste? I just prefer to reverse programs and play around with them, making key generators / reversing algorithms in the program to form my own program that emulates it (sure, like a bot, but I'd rather do everything myself than read a protocol on how to) / patch it so it works the way I want it to.

And UserLoser, what happens if Battle.net throws in their server and no longer hosts the service? Your bot is just a waste of hard drive space at that point. Sure, it was a learning experience, but the end result is useless. What happens if they change the protocol massively and patch their games? Many of the users here will have NO clue what to fix, because they'll be waiting on a few key programmers to reverse the change and document it. If they even do document it.

And as for the list of things it provides, I'd go as far to say that 80% of the users here didn't reverse and/or write any of the algorithms used for decryption/encryption/decompression/compression, and probably the same number didn't figure out the protocol on its own.

Sure, you may say something like "If the functions are public, why re-invent the wheel?"

I'll bet that's what CSB users are saying. ;)

Meh, that's just my opinion anyways. Others may see bot programming as a valuable source to practice your programming skills (which it is, in a sense). I just see it as a waste of my time, which could be better spent. Sure, I may not be very good at reversing programs and writing software with the functions I reversed, but hey, practice makes perfect. I'm young, I've got a bit to go before I realize I should do something with my life. :)
January 31, 2005, 5:49 AM
OnlyMeat
[quote author=Newby link=topic=10362.msg97590#msg97590 date=1107150550]
[quote author=Adron link=topic=10362.msg97398#msg97398 date=1107089832]
[quote author=Newby link=topic=10362.msg97360#msg97360 date=1107055966]
Programming for Battle.net is a waste of time. You people who don't think it is will find that out sooner or later.
[/quote]

But then, everything is a waste of time, so you might as well waste it on something you enjoy ;)
[/quote]
You make a good point. I guess it's just an acquired taste? I just prefer to reverse programs and play around with them, making key generators / reversing algorithms in the program to form my own program that emulates it (sure, like a bot, but I'd rather do everything myself than read a protocol on how to) / patch it so it works the way I want it to.

And UserLoser, what happens if Battle.net throws in their server and no longer hosts the service? Your bot is just a waste of hard drive space at that point. Sure, it was a learning experience, but the end result is useless. What happens if they change the protocol massively and patch their games? Many of the users here will have NO clue what to fix, because they'll be waiting on a few key programmers to reverse the change and document it. If they even do document it.

And as for the list of things it provides, I'd go as far to say that 80% of the users here didn't reverse and/or write any of the algorithms used for decryption/encryption/decompression/compression, and probably the same number didn't figure out the protocol on its own.

Sure, you may say something like "If the functions are public, why re-invent the wheel?"

I'll bet that's what CSB users are saying. ;)

Meh, that's just my opinion anyways. Others may see bot programming as a valuable source to practice your programming skills (which it is, in a sense). I just see it as a waste of my time, which could be better spent. Sure, I may not be very good at reversing programs and writing software with the functions I reversed, but hey, practice makes perfect. I'm young, I've got a bit to go before I realize I should do something with my life. :)
[/quote]

Thats what lifes about learning new things / self improvement.

What happends if the keygens you write become obsolete or a new patch comes out? software is in a constant state of flux it's about being ready for the next big thing and your ability to adapt to an ever changing environment.

Just because a piece of software no longer has a purpose doesn't mean you didn't learn anything while developing it. I believe that the more you do the better prepared you are for anything else in the future, the more i learn the faster i pickup up new things.

So is battle.net development a waste of time? the simple answer is no you will learn new things as you develop software for it so in the end you will gain experience. I would liken it COM because now with the introduction of .net it is basically obsolete so does that mean those millions of people in the world who have been developing using it have wasted their time? no because their gained knowledge of object interaction models and encapsulation will benefit other programming projects at a later date.

January 31, 2005, 7:48 AM
Newby
I'm aiming more towards the people who write multiple bots.

Sure, one bot is great. Teaches you a bunch of stuff altogether in one project.

However, many people here find it necessary to start over.

Sure, you re-learn other things you did before, but hell, you aren't learning anything new.

I'd rather learn to reverse the protocol and algorithms involved with the protocol by myself, and (if the protocol is changed / patched) have the skills to reverse it again, than follow a protocol and use algorithms written and documented by others.
January 31, 2005, 3:20 PM
OnlyMeat
[quote author=Newby link=topic=10362.msg97609#msg97609 date=1107184818]
I'd rather learn to reverse the protocol and algorithms involved with the protocol by myself, and (if the protocol is changed / patched) have the skills to reverse it again, than follow a protocol and use algorithms written and documented by others.
[/quote]

I completely agree i prefer to write/document the protocols myself also, i have almost completely documented the d2 in game packets/protocols.

tbh though thats what i did from when i first started i never actually used other peoples work, the only software i used as a reference when i first started was prolix which gave me great insights into the bnet protocol from there i did the rest on my own.
January 31, 2005, 3:55 PM
Myndfyr
[quote author=Newby link=topic=10362.msg97609#msg97609 date=1107184818]
I'm aiming more towards the people who write multiple bots.

Sure, one bot is great. Teaches you a bunch of stuff altogether in one project.

However, many people here find it necessary to start over.

Sure, you re-learn other things you did before, but hell, you aren't learning anything new.

I'd rather learn to reverse the protocol and algorithms involved with the protocol by myself, and (if the protocol is changed / patched) have the skills to reverse it again, than follow a protocol and use algorithms written and documented by others.
[/quote]

So what if you aren't learning anything new?  As you gain experience it's amazing how wildly different things can become.  I recently came across an "Alpha 2" version of code for ArmaBot on my computer; it was the third revision I had made that connected to Battle.net, but it was too rudimentary yet to connect with a two-keyed product.  As I was looking through the code base, I was amazed at how different it was from the "Beta 1" version that I had recently built, and how ever further different both are from my current project.  Sure, a lot of names are the same and those objects serve generally the same purpose, but the way in which the modules and elements interact is quite distinct in each version.

Part of the other reason I started a new project was that a new problem had appeared while I was working on ArmaBot, that I didn't believe I could adapt ArmaBot to fix.  I wanted to chat on Bnet with my buddies while I was at work.  Since we have a firewall at work, it would have been impossible; however, if I publish an RBP server on my home computer on, say, port 80 (HTTP), I can chat at work.

For me, I'm a high-level thinker; I like the flexibility of high-level architecture, and I think often in terms of business objects before I can think of database structure or assembly.  Sure, I can *read* assembly, and do some rudimentary reversal, but if other people are willing to share the knowledge that they've acquired on their own, then I prefer to go that way.  It lets me focus my attention on the details of design and user interface effectiveness, rather than worrying about what it means when packet 0x50 is received by the client.
January 31, 2005, 5:50 PM
kamakazie
[quote author=MyndFyre link=topic=10362.msg97628#msg97628 date=1107193818]
So what if you aren't learning anything new?  As you gain experience it's amazing how wildly different things can become.  I recently came across an "Alpha 2" version of code for ArmaBot on my computer; it was the third revision I had made that connected to Battle.net, but it was too rudimentary yet to connect with a two-keyed product.  As I was looking through the code base, I was amazed at how different it was from the "Beta 1" version that I had recently built, and how ever further different both are from my current project.  Sure, a lot of names are the same and those objects serve generally the same purpose, but the way in which the modules and elements interact is quite distinct in each version.

Part of the other reason I started a new project was that a new problem had appeared while I was working on ArmaBot, that I didn't believe I could adapt ArmaBot to fix.  I wanted to chat on Bnet with my buddies while I was at work.  Since we have a firewall at work, it would have been impossible; however, if I publish an RBP server on my home computer on, say, port 80 (HTTP), I can chat at work.

For me, I'm a high-level thinker; I like the flexibility of high-level architecture, and I think often in terms of business objects before I can think of database structure or assembly.  Sure, I can *read* assembly, and do some rudimentary reversal, but if other people are willing to share the knowledge that they've acquired on their own, then I prefer to go that way.  It lets me focus my attention on the details of design and user interface effectiveness, rather than worrying about what it means when packet 0x50 is received by the client.
[/quote]

Same.  I have probably rewritten my bot several times and even changed languages (VB 6 -> VB.NET, not a radical change though).  I've looked at all my older sources and they look like crap and progress until I find something that I like.  Mostly like crap because I spent time screwing around with the protocol trying to figure out what certain things do.  Now that I've moved to VB.NET, I really like the way my classes are able to interact and that high-level abstraction.
January 31, 2005, 8:36 PM
CrAz3D
Unlike some people here, I just program in spare time & do not have any urge to perfect my programming skills.  I don't plan to take CS classes, I don't plan to have any career dealing with computers other than client billing/info management.

I see reinventing the wheel as pointless.  If you redid it everytime it would take forever to make any sort of new vehicle.

I make/remake/rename my BNET projects (they all end up being similar in the end) because of new problems I encounter that would be painstaking & just make more sense to rewrite.

Recently I got bored bored & decided to make my simple little client db thing that I will never use.  I am currently thinking of writing a simple thing in VB.NET to make indexing files eaiser for me (I index files @ my job)

I haven't seen bot programming as a waste of time...I'm not like all, but 3-4, of my friends getting high/drunk every chance I get.
January 31, 2005, 9:58 PM
UserLoser.
[quote author=Newby link=topic=10362.msg97609#msg97609 date=1107184818]
I'd rather learn to reverse the protocol and algorithms involved with the protocol by myself, and (if the protocol is changed / patched) have the skills to reverse it again, than follow a protocol and use algorithms written and documented by others.
[/quote]

World of Warcraft is waiting for you
January 31, 2005, 10:06 PM
Newby
[quote author=UserLoser link=topic=10362.msg97661#msg97661 date=1107209196]
[quote author=Newby link=topic=10362.msg97609#msg97609 date=1107184818]
I'd rather learn to reverse the protocol and algorithms involved with the protocol by myself, and (if the protocol is changed / patched) have the skills to reverse it again, than follow a protocol and use algorithms written and documented by others.
[/quote]

World of Warcraft is waiting for you
[/quote]
If I had the money per month the game cost, I would reverse it.

Sadly, I'm out of money from purchasing an external hard drive.
January 31, 2005, 11:10 PM
CrAz3D
Why would you use a bot on WoW net?  Well, I seewhy you would, but won't most people just get sick of paying every much & quit WoW net eventually...making a bot might be fun, but why would you keeping logging in on WoW net if you have to pay?
January 31, 2005, 11:36 PM
iago
To me, writing a bot is entirely an academic exercise.  And a very good one, at that.  I've learned a lot about gui's, network programming, reverse engineering, expandable programs, etc. 

I haven't read most of this thread, but I get the impression that's what it's about. 
January 31, 2005, 11:37 PM
Newby
[quote author=CrAz3D link=topic=10362.msg97679#msg97679 date=1107214562]
Why would you use a bot on WoW net?
[/quote]
I guarantee you people would pay to have a bot that could load a healing character, that would follow you around and heal you.
January 31, 2005, 11:38 PM
UserLoser.
[quote author=CrAz3D link=topic=10362.msg97679#msg97679 date=1107214562]
Why would you use a bot on WoW net?  Well, I seewhy you would, but won't most people just get sick of paying every much & quit WoW net eventually...making a bot might be fun, but why would you keeping logging in on WoW net if you have to pay?
[/quote]

What's purpose of probably every chat bot you've used for Battle.net?
- Chat in channels.

Why would you use a bot on WoW?
- Chat in channels.

Pretty much the same thing..
January 31, 2005, 11:43 PM
Newby
[quote author=UserLoser link=topic=10362.msg97682#msg97682 date=1107215004]
What's purpose of probably every chat bot you've used for Battle.net?
- Chat in channels.

Why would you use a bot on WoW?
- Chat in channels.
[/quote]
Why would you pay $10-15 a month for an account, and then use it to chat? :p
January 31, 2005, 11:44 PM
UserLoser.
[quote author=Newby link=topic=10362.msg97683#msg97683 date=1107215070]
[quote author=UserLoser link=topic=10362.msg97682#msg97682 date=1107215004]
What's purpose of probably every chat bot you've used for Battle.net?
- Chat in channels.

Why would you use a bot on WoW?
- Chat in channels.
[/quote]
Why would you pay $10-15 a month for an account, and then use it to chat? :p
[/quote]

Why would you pay $10-50 at a store for a game, and then use it's CDKey to chat? :p
January 31, 2005, 11:46 PM
Newby
[quote author=UserLoser link=topic=10362.msg97684#msg97684 date=1107215216]
[quote author=Newby link=topic=10362.msg97683#msg97683 date=1107215070]
[quote author=UserLoser link=topic=10362.msg97682#msg97682 date=1107215004]
What's purpose of probably every chat bot you've used for Battle.net?
- Chat in channels.

Why would you use a bot on WoW?
- Chat in channels.
[/quote]
Why would you pay $10-15 a month for an account, and then use it to chat? :p
[/quote]

Why would you pay $10-50 at a store for a game, and then use it's CDKey to chat? :p
[/quote]
You get bored with the game.

However, unlike Starcraft and such, you get charged $10-15 a month every month. Starcraft and the other Blizzard games are a flat fee. :)
January 31, 2005, 11:49 PM
EpicOfTimeWasted
[quote author=Newby link=topic=10362.msg97590#msg97590 date=1107150550]
And as for the list of things it provides, I'd go as far to say that 80% of the users here didn't reverse and/or write any of the algorithms used for decryption/encryption/decompression/compression, and probably the same number didn't figure out the protocol on its own.

Sure, you may say something like "If the functions are public, why re-invent the wheel?"

I'll bet that's what CSB users are saying. ;)
[/quote]

So what you're saying is that before someone can write a program that uses sockets, they must first write their own TCP/IP stack, write the functions that generate the proper headers, and finally write the functions that actually send the packet?  Most people don't care to know the inner workings of TCP/IP, so they use the solid foundation that their OS provides, rather than having to re-invent the wheel.

If your goal is to learn the inner workings of b.net, by all means, have at it.  If you are only interested in making a simple bot, save yourself the hassle and find a solid foundation to build off of (this is not an endorsement for CSB, nor a plug for my library).  Contrary to what appears to be popular belief, it does NOT make you less of a man (or woman).
February 1, 2005, 1:31 AM
Newby
[quote author=EpicOfTimeWasted link=topic=10362.msg97715#msg97715 date=1107221466]
[quote author=Newby link=topic=10362.msg97590#msg97590 date=1107150550]
And as for the list of things it provides, I'd go as far to say that 80% of the users here didn't reverse and/or write any of the algorithms used for decryption/encryption/decompression/compression, and probably the same number didn't figure out the protocol on its own.

Sure, you may say something like "If the functions are public, why re-invent the wheel?"

I'll bet that's what CSB users are saying. ;)
[/quote]

So what you're saying is that before someone can write a program that uses sockets, they must first write their own TCP/IP stack, write the functions that generate the proper headers, and finally write the functions that actually send the packet?  Most people don't care to know the inner workings of TCP/IP, so they use the solid foundation that their OS provides, rather than having to re-invent the wheel.

If your goal is to learn the inner workings of b.net, by all means, have at it.  If you are only interested in making a simple bot, save yourself the hassle and find a solid foundation to build off of (this is not an endorsement for CSB, nor a plug for my library).  Contrary to what appears to be popular belief, it does NOT make you less of a man (or woman).
[/quote]
I knew somebody would bring it to the point where you would be writing your own TCP/IP stack and such.

I guess I could say there's a point at which it gets rediculous, but yeah, I guess I'm one of those people who takes joy in writing stuff myself, rather than using the work of others.

No wonder I haven't programmed in forever. :(
February 1, 2005, 1:38 AM
CrAz3D
I enjoy writing w/e the heck it is that I;m writing....  :-\
February 1, 2005, 3:11 AM

Search