Valhalla Legends Forums Archive | Battle.net Bot Development | Safe to ignore 0x4A (SID_OPTIONALWORK) and 0x4C (SID_REQUIREDWORK)?

AuthorMessageTime
LockesRabb
Safe to ignore 0x4A (SID_OPTIONALWORK) and 0x4C (SID_REQUIREDWORK)? I just ran into this.
February 14, 2007, 10:54 PM
Barabajagal
[quote author=Kyro link=topic=16323.msg164880#msg164880 date=1171493671]
Safe to ignore 0x4A (SID_OPTIONALWORK) and 0x4C (SID_REQUIREDWORK)? I just ran into this.
[/quote]
For now, yes. It's completely safe to totally ignore them. So far, Blizzard hasn't added a check to see if the clients are using these packets.
February 14, 2007, 10:57 PM
LockesRabb
Alright thanks.
February 14, 2007, 11:00 PM
Ringo
Didnt the sever use to disconnect clients at 0x0A, for not checking the file time with 0x33 for 0x4A extra work?
February 14, 2007, 11:27 PM
Barabajagal
As far as I know, no. My bot's never used filetime or any of the work packets, and it connects fine on any client.
February 14, 2007, 11:33 PM
Ringo
[quote author=[RealityRipple] link=topic=16323.msg164891#msg164891 date=1171496038]
As far as I know, no. My bot's never used filetime or any of the work packets, and it connects fine on any client.
[/quote]
Now ye, but awhile back im sure it used to boot users that didnt check its file time. Can anyone else remember this?
On that note, I would persionaly check the filetime for all 0x4A/0x4C requests just to keep the bnet server happy, just incase they switch it back on :)
February 15, 2007, 1:18 AM
LockesRabb
How would that be done then?
February 15, 2007, 1:25 AM
HdxBmx27
BNCS packet 0x33
I also suggest you download the files as well.
I always would like my bots to d/l the ads/mpqs. (Not run, jsut dl)
~Hdx
February 15, 2007, 1:29 AM
Ringo
When you get 0x4A or 0x4C, send a 0x33 packet with the filename.
You dont need to parse 0x33 responce if you dont want/need to.

[EDIT]: oops I missread bnetdocs, 0x4B is C>S only :P
February 15, 2007, 1:30 AM
UserLoser
Don't remember of any such violation, and yes, you can safely ignore both of these
February 15, 2007, 2:33 AM
Barabajagal
Since we're on the topic...
[quote author=SID_OPTIONALWORK - http://bnetdocs.valhallalegends.com/content.php?Section=m&Code=429]
The client will only execute this entirely if the registry key HKCU\Software\Battle.net\Optimize\SysDesc [REG_DWORD] is set to 1.
[/quote]

How much does "execute this entirely" mean? Does it not download? not check the filetime? not run?
February 15, 2007, 7:28 AM
UserLoser
[quote author=[RealityRipple] link=topic=16323.msg164914#msg164914 date=1171524483]
Since we're on the topic...
[quote author=SID_OPTIONALWORK - http://bnetdocs.valhallalegends.com/content.php?Section=m&Code=429]
The client will only execute this entirely if the registry key HKCU\Software\Battle.net\Optimize\SysDesc [REG_DWORD] is set to 1.
[/quote]

How much does "execute this entirely" mean? Does it not download? not check the filetime? not run?
[/quote]

It will ExtraWork will nothing and client will send nothing back to Battle.net
February 15, 2007, 1:07 PM
Barabajagal
So, as a bot user, what should one do? I added support for all three of these packets (though extrawork is never called currently), and all it does right now is download and extract the DLLs if they're outdated or nonexistant. Should the bot call the ExtraWork function and return SID_EXTRAWORK or what?
February 15, 2007, 2:22 PM
Ringo
[quote author=UserLoser link=topic=16323.msg164904#msg164904 date=1171506795]
Don't remember of any such violation, and yes, you can safely ignore both of these
[/quote]
[url=https://davnit.net/bnet/vL/index.php?topic=9872.msg92039#msg92039]Back in 2004, it did :)
February 15, 2007, 7:38 PM
UserLoser
[quote author=Ringo link=topic=16323.msg164928#msg164928 date=1171568290]
[quote author=UserLoser link=topic=16323.msg164904#msg164904 date=1171506795]
Don't remember of any such violation, and yes, you can safely ignore both of these
[/quote]
[url=https://davnit.net/bnet/vL/index.php?topic=9872.msg92039#msg92039]Back in 2004, it did :)
[/quote]

Doesn't make sense, because if SysDesc isn't enabled there is no response
February 16, 2007, 2:23 AM
l2k-Shadow
[quote author=UserLoser link=topic=16323.msg164943#msg164943 date=1171592607]
[quote author=Ringo link=topic=16323.msg164928#msg164928 date=1171568290]
[quote author=UserLoser link=topic=16323.msg164904#msg164904 date=1171506795]
Don't remember of any such violation, and yes, you can safely ignore both of these
[/quote]
[url=https://davnit.net/bnet/vL/index.php?topic=9872.msg92039#msg92039]Back in 2004, it did :)
[/quote]

Doesn't make sense, because if SysDesc isn't enabled there is no response
[/quote]

Actually I did some testing on this few days ago.. it looks like it will answer no matter what when it first downloads the file, if the file is cached however, it will only answer if SysDesc is enabled.
February 16, 2007, 2:41 AM
BreW
If blizzard disabled the disconnection of clients upon receiving this packet back then, they probably did it for a good reason. I really, doubt they will enable that action again. To be on the safe side I would still send 0x4Bs and 0x33s. I'd like to know, since when has Ringo had the time to research this packet? The only kind of "work" the server is enforcing is the 0x4C, which is completely different from the 0x4a where it would extract and include itself into the mpq no matter what.
February 16, 2007, 5:59 PM
UserLoser
To end the thread, yes it's safe to ignore both and there is no punishment for not using ExtraWork
February 16, 2007, 6:55 PM
LockesRabb
[quote author=UserLoser link=topic=16323.msg164956#msg164956 date=1171652148]yes it's safe to ignore both and there is no punishment for not using ExtraWork[/quote]

For now.  ;)

Anyway, thanks for the quick response and enormous amounts of assistance from everyone -- it most certainly is appreciated. :)
February 16, 2007, 7:05 PM
UserLoser
[quote author=Kyro link=topic=16323.msg164960#msg164960 date=1171652732]
[quote author=UserLoser link=topic=16323.msg164956#msg164956 date=1171652148]yes it's safe to ignore both and there is no punishment for not using ExtraWork[/quote]

For now.  ;)

Anyway, thanks for the quick response and enormous amounts of assistance from everyone -- it most certainly is appreciated. :)
[/quote]

Always, there is no gaurantee that the DLL will be successfully extracted from the MPQ ever, and there is no gaurantee that the user/process will have access to execute ExtraWork
February 17, 2007, 6:20 AM
JoeTheOdd
You *should* run ExtraWork if you've written the coding for it. It just harvests machine specifications so they know what their average customer is using, for future game optimzation.

That said, here's my code for these:

[code]        else if(buf.getCode() == SID_OPTIONALWORK)
        {
        out.systemMessage(DEBUG, "Server is requesting that we execute " + buf.removeNTString() + ". (SID_REQUIREWORK)");
        }
        else if(buf.getCode() == SID_REQUIREDWORK)
        {
        out.systemMessage(DEBUG, "Server is requiring that we execute " + buf.removeNTString() + ". (SID_REQUIREWORK)");
        }[/code]
February 17, 2007, 11:42 AM
Barabajagal
Just wondering... but how does one run it? Just call the ExtraWork API with no extra declarations?

Edit: nope, that crashes...
February 17, 2007, 12:36 PM
BreW
Did anyone try disassembling the extrawork dlls? I'm sure they're just to make code optimizations... Why are we even worrying about this... it is optional after all ^^
February 17, 2007, 12:55 PM
Barabajagal
Found VB code to use it here, written by TheMinistered. Testing it now to see if it still works. BreW, the goal is to emulate the client as perfectly as possible, so that if blizzard CHANGES anything, it means less work for the programmer, and less annoyance for the end users.

Edit: I ran the code so that the DLL was "C:\My Documents\Programming\VB\RippleChatBot\Tmp\MPQs\IX86FarSight.dll" (the location of the dll), the address was 151982125, and the varptr was 1241056 (the numbers are required for ExtraWorkMarshaller.CallExtraWork). As far as I can tell, I did everything right, but VB just completely closes on me with no error when i run it. Guess the code doesn't work for the new DLLs?
BTW: The DivertTo "8B442408 8B4C240C FFD0 8B542410 8902 31C0 C21000" probably needs to be changed, but I don't know what to or how to find out.
February 17, 2007, 1:00 PM
dRAgoN
[quote author=[RealityRipple] link=topic=16323.msg164989#msg164989 date=1171717231]
Found VB code to use it here, written by TheMinistered. Testing it now to see if it still works. BreW, the goal is to emulate the client as perfectly as possible, so that if blizzard CHANGES anything, it means less work for the programmer, and less annoyance for the end users.

Edit: I ran the code so that the DLL was "C:\My Documents\Programming\VB\RippleChatBot\Tmp\MPQs\IX86FarSight.dll" (the location of the dll), the address was 151982125, and the varptr was 1241056 (the numbers are required for ExtraWorkMarshaller.CallExtraWork). As far as I can tell, I did everything right, but VB just completely closes on me with no error when i run it. Guess the code doesn't work for the new DLLs?
BTW: The DivertTo "8B442408 8B4C240C FFD0 8B542410 8902 31C0 C21000" probably needs to be changed, but I don't know what to or how to find out.
[/quote]
That sounds like you just might be calling the function wrong in someway.
February 17, 2007, 3:31 PM
Ante
what exactly does ExtraWork do?
February 17, 2007, 6:00 PM
BreW
It's downloaded from battle.net's FTP server, then if a certain registry value =s 1, it includes itself into the .mpq. We believe it makes optimizations for starcraft based on the system's specifications etc. as a way of optimizing starcraft without making a patch. and @ Reality, could you even find an entry point to the .dll? I always thought that .dlls were extracted from the mpqs then the acual functions were added into broodat.mpq or stardat.mpq then loaded by Starcraft on runtime. Is this accurate at all?
February 17, 2007, 6:33 PM
rabbit
You're wrong.  ExtraWork is its own archive, it doesn't "include itself" into anything.  ExtraWork is what is used if you check off the box that says "Allow Blizzard to collect annonymous usage information" (or whatever) after an update.  Nobody believes what you do, because you are wrong about everything.  You are also not part of We (see: everybody hates you).
February 17, 2007, 6:52 PM
LockesRabb
[quote author=rabbit link=topic=16323.msg165016#msg165016 date=1171738324]
You're wrong.  ExtraWork is its own archive, it doesn't "include itself" into anything.  ExtraWork is what is used if you check off the box that says "Allow Blizzard to collect annonymous usage information" (or whatever) after an update.  Nobody believes what you do, because you are wrong about everything.  You are also not part of We (see: everybody hates you).
[/quote]

No need to get hostile, rabbit. He was trying to help. Even if he was inaccurate. And besides, he did say:

[quote]Is this accurate at all?[/quote]

He was acknowledging the possibility that he was inaccurate, and he asked for people to correct him if he was wrong. I'm not taking sides, I just would like to see a professional forum lacking in hostility from all sides. :)
February 17, 2007, 6:57 PM
BreW
Wait, rabbit. If that's what ExtraWork does then how come you get it at every login? And only after a successful patch install? By the way, you're not allowed to respond "no", or else you won't be able to load starcraft (until you do)
I, really don't believe at all, that's what the ExtraWork dll does.
February 17, 2007, 8:07 PM
rabbit
ExtraWork isn't stored on the computer, so the client is notified that there is some library that exists on the Battle.net FTP server.  It's the client's choice to download ExtraWork or not, since it's OPTIONAL.  The packet just says "hey, client, just FYI this file exists".  and you're allowed to uncheck the box.  That's what OPTIONAL means.

[quote author=Kyro link=topic=16323.msg165018#msg165018 date=1171738667]
No need to get hostile, rabbit. He was trying to help. Even if he was inaccurate.
[/quote]There is, though, because he keeps trying to group himself with people who are much more experienced than him and rather dislike him, as well as stating blatant opinion (which is always wrong anyway) as though it were set-in-stone fact.
February 17, 2007, 8:35 PM
LockesRabb
Perhaps you're right. But does hostility really solve anything? Perhaps it'd be more efficient if one were to correct his mistaken assumptions without any hostility and move on. If he chooses to reject those corrections, that would be his choice however misguided it would be. Someone once said: 'to focus on petty annoyances gives them even greater power to disrupt; to disregard them eventually renders their disruptions to virtually nil.'

In other words, it'd be more efficient to correct him, and if the correction was rejected, disregard it and move on. Less stress that way.
February 17, 2007, 9:39 PM
Barabajagal
You guys are confusing yourselves... Extrawork is the function inside either the RequiredWork or OptionalWork DLLs. Required is, as the name suggests, required for the client to run (though there is currently no check to see if it is run), and optional is optional. Required probably patches, optional returns system specs to the server. In any case, I can't get my program to run IX86FarSight.dll (downloaded from RequiredWork).

Edit: According to the Dependancy Walker, ExtraWork's entry point in the FarSight dll is 0x0000102D. I have no knowledge about calling DLLs like this [dynamically i guess?]. [s]I guess I'll google it and see if I can find out what's wrong here.[/s] I would google it if I knew what it was called. Looks like I'm at the mercy of the kindness of people on this board to either show me how to do it or tell me what the hell it's called.
February 17, 2007, 9:43 PM
UserLoser
Running ExtraWork on a bot isn't trival, let me explain.  After a successful version/cdkey check an ExtraWork request may be received from the server.  Here's the catch, most bots immediately send the logon request right after the successful version/cdkey check.  Well, the ExtraWork response has to be submitted before a logon request.  So if you wanted to run ExtraWork on a bot, you should delay about a second or so after a version/cdkey challenge to see if the server is sending a request to the client, if so, do not logon until the ExtraWork MPQ is downloaded, extracted, executed, and the results are sent to the server.

Also, many ExtraWork DLLs perform memory searching/patching procedures and return the results to a private Blizzard server.  I don't know about you, but I wouldn't want to run a function to see if I'm hacking or not on my bot because it'll probably get you banned if the memory locations are not accessible/invalid values at that address

RealityRipple:  There's a special structure that you have to pass over to ExtraWork aswell as language-specific things too.  You're probably not using the right calling convention either
February 17, 2007, 10:12 PM
Barabajagal
So it's similar to lockdown? In that case, I'll just download it and ignore it. I had it set up so that when it receives either SID_REQUIREDWORK or SID_OPTIONALWORK, it pauses all BNCS packet transfer (except for SID_GETFILETIME), since i figured it wouldn't like me logging in, then sending the response. So your recommendation is to completely ignore the DLL once it's been downloaded (and extracted from the mpq)?
February 17, 2007, 10:20 PM
LockesRabb
Good point, UserLoser. In that case, I'll just disregard them.
February 17, 2007, 10:22 PM
LockesRabb
[quote author=[RealityRipple] link=topic=16323.msg165044#msg165044 date=1171750856]
So it's similar to lockdown? In that case, I'll just download it and ignore it. I had it set up so that when it receives either SID_REQUIREDWORK or SID_OPTIONALWORK, it pauses all BNCS packet transfer (except for SID_GETFILETIME), since i figured it wouldn't like me logging in, then sending the response. So your recommendation is to completely ignore the DLL once it's been downloaded (and extracted from the mpq)?
[/quote]

Is it really neccessary to download them if you're not going to do anything with the downloaded files? I much doubt they cross-examine between your FTP activities and your BNET activities.

[Edit: apologies for double post- I forgot I already replied to an earlier post.]
February 17, 2007, 10:23 PM
Barabajagal
It's the idea of Perfect Emulation... My bot can connect to any client in the exact style that the original client connects (except for a few things, like downloading the TOS and handling UDP packets). I even have it check for and download ads (the downloading is optional, but it uses the ad check instead of SID_NULL to keep the connection alive).
February 17, 2007, 10:39 PM
UserLoser
[quote author=[RealityRipple] link=topic=16323.msg165051#msg165051 date=1171751971]
It's the idea of Perfect Emulation... My bot can connect to any client in the exact style that the original client connects (except for a few things, like downloading the TOS and handling UDP packets). I even have it check for and download ads (the downloading is optional, but it uses the ad check instead of SID_NULL to keep the connection alive).
[/quote]

Good job, now please let this thread that were answered several days ago die aswell as others
February 17, 2007, 10:45 PM
Barabajagal
Will Do  ;D
February 17, 2007, 10:49 PM
Ante
[quote author=rabbit link=topic=16323.msg165016#msg165016 date=1171738324]
see: everybody hates you
[/quote]

that's what you think. from most people's point of view, ur the only one hatin brew
February 18, 2007, 5:22 PM
LockesRabb
[quote author=Ante link=topic=16323.msg165095#msg165095 date=1171819321]
[quote author=rabbit link=topic=16323.msg165016#msg165016 date=1171738324]
see: everybody hates you
[/quote]

that's what you think. from most people's point of view, ur the only one hatin brew
[/quote]

My question has already been answered. Bickering does not solve anything. It only serves to further inflame the forums.

Mod Request: Would you mind closing this thread? My question has been answered. Thanks in advance. :) 

Edit: Closed it myself. I didn't know I could lock my own threads. Heh.
February 18, 2007, 6:44 PM

Search