Introduction
No Chaos:
A hybrid between a Corrupter and a Hex Editor. It was created by and is being furthered developed by me, Jathys. I originally started the program when looking for specific data in a game, that crashed too easily when corrupted by other programs. The idea was to corrupt only the bytes that matched what I was looking for, so I could avoid corrupting the "crashable" spots.
The second release of NoChaos extends that concept even more, providing better methods to take control of the corruption process.
Corrupter:
A utility that intentionally damages data in a file. By looking for differences in the way a file works after being corrupted, you can get a good idea of what certain sections of the file do. Corrupting is usually done randomly, within a starting and ending point that the user specifies.
NoChaos enhances the art of corruption by giving you more control over how your file is changed. Corrupt only specific values -OR- corrupt by using a pattern. If you corrupt specific values, a list is generated, showing you all the matches that your search found.
Hex Editor:
A utility that allows you to change data in a file by typing Hex values.
NoChaos has a "mini-Editor" built into it. The mini-Editor is not intended to be very powerful. It simply gives you a way to see the Hex values surrounding an address you've found and type in small changes.
Getting Started
When you first open NoChaos, you'll be asked what file you wish to open. To select your file, simply double click on it. The next screen you see is NoChaos's work area.
Start At and End At:
This is where you specify the start and end of the section you want corrupted. As in most other corruptors, you type in the Hex Address.
You can move to the next set of addresses by clicking the "+" or "-" signs.
Change and To:
Here is where you type the DEC (non-Hex) values of what you are looking for, and what you want those values to become. You can type in the Hex values, if that's what you've got, by right-clicking on the textbox.
If you type in a Hex value of F000 (61440 in "real" numbers), you'll notice that 00 F0 (240) appears to the right of the textbox. This is because the values will usually be stored in reverse order in the file. NoChaos flips them around automatically.
<<Extra>>:
If you type any value greater than 0 into this text box, NoChaos will look for an "Extra" value when it does its search. It will only show results that:
- Match the value you are looking for
- Have the Extra value either preceeding ("<<") or following (">>") your value.
If the value you type into the Extra box is less than 255, NoChaos will search for 1-byte values, ignoring the "00" that should follow it in the file. If you want to force the Extra value to be 2-bytes long, fill the area in front of the value with 0's. For instance, if you are looking for 240, type in 00240.
To switch the position of this value, relative to your search value, click on the "Extra".
The List:
When NoChaos corrupts without using a pattern, a list can be generated. The list shows the addresses, old values, and new values of the matches that were found in the most recent search.
Check any matches that you want ignored in your next corrupt.
Right-Click to reverse your selection.
Corrupting
Here's a brief explanation of the options available when you click the "Corrupt" button:
Corrupt:
As you could guess, this corrupts the ROM with whatever options you have set.
If you choose to corrupt without generating a list, your searches will be faster, though you won't be able to see any of your results. With a list, the first 100,000 matches will be viewable . . . Rest assured, all matching values are changed, regardless of whether or not they appear in the list.
This a different/faster/bigger list box than in earlier versions of NoChaos, so you may not notice any slow down while using lists. It's only really limited because around 200,000 matches the program is hogging more memory than VB wanted it to be use, so it slows exponentially (which is why I limit the list to 100,000).
Save:
This saves the last corruption permanently to the ROM.
Refresh:
This refreshes the ROM back to its original state. You will rarely need to do this, as NoChaos automatically refreshes your ROM after each corruption and when the program is shut down. The only time you'd need to hit the "Refresh" button would be if you wanted to test your non-corrupted ROM in an emulator without having to shut down NoChaos first.
Options:
- 1-Byte Search - If checked, NoChaos searches for 1-byte values.
- Patterns - See "Patterns"
- Increase End Results - If checked, NoChaos increases the value matches turn into (ie- "To").
Open a ROM:
This allows you to open a different file for corruption, automatically closing the current file.
Hex Editing
The Mini-Hex Editor allows you to see and edit the Hex surrounding any match you click on in the list generated by NoChaos. The yellow values will show you the Hex of the match you clicked on. You can choose how many lines of Hex to show, between 0 and 9.
To change Hex, simply use the Hex Editor as you would any other text box. It might beep at you annoyingly, but nothing is wrong. This is just a quirk that needs to be worked around later.
By clicking the "Save Hex Changes" button, you get the following choices . . .
Save Changes:
This saves the current Hex Changes directly to the ROM.
Go To:
Give a specific address in the ROM to go to.
Patterns
NoChaos allows you to corrupt using Patterns now. No list is generated when patterns are used.
<None>:
Use no pattern. If this is checked, NoChaos will do its typical corrupting method (ie- searching for the values you type in).
Random:
Place random bytes in your ROM. If 1-Byte Search is checked, every byte is corrupted, else every other byte is corrupted.
Scramble:
Switches bytes around with other bytes in your search area. Your checksum should remain the same. If 1-Byte Search is checked, every byte is used, else every other byte is used.
Swap:
"Flips" bytes with the bytes next to them. Again, your checksum should stay the same.
1-Byte Search
-checked . . . "00 01 02 03 04 05 06" becomes "01 00 03 02 05 04 06"
-unchecked . . . "00 01 02 03 04 05 06" becomes "02 01 00 03 06 05 04"
Sloped:
Raises/lowers values by one, forming hills, going from 0 to 255 to 0, etc... If 1-Byte Search is not selected, every other byte is left alone.
Invert Every __:
User specifies a number of bytes to skip between corruptted bytes. The corrupted bytes are simply inverted.
Tips
A few suggestions to get you on your way:
None yet...