Well some people still don’t know what my library is capable of.
You can:
Extract/Replace save data:
FileEntry entry = xPackage.GetFile("save/path");
if (entry == null)
{
// File not found
}
// Or change it to any location
string filepath = X360.Other.VariousFunctions.GetTempFileLocale();
if (!entry.Extract(filepath))
{
// Handle extraction error
}
// IO stream to the extracted path, use DJsIO or
// another IO
DJsIO io = new DJsIO(filepath, DJMode.Open, true);
if (!io.Accessed)
{
// Handle IO error
}
//
// Use the IO to edit the save
//
if (!entry.Replace(io))
{
// Handle save error
}
// xPackage.UpdateHeader(rsaparam) just updates the
// header and signs it, doesn't rehash
// This rehashes and then signs the package
if (!xPackage.FlushPackage(new RSAParams(kvlocation)))
{
// Handle package security fix error
}
xPackage.CloseIO();
If you just wanted to make a simple “rehasher/resigner,” you would just skip the FileEntry things and just load the package and use the flush package method, then closeIO method.
You can, as well, manipulate the header values such as licenses, profile/device ID’s, etc etc just by accessing xPackage.Header.(whatevervalue). Then just xPackage.UpdateHeader(rsaparams) if you aren’t editing the gamesave, FlushPackage if you are.
Also, what is handy is my various functions class:
VariousFunctions:
GetTempFileLocale(); // Gets a temporary file location
DeleteTempFiles(); // Deletes all X360 temp files that AREN'T in use
DeleteFile(); // Instead of throwing errors, true is a delete success, false is unsuccessful
GetUserFileLocale(); // Opens up an open or save file dialog and returns a string of the save location or null if the user canceled
ReadFileType(); // Attempts to return the type of file Xbox File of a certain location, MUST NOT be accessed by an IO stream
There’s a few more things and sexyness but I’m bored of typing, but ya, just the basics of what my lib can do for yew <3