I've been playing a particular map obsessively for a few months now and I got interested in the implementation of a certain feature. The map is locked so I tried to extract it from my Battle.net cache just to take a look for academic purposes. I've done this once before in order to fix up an abandoned map. I followed some guides for "bank hacking" that I found via googling (note: I have never done this and it's not my intention to do that here) and it worked smoothly.
However, with this map I was able to extract all three of its dependent mods, but the map itself gave an error upon opening saying that a ComponentList.SC2Components file was missing. I was able to work around this by creating a plain new ComponentList.SC2Components file and inserting it into the map with an MPQ editor. The real problem is that now upon opening the map I get an error in the Messages window saying that the Triggers file wasn't found and the element list in the trigger module is completely blank.
I figured this must be because the map must have been published with the "obfuscate map script" option enabled. But I took a look at the MapScript.galaxy file and there's no sign of obfuscation. Then I figured that maybe the author wrote the whole script in Galaxy out of preference. But the code looks exactly like generated code. The formatting, functions with the libNtve_ prefix being used instead of their shorter equivalents, the comments, the excessive use of StringExternal(), the use of autovars, etc. This was made with the GUI editor.
So that's weird. The map was published as locked, the script is auto-generated, but not obfuscated, and those two files are missing. Also, the enUS.SC2Data/LocalizedData/TriggerStrings.txt file is there and intact. Does anyone have an explanation for this? The only other thing I can think of is that they deliberately removed those files before publishing, but that would be a strange thing to do.
What you describe is perfectly normal for any protected map published to Battle.net. And it's part of procedure which Editor performs (or server, as I believe it actually happens server-side while publishing) in order to protect the map.
Triggers scheme file is completely lost at this point. But you can still put your modifications in Galaxy code.
Good point with TriggerString.txt, this file is relevant only to editor, thus should be erased too. Funny thing is that it can actually compromise MapScript.galaxy obfuscation (default one, at least). Because defined names there correspond to hashes editor uses to mask symbol identifiers.
I once was able to fully deobfuscate MapScript.galaxy (including restore of original names) thanks to this. The only thing that was missing were constant enums, as they have been inlined.
In addition to that there's one more component being removed while publishing as protected. It is Attributes, which stores data about lobby attributes, game varants and such. But it can be rather easly recreated by hand.
I've been playing a particular map obsessively for a few months now and I got interested in the implementation of a certain feature. The map is locked so I tried to extract it from my Battle.net cache just to take a look for academic purposes. I've done this once before in order to fix up an abandoned map. I followed some guides for "bank hacking" that I found via googling (note: I have never done this and it's not my intention to do that here) and it worked smoothly.
However, with this map I was able to extract all three of its dependent mods, but the map itself gave an error upon opening saying that a ComponentList.SC2Components file was missing. I was able to work around this by creating a plain new ComponentList.SC2Components file and inserting it into the map with an MPQ editor. The real problem is that now upon opening the map I get an error in the Messages window saying that the Triggers file wasn't found and the element list in the trigger module is completely blank.
I figured this must be because the map must have been published with the "obfuscate map script" option enabled. But I took a look at the MapScript.galaxy file and there's no sign of obfuscation. Then I figured that maybe the author wrote the whole script in Galaxy out of preference. But the code looks exactly like generated code. The formatting, functions with the libNtve_ prefix being used instead of their shorter equivalents, the comments, the excessive use of StringExternal(), the use of autovars, etc. This was made with the GUI editor.
So that's weird. The map was published as locked, the script is auto-generated, but not obfuscated, and those two files are missing. Also, the enUS.SC2Data/LocalizedData/TriggerStrings.txt file is there and intact. Does anyone have an explanation for this? The only other thing I can think of is that they deliberately removed those files before publishing, but that would be a strange thing to do.
What you describe is perfectly normal for any protected map published to Battle.net. And it's part of procedure which Editor performs (or server, as I believe it actually happens server-side while publishing) in order to protect the map.
Triggers scheme file is completely lost at this point. But you can still put your modifications in Galaxy code.
Good point with TriggerString.txt, this file is relevant only to editor, thus should be erased too. Funny thing is that it can actually compromise MapScript.galaxy obfuscation (default one, at least). Because defined names there correspond to hashes editor uses to mask symbol identifiers.
I once was able to fully deobfuscate MapScript.galaxy (including restore of original names) thanks to this. The only thing that was missing were constant enums, as they have been inlined.
In addition to that there's one more component being removed while publishing as protected. It is Attributes, which stores data about lobby attributes, game varants and such. But it can be rather easly recreated by hand.
Previously known as: SomeoneTookMyNameTT