Valhalla Legends Forums Archive | Battle.net Bot Development | sending text to warcraftiii

AuthorMessageTime
Laff
i need to know if there is a way to send text to the local warcraftiii client and have it be displayed in game.  can i just dummy up a packet that looks like a whisper and send it out with winpcap?  or is there an easier way?  thanks.
October 5, 2004, 4:01 PM
iago
I'm assuming you mean during a game.  You follow these steps:

1) press enter
2) typr your message
3) press enter

Hope this helps!
October 5, 2004, 5:06 PM
Laff
-_-

no, i meant from MY PROGRAM.  nice one though.  made me laugh when i read it.
October 5, 2004, 5:09 PM
iago
There is an easy way to send keystrokes to a different program.  In VB it's SendKey or something.  Try googling sending keystrokes to other processes from visual basic or something.
October 5, 2004, 5:51 PM
Laff
seriously guys this is NOT what i'm asking.  i need to make warcraftiii think it's receiving text, not me actually sending text.

i'm very aware of sendkeys...from my old vb days.  i don't use vb anymore, c# is where it's at.
October 5, 2004, 5:58 PM
Zakath
My guess would be that you'll need to hook into and manually call whatever function War3 uses for processing incoming text. Better get out the disassembler!
October 5, 2004, 6:59 PM
UserLoser.
[quote author=Laff link=topic=9022.msg83333#msg83333 date=1096992067]
i need to know if there is a way to send text to the local warcraftiii client and have it be displayed in game.  can i just dummy up a packet that looks like a whisper and send it out with winpcap?  or is there an easier way?  thanks.
[/quote]

Find out what packet/format/ect and I'll find a way to send it for you
October 5, 2004, 7:11 PM
iago
If you want to send it to yourself, that's difficult.  You're going to have to call the actual game's function that processes recieved messages.  To do that, you'll need to execute code in the game's context.  Have fun :)
October 5, 2004, 9:13 PM
UserLoser.
[quote author=iago link=topic=9022.msg83378#msg83378 date=1097010818]
If you want to send it to yourself, that's difficult.  You're going to have to call the actual game's function that processes recieved messages.  To do that, you'll need to execute code in the game's context.  Have fun :)
[/quote]

That's what i was planning on trying to do :) But i don't feel like getting on war3, joining a ladder game, then finding out what packet it is, ect.  otherwise i'll be re-addicted to war3 :)
October 5, 2004, 9:32 PM
Laff
i'm just trying to spoof a packet right...and see if wc3 gets it...we'll see.
October 5, 2004, 11:00 PM
Myndfyr
[quote author=Laff link=topic=9022.msg83396#msg83396 date=1097017221]
i'm just trying to spoof a packet right...and see if wc3 gets it...we'll see.
[/quote]

Methinks it would be easier to just use WC3's draw-text function.
October 5, 2004, 11:46 PM
Zakath
[quote author=iago link=topic=9022.msg83378#msg83378 date=1097010818]
If you want to send it to yourself, that's difficult.  You're going to have to call the actual game's function that processes recieved messages.  To do that, you'll need to execute code in the game's context.  Have fun :)
[/quote]

I thought I just said that! I feel like $t0rm here.
October 6, 2004, 4:50 AM
Kp
[quote author=MyndFyre link=topic=9022.msg83402#msg83402 date=1097019991][quote author=Laff link=topic=9022.msg83396#msg83396 date=1097017221]i'm just trying to spoof a packet right...and see if wc3 gets it...we'll see.[/quote]Methinks it would be easier to just use WC3's draw-text function.[/quote]

Assuming they didn't get stupid and forget everything they learned from Starcraft, they're likely storing text messages in some structure for whenever it needs to be redrawn.  If you don't want to have your text wiped at the next update, I'd suggest getting the message stored into that structure.  Either run code in w3 like Zakath said or use WriteProcessMemory to poke the message and supporting bookkeeping directly into the right structure.
October 6, 2004, 4:58 AM
Laff
yeh i got no idea how to do that ;)
October 6, 2004, 5:12 AM
Forged
check and see what happens when  you send a message and then duplicate it?
October 11, 2004, 12:40 AM
Laff
big fat nothing.  the tcp/ip interface matches as well so it discards the packet is my guess.  if anyone can help get straight writing the war3's directx window working, i'd love it.
October 13, 2004, 11:10 PM
Forged
good luck with that, though I rember some guy I know was doing something like that. I will talk to him next time he is online and see if I can get him to post some info on it.
October 14, 2004, 3:46 AM
Skywing
[quote author=Laff link=topic=9022.msg84278#msg84278 date=1097709001]
big fat nothing.  the tcp/ip interface matches as well so it discards the packet is my guess.  if anyone can help get straight writing the war3's directx window working, i'd love it.
[/quote]
Back in the Warcraft III beta, I just passed a faked info chat event directly to the handler for Battle.net chat events (in order to display a string).  Somewhat of an ugly hack I suppose, but it worked.  You might be able to do something similar, still.
October 14, 2004, 4:50 AM
Laff
how exactly did you do this?  exactly what i'm looking for ;)
October 14, 2004, 5:07 AM
Skywing
[quote author=Laff link=topic=9022.msg84334#msg84334 date=1097730425]
how exactly did you do this?  exactly what i'm looking for ;)
[/quote]
I built a chat event packet and called the handler function with the appropriate parameters.

To do that, you'll probably have to find out what the address of the chat event handler is, and what parameters it takes.  As I recall, you also need to get the class instance for Warcraft III's singleton BattleNet class and grab a critical section while calling the handler.

Of course, my information is several years old, dating back to the early beta.  Things might work differently now.
October 14, 2004, 5:27 AM
Laff
i may be 8 months from having my hardware engineering and software engineering degrees (both bachelors) but i have no idea how to go about doing that.
October 14, 2004, 8:50 AM
Myndfyr
[quote author=Laff link=topic=9022.msg84339#msg84339 date=1097743834]
i may be 8 months from having my hardware engineering and software engineering degrees (both bachelors) but i have no idea how to go about doing that.
[/quote]

It doesn't count if you get your degrees from those non-accreditted universities that send you spam e-mail.
October 15, 2004, 7:35 AM
Laff
oregon institute of technology thx.
October 15, 2004, 4:56 PM
Zakath
reverse engineering, laff...you've gotta take it apart
October 16, 2004, 4:57 AM

Search