This does sound really promising. But does there really need to be an un-obfuscation method? Why not just make it an one-way hash? I can just keep 2 copies of my map - the unobfuscated version and the obfuscated version. The latter would be published, but not the former. I'd use the former for editing and then I'd save it into the obfuscated version's filename and then obfuscate it and publish it.
This does sound really promising. But does there really need to be an
un-obfuscation method? Why not just make it an one-way hash? I can just
keep 2 copies of my map - the unobfuscated version and the obfuscated
version. The latter would be published, but not the former. I'd use the
former for editing and then I'd save it into the obfuscated version's
filename and then obfuscate it and publish it.
I highly dbout it would be even possible to undo it... considering everything gets renamed and there is no reference to what was renamed to what... Unless the program documents what it changes.... which might be possible.... but kinda ... well IMHO as a programmer it would be a "pain in the ass" and not worth the effort.....
with that said.... I already feel bad for anybody who runs it against something they didnt have a back up for =)
Rollback Post to RevisionRollBack
Skype
KageNinpo = SN
My Libraries
DialogLeaderboard & TeamSort
My Projects
SPACEWAR Tribute
Infinite TD
This does sound really promising. But does there really need to be an un-obfuscation method? Why not just make it an one-way hash? I can just keep 2 copies of my map - the unobfuscated version and the obfuscated version. The latter would be published, but not the former. I'd use the former for editing and then I'd save it into the obfuscated version's filename and then obfuscate it and publish it.
I would make it auto-backup the map prior to obfuscating, just in case, ;).
Trigger code is really easy to obfuscate in comparison to the data. If you look at MapScript.galaxy, all local variables begin with lv_, all globals begin with gv_, functions with gf_, etc.
Don't do it that way. All function and variable declaration have their names follow their types (int, bool, fixed... etc). Simply search for any statement beginning with a type and you'll catch all of them.
I realize people are far more interested in Galaxy code obfuscation than data! Oh well, that's easy then :). A first version for Galaxy code is ready, just waiting approval for a new asset.
That first version won't do map MPQ unpacking or anything like that. You have to extract the MapScript.galaxy file from the map, run the program, and put the file back using a program like MPQEditor. Data obfuscation will work the same way, I may use libmpq eventually to make things easier.
The program should catch the names of about everything ( except new data types declared with typedef in custom code ), and encode everything given an alphabet and optional prefix. It also strips every space or line break that isn't strictly necessary, etc. Renaming everything with a random combination of the letters i and j, for example, looks pretty nice... :)
@SexLethal:
Quite right, that was just an example of how easy it is to parse MapScript.galaxy. The program is actually a little more clever than that.
when you say random.... it does make sure its not a previously used combination correct?
And I highly suggest you implement the Automatic MPQ unpacking......
If you are still interested in building a GUI on top of it, do you want to do the MPQ unpacking and repacking? I never used libmpq, though I guess it shouldn't be too complicated.
Names are of course unique ( strictly, it isn't random, more like a non-colliding index rehashing ).
GUI is getting a missing ocx error though using windows common control dialog ( theres where you get a window and can browse to the location of the file). which is really annoying...
Do you think people mind pasting in the files litterial path?... that would be like "E:\somedirectory\blahblah\mapscript.galaxy"
Rollback Post to RevisionRollBack
Skype
KageNinpo = SN
My Libraries
DialogLeaderboard & TeamSort
My Projects
SPACEWAR Tribute
Infinite TD
I wouldn't mind that. This program should only be used at release time anyway. Though I do believe people will find it an inconvenience, the value of the program far outweighs it.
StragusMapster should be putting up a link to this at any moment.... unless he found some kinda problem with it.....
Well the version that handles obfuscating the "mapscript.galaxy" file. Dunno what the plan was for the data obfuscation... IMO id prefer to keep them seperate.
if thats the case, somebody like me can easily click each effect, see what type it is, then rename it to something like Disruptive pulse damage providing its a damage effect, do that one by 1 and its easy.
the only way this thing will work is if you click an ability (all the linked up parts) should not show up automatically else this will just be a very minor annoyance.
The majority of abilties will have a button, so even if you cant figure out the name, the button will be adquate information to tell you what ability your working with, then just rename all the easily already linked up parts and thats it.
Great to hear! May I implore you to add this functionality?
This does sound really promising. But does there really need to be an un-obfuscation method? Why not just make it an one-way hash? I can just keep 2 copies of my map - the unobfuscated version and the obfuscated version. The latter would be published, but not the former. I'd use the former for editing and then I'd save it into the obfuscated version's filename and then obfuscate it and publish it.
@OneSoga: Go
We had to do that in war3 if I remember right (with 3rd party protection)
I highly dbout it would be even possible to undo it... considering everything gets renamed and there is no reference to what was renamed to what... Unless the program documents what it changes.... which might be possible.... but kinda ... well IMHO as a programmer it would be a "pain in the ass" and not worth the effort.....
with that said.... I already feel bad for anybody who runs it against something they didnt have a back up for =)
I would make it auto-backup the map prior to obfuscating, just in case, ;).
Don't do it that way. All function and variable declaration have their names follow their types (int, bool, fixed... etc). Simply search for any statement beginning with a type and you'll catch all of them.
I realize people are far more interested in Galaxy code obfuscation than data! Oh well, that's easy then :). A first version for Galaxy code is ready, just waiting approval for a new asset.
That first version won't do map MPQ unpacking or anything like that. You have to extract the MapScript.galaxy file from the map, run the program, and put the file back using a program like MPQEditor. Data obfuscation will work the same way, I may use libmpq eventually to make things easier.
The program should catch the names of about everything ( except new data types declared with typedef in custom code ), and encode everything given an alphabet and optional prefix. It also strips every space or line break that isn't strictly necessary, etc. Renaming everything with a random combination of the letters i and j, for example, looks pretty nice... :)
@SexLethal: Quite right, that was just an example of how easy it is to parse MapScript.galaxy. The program is actually a little more clever than that.
@StragusMapster: Go
when you say random.... it does make sure its not a previously used combination correct? And I highly suggest you implement the Automatic MPQ unpacking......
@SouLCarveRR:
If you are still interested in building a GUI on top of it, do you want to do the MPQ unpacking and repacking? I never used libmpq, though I guess it shouldn't be too complicated.
Names are of course unique ( strictly, it isn't random, more like a non-colliding index rehashing ).
@StragusMapster: Go
Ive never touched Mqp's in that manner myself either.... send me a private message if you would like to disscuss the requirements of the GUI....
I spose I could take a look latter tonight and see how complicated MPQ extraction and repackaging would be...
Any updates?
@Karawasa: Go
yeah... the command line tool appears to be done...
GUI is pretty much done... should be finished tonight....
@SouLCarveRR: Go
Sweet!
@Karawasa: Go
GUI is getting a missing ocx error though using windows common control dialog ( theres where you get a window and can browse to the location of the file). which is really annoying...
Do you think people mind pasting in the files litterial path?... that would be like "E:\somedirectory\blahblah\mapscript.galaxy"
@SouLCarveRR: Go
I wouldn't mind that. This program should only be used at release time anyway. Though I do believe people will find it an inconvenience, the value of the program far outweighs it.
@Karawasa: Go
Just talked Stragus guess it wasnt so hard for him to get around....
Sounds like well have a folder with the files in it and that will all come in a zip file
@SouLCarveRR: Go
What language / program do you use to write the GUI?
Mainly I use Visual Basic for everything
GUI is done..... stragus needs to take a look at it.....
@SouLCarveRR: Go
StragusMapster should be putting up a link to this at any moment.... unless he found some kinda problem with it.....
Well the version that handles obfuscating the "mapscript.galaxy" file. Dunno what the plan was for the data obfuscation... IMO id prefer to keep them seperate.
question, even though it changes the names of the stuff, do they all still line up like this when you click an ability
http://www.rayforce.net/sc2convert.png refering to the bottom right picture.
if thats the case, somebody like me can easily click each effect, see what type it is, then rename it to something like Disruptive pulse damage providing its a damage effect, do that one by 1 and its easy.
the only way this thing will work is if you click an ability (all the linked up parts) should not show up automatically else this will just be a very minor annoyance.
The majority of abilties will have a button, so even if you cant figure out the name, the button will be adquate information to tell you what ability your working with, then just rename all the easily already linked up parts and thats it.