Page 1 of 2

[App]Halo Map Protector

Posted: Sat Dec 20, 2008 11:27 pm
by Modzy
Modzy wrote:Us Macs' don't have a map protector so, I spent the passed 2 day writing this baby up for ya'll.

Heres a few pics:
Image

Image

Image

Image

Image

If nothing is entered into the text box, the app will use the default: "<Protected>"
This app works with all versions of Halo 1.
And I was nice and had a PC version made. :P

Mac Download

PC Download

Enjoy!

Posted: Sat Dec 20, 2008 11:30 pm
by DEEhunter
Does this work for halo CE?

Posted: Sat Dec 20, 2008 11:31 pm
by Modzy
DEEhunter wrote:Does this work for halo CE?
It should. Test it and post your results.

Posted: Sat Dec 20, 2008 11:38 pm
by DEEhunter
It does work but it seems like a more customized version of the HEK protection system. The HEK version nulls the name out so all the user can see is the meta offsets. Also is reversible.

http://img114.imageshack.us/img114/364/ ... 155yz4.jpg

Posted: Sat Dec 20, 2008 11:42 pm
by Modzy
DEEhunter wrote:It does work but it seems like a more customized version of the HEK protection system. The HEK version nulls the name out so all the user can see is the meta offsets. Also is reversible.

http://img114.imageshack.us/img114/364/ ... 155yz4.jpg
This does the same thing as HEK+'s protection, except that it can't be un-done and lets you enter your own message.

Posted: Sat Dec 20, 2008 11:43 pm
by DEEhunter
Lately, all the protection methods I have seen only change the name of the tags. More of a way to confuse users from getting them. Still a good tool though.

Posted: Sat Dec 20, 2008 11:56 pm
by conure
Looks fun.
Question: What happens if the string is, on average, longer then the average unchanged string? Do you not allow this? Do you update the map magic?

While that question is unlikely, its important otherwise you may start overwriting the scnr tag.

Posted: Sun Dec 21, 2008 12:51 am
by Modzy
conure wrote:Looks fun.
Question: What happens if the string is, on average, longer then the average unchanged string? Do you not allow this? Do you update the map magic?

While that question is unlikely, its important otherwise you may start overwriting the scnr tag.
I believe the string can be around 66,949 characters long, but anything that long will overwrite some tag names that were not protected for playability reasons.

If you get to the point that you overwrite the globals, then the map will crash.

Posted: Sun Dec 21, 2008 7:28 am
by bcnipod
conure wrote:Looks fun.
Question: What happens if the string is, on average, longer then the average unchanged string? Do you not allow this? Do you update the map magic?

While that question is unlikely, its important otherwise you may start overwriting the scnr tag.
Conure, you should get to know Modzy. He had quite some fun with QAR, and knows a little bit.

Posted: Sun Dec 21, 2008 12:35 pm
by Altimit01
He's talking about the string section actually overwriting the first tag (scnr) by making it too long and is wondering if you shifted the meta data and redid the magic to compensate. Come to think of it the magic wouldn't need to be recalculated since it's just a function of the start of the index but you would need to effectively redo all of the offsets not only in the index but in the tags as well.

Edit: if you want to be really clever you could find the longest section of string data for tags that are going to be protected, use that combined length as your max string length, overwrite to the section and then have every tag redirect it's string offset to there instead of writing your protected string multiple times. Of course in that case you'd have to go into all of the meta data and rewrite the string offsets used by dependencies.

Posted: Sun Dec 21, 2008 1:03 pm
by MoDFox
Oooo Purdy, nice Modzy.
Idea: If possible maybe you could add a Password feature so you could unprotect it say if you lost yours and you needed to recover it?

Posted: Sun Dec 21, 2008 1:17 pm
by Modzy
Altimit01 wrote:Edit: if you want to be really clever you could find the longest section of string data for tags that are going to be protected, use that combined length as your max string length, overwrite to the section and then have every tag redirect it's string offset to there instead of writing your protected string multiple times. Of course in that case you'd have to go into all of the meta data and rewrite the string offsets used by dependencies.
This app only writes the protected string once. Its nulls out all other tag name data that is not needed for halo to run properly, and rewrites all protected tag name offsets to one place. This allows the user to protect the map multiple times if they want to change the message.

@ModFox: You mean like... to have a feature that encrypts the names instead of nulling them out?

Posted: Sun Dec 21, 2008 1:24 pm
by DeadHamster
hey i remember this. compiling only took what, 6-7 hours? haha, very nice tool.[/code]

Posted: Sun Dec 21, 2008 1:28 pm
by Altimit01
Well then there's probably problems with every single dependency if you look into string offsets they use. That is the simpler way to do it, but there's still the problem of having an overlong string. Does the program compensate for that or not?

Posted: Sun Dec 21, 2008 1:33 pm
by MoDFox
Modzy wrote:@ModFox: You mean like... to have a feature that encrypts the names instead of nulling them out?
Yea that type of thing, that way if you REALLY needed the tag you could get at it. Of course you'd still keep the whole null out thing, it would just be an option or something incase you thought you might lose it.

Posted: Sun Dec 21, 2008 2:50 pm
by Modzy
Altimit01 wrote:Well then there's probably problems with every single dependency if you look into string offsets they use. That is the simpler way to do it, but there's still the problem of having an overlong string. Does the program compensate for that or not?
No, there is a set length that the program can handle, but that length changes with each map. Yes, it does cause problems with dependencies, but only in map editors. Halo doesn't seem to mind the dependencies issue, and fixing it would be pointless because you're trying to lock down a map, not make it easier for someone to mod.

Posted: Sun Dec 21, 2008 3:32 pm
by Altimit01
Well the issue with dependencies is immaterial since you're nulling the rest of the string data. If you left it intact though, it'd be a vector to unprotect the map. Of course the dependency strings are what make 16-byte swaps better than HMT d-swapping. Something to do with CSS IIRC. If those get broken then any d-swaps in the protected mod will not be CSS. Good to see it at least accounts for max string length.

Of course these sorts of things are trivial to circumvent if you know what you're doing.

Posted: Sun Dec 21, 2008 4:34 pm
by Modzy
Altimit01 wrote:Well the issue with dependencies is immaterial since you're nulling the rest of the string data. If you left it intact though, it'd be a vector to unprotect the map. Of course the dependency strings are what make 16-byte swaps better than HMT d-swapping. Something to do with CSS IIRC. If those get broken then any d-swaps in the protected mod will not be CSS. Good to see it at least accounts for max string length.

Of course these sorts of things are trivial to circumvent if you know what you're doing.
I never really had CSS in mind when writing it, but now that you bring it up I can think of a few ways of fixing the swap issues.

Posted: Sun Dec 21, 2008 6:26 pm
by bcnipod
Needs moar Maynard!

Posted: Sun Dec 21, 2008 7:52 pm
by Lambda
sweet.