13.11.2006, 17:12:16
== MIX Protection Methods ==
At the moment there are two methods to protect your MIX files:
=== Purpose ===
They both make your MIXes unreadable by any XCC tools or tools using their MIX reading code, such as FinalSun/FinalAlert, while retaining their compatibility with both TS/FS and RA2/YR. The reasons for or against using these encryption methods are beyond the scope of this document. Their internal working methods are related to the MIX format and XCC's LMD. Allow me not to disclose those exact methods, since an intelligent person armed with a simple hex-editor and MIX format documentation can already reverse engineer them with little difficulty. The reason they work is because the game is more lenient with MIX loading than XCC code is.
=== Caveats ===
As said, these methods work because the game is more lenient with MIX loading than XCC code is. Furthermore, both methods use the same technique with different levels of, err, "aggression". Therefore, should XCC one day update its code to fully match the method used by the games themselves, neither method will protect the MIXes successfully.
== Appendix A: Caveats caused by the MIX format itself ==
The MIX format doesn't pack the file contents, therefore anyone with a hex editor can see the plain INI codes in the MIXes. It is certainly not impossible to determine the internal identifiers the graphics assets have, and from there it is short work to write custom INI code addressing those identifiers, distribute it with your (encrypted or not) MIX file, and have it work.
At the moment there are two methods to protect your MIX files:
- LeechKiller method (developed in June 2005 by Saberhawk)
- (working title) MIX Scramble (developed in October/November 2006 by DCoder).
=== Purpose ===
They both make your MIXes unreadable by any XCC tools or tools using their MIX reading code, such as FinalSun/FinalAlert, while retaining their compatibility with both TS/FS and RA2/YR. The reasons for or against using these encryption methods are beyond the scope of this document. Their internal working methods are related to the MIX format and XCC's LMD. Allow me not to disclose those exact methods, since an intelligent person armed with a simple hex-editor and MIX format documentation can already reverse engineer them with little difficulty. The reason they work is because the game is more lenient with MIX loading than XCC code is.
=== Caveats ===
As said, these methods work because the game is more lenient with MIX loading than XCC code is. Furthermore, both methods use the same technique with different levels of, err, "aggression". Therefore, should XCC one day update its code to fully match the method used by the games themselves, neither method will protect the MIXes successfully.
== Appendix A: Caveats caused by the MIX format itself ==
The MIX format doesn't pack the file contents, therefore anyone with a hex editor can see the plain INI codes in the MIXes. It is certainly not impossible to determine the internal identifiers the graphics assets have, and from there it is short work to write custom INI code addressing those identifiers, distribute it with your (encrypted or not) MIX file, and have it work.