2023-03-07 16:59:14 -05:00
|
|
|
|
namespace BinaryObjectScanner.Models.SFFS
|
2022-12-14 23:16:37 -08:00
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// SFFS consists of 2 major parts: the container files that contain the game
|
|
|
|
|
|
/// content and a filesystem filter driver (sfvfs02.sys) that handles all file-io.
|
|
|
|
|
|
/// When a game has SFFS'ed files and uses some file-io api like CreateFile, the
|
|
|
|
|
|
/// SFFS filterdriver sees this request and handles it if needed.that way, SFFS is
|
|
|
|
|
|
/// totally transparent to the game, since it never knows if the data is coming from
|
|
|
|
|
|
/// real file API or from the SFFS filterdriver. during SF initialization, the
|
|
|
|
|
|
/// SF-process registers itself as a SFFS process in a processid list, maintained
|
|
|
|
|
|
/// from the filterdriver. Part of that registration are the names of the
|
|
|
|
|
|
/// containerfiles, the process uses and an application key, that is needed to
|
|
|
|
|
|
/// decrypt headerinfos. Note that SFFS itself is completly vm-free.
|
|
|
|
|
|
/// </summary>
|
2022-12-27 17:12:55 -08:00
|
|
|
|
/// <see href="https://forum.xentax.com/viewtopic.php?f=21&t=2084"/>
|
|
|
|
|
|
public sealed class StarForceFileSystem
|
2022-12-14 23:16:37 -08:00
|
|
|
|
{
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Header
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public Header Header { get; set; }
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// Files
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public FileEntry[] Files { get; set; }
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
|
/// File headers
|
|
|
|
|
|
/// </summary>
|
|
|
|
|
|
public FileHeader[] FileHeaders { get; set; }
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|