A Community discussion forum for Halo Custom Edition, Halo 2 Vista, Portal and Halo Machinima

Home  Search Register  Login Member ListRecent Posts
»Forums Index »Halo Custom Edition (Bungie/Gearbox) »Halo CE General Discussion »Should I go through with releasing this new feature of Refinery?

Author Topic: Should I go through with releasing this new feature of Refinery? (12 messages, Page 1 of 1)
Moderators: Dennis

Joined: Apr 3, 2013

Posted: Dec 15, 2017 05:06 PM    Msg. 1 of 12       
First off, read the whole thing before blowing up. I don't want any ignorant responses.

So it was recently brought to my attention that it would open up new modding possibilities by having separate server and client side versions of a map that the game would still allow to connect(checksums for both would both still match and be valid).

I am currently sitting on an update to Refinery that allows you to spoof a maps checksum to be whatever you want, while editing the map to hash to that checksum. After realizing how much damage this could cause by a cheater making a modded, checksum spoofed map and using it, I have decided to never release this. However, I have an idea that might be a good compromise.

How about having the ability to make all Halo CE maps open in Refinery have their checksums set to some random number? This will prevent others from creating say, a variant of bloodgulch with cheats and then connecting to a vanilla bloodgulch server. The only way someone could cheat with this would be to host the server themselves and make sure everyone joining has their non-cheatsy version of the map after they edited it(the original one wont work).
Edited by MosesofEgypt on Dec 15, 2017 at 05:11 PM

Joined: Jun 8, 2014

Posted: Dec 15, 2017 05:53 PM    Msg. 2 of 12       
To clairfy, I can open two separate maps and have the same checksum applied to both, correct?

That would be a useful feature. I take it my AI score counter post is what struck this?

Joined: Apr 3, 2013

Posted: Dec 15, 2017 06:14 PM    Msg. 3 of 12       
Yes to both. As it currently is, I can just set a map's checksum to a value I specify:

I will not release it like that of course. If you change a map's checksum, it has to be the same random checksum applied to all opened maps. You will be able to change a map's checksum any number of times, but since it has to save the map every time it's not viable for someone to just keep trying until they get the exact 32 bit checksum they want. I might end up making it done through a sourceless C extension module so it's even more difficult for someone to modify the code to allow them to specify the target checksum.

Joined: Sep 22, 2009

GMYF - Now hosting proper MLG gametypes!

Posted: Dec 16, 2017 06:44 PM    Msg. 4 of 12       
Please don't release this lol the risk greatly outweighs the hypothetical reward

Joined: Apr 3, 2013

Posted: Dec 16, 2017 08:40 PM    Msg. 5 of 12       
You won't be able to choose the checksum; it's chosen randomly and is stored in many pieces around in memory. This means people can't choose which map they want to spoof its crc, they have to set their maps to whichever crc refinery gives them.

The source has been as heavily obfuscated as I can make it. The only people that should be able to make heads or tails of it and figure out how to modify it should be people with the skills to make this kind of tool in the first place. I think it's reasonably safe.

Joined: Jun 8, 2014

Posted: Dec 17, 2017 02:38 PM    Msg. 6 of 12       
If you don't release it I'm going to end up making a version, and my version will be crude and potentially easy to manipulate, and then people will use it for evil.

Halo Noob Modder117
Joined: Jan 22, 2016

Posted: Dec 17, 2017 08:05 PM    Msg. 7 of 12       
Moses I'm really dumb but the word checksum reminded me of an issue I had in the past with renaming maps...

Can this also help with renaming maps?

Edited by Halo Noob Modder117 on Dec 17, 2017 at 08:06 PM

Joined: Apr 3, 2013

Posted: Dec 17, 2017 10:12 PM    Msg. 8 of 12       
Refinery can rename maps. It could even before this update, though until now it wouldn't recalculate the proper checksum when saving the map if anything other than its name was modified(such as the basic deprotection that's run when opening the map). This is because the name isn't included in the data the checksum is hashed from. You'll need to wait a little while until I release this update since I want to make sure of some things before I make it live.
Edited by MosesofEgypt on Dec 17, 2017 at 10:13 PM

Halo Noob Modder117
Joined: Jan 22, 2016

Posted: Dec 18, 2017 05:03 AM    Msg. 9 of 12       
Ah alright.

Say though if I wanted to rename my craptestmap to display as My Tags Lab within Halo how would I go about that with your tools?

I wanted to rename some of my stupidly named maps without having to rebuild everything from scratch.

Joined: Apr 3, 2013

Posted: Dec 18, 2017 02:36 PM    Msg. 10 of 12       
Just open the map with refinery, click "Edit", and click "Rename map". Again, don't try to use this feature until I push the update(unless you don't want the map played online since it might invalidate the checksum). Refinery is currently version 1.6.2, and the update will make it 1.6.3

EDIT: Another caveat, the maps filename must match what you rename it to in refinery. If it doesn't then Halo won't be able to load it.

EDIT2: Turns out the maps must also be the same filesize or Halo will refuse to connect.
Edited by MosesofEgypt on Dec 20, 2017 at 12:01 AM

Joined: Jun 8, 2014

Posted: Dec 20, 2017 09:30 AM    Msg. 11 of 12       
You could always create a map name with spaces, save the scenario as My Lab Test, and run

Tool scenario "levels\test\my lab test"

The "" allow you to use spaces in the scenario name without Tool thinking the filepath string has been terminated.

On another note, that sucks moses. Theres no real point in releasing then, if all I can do is meta edits and reference swaps then theres no potential for benefit, only potential abuse.

Joined: Apr 3, 2013

Posted: Dec 20, 2017 10:04 AM    Msg. 12 of 12       
Actually, i think it's very possible to just pad the smaller map to the size of the larger using a hex editor and adding zero's on the end. I'll need your help to test since you've got stuff ready to do so.

EDIT: It appears that the tag index's offset as well as the tag index meta length must match as well. I extracted bloodgulch and rebuilt it, tweaked a few things in a hex editor, resized it to match the original size, resigned it, and was able to play online with legitimate bloodgulch servers. Luckily the map was a tiny bit smaller when I rebuilt it. I still think it's very possible to make the kind of client-server pair you're looking to, it'll just require some careful tweaking by hand until I can think of a good way to automate it. Still looking to test these theories when you get back to your gaming rig. I think it's possible to automate it, but if you're using a protected map then likely not. This is because the tag index and metadata needs to all be moved, and if the map is protected this could be impossible in a map where the tag index was already moved to protect it.
Edited by MosesofEgypt on Dec 20, 2017 at 03:25 PM


Previous Older Thread    Next newer Thread

Time: Wed January 17, 2018 10:47 PM 235 ms.
A Halo Maps Website