Welcome!

Join our community of MMO enthusiasts and game developers! By registering, you'll gain access to discussions on the latest developments in MMO server files and collaborate with like-minded individuals. Join us today and unlock the potential of MMO server development!

Join Today!

SAR .SDB Binary Template

Newbie Spellweaver
Joined
Nov 17, 2010
Messages
34
Reaction score
21
Based on Nuklears released structure I made a bt (binary template) for 010 and it is easy to extract the files manually by hand but they are as Nuklear said still encrypted so I am now looking for the key and encryption method used in the debugger.

Code:
//------------------------------------------------
//--- 010 Editor v11.0.1 Binary Template
//
//      File: SAR .sdb
//   Authors: Reza
//   Version: 69
//   Purpose: IDK
//  Category: SUCK ITT
// File Mask: whut?
//  ID Bytes: noidea
//   History: lets go
//------------------------------------------------
//original concept
/*
public class SARFile
{
    public const char[] SAR1 = new char[4] { 'S', 'A', 'R', '1' }; // 0
    public const int Version = 1; // 4

    public int FileCount { get; set; } // 8
    public int Unknown1 { get; set; } // 12

    public NullTerminatedString[] FileNames; // 16
    public DoubleNullTerminatedString[] FileData;
}
*/

typedef struct 
{
    local string _val <hidden=true>;
    _val = ReadLine(FTell(), 2000); 
    char value[Strlen(_val)+1];

}uString <read=ReadStrang>;

string ReadStrang(uString &in)
{
  return in._val;
}

local int lindex =0; 
typedef struct 
{ 
    
    int size;
    byte value[size];
}uData <read=ReadData>;

string ReadData(uData &in)
{
  string out;
    SPrintf(out,"%d", in.size) ;
    return out;
}


//Header
typedef struct 
{
    char TAG[4];
    int version;
    int filecount;
    int unk0;
   
} _Header <read=readHead>;

string readHead(_Header &in)
{
    string out;
    SPrintf(out,"%s", in.TAG) ;
    return out;
}



//FileNames


typedef struct ( int count) 
{
    uString FiileNames[count]<optimize=false>;
} _FileNames <read=readFileNames>;

string readFileNames(_FileNames &in)
{
    string out;
    SPrintf(out,"FileNames") ;
    return out;
}


//FILEDATA;

typedef struct ( int count) 
{
    uData FileData[count]<optimize=false>;
} _FileData ;


//USE THE poop
_Header Header;

_FileNames FileNames(Header.filecount);


while(FTell() % 4 != 0){
FSkip(1);
}

_FileData FileData(Header.filecount);
its gross just suck it.
 
Last edited:
Newbie Spellweaver
Joined
Nov 17, 2010
Messages
34
Reaction score
21
update
final version
Code:
//------------------------------------------------
//--- 010 Editor v11.0.1 Binary Template
//
//      File: SAR .sdb
//   Authors: Reza
//   Version: 69
//   Purpose: IDK
//  Category: SUCK ITT
// File Mask: whut?
//  ID Bytes: noidea
//   History: lets go
//------------------------------------------------
//original concept
/*
public class SARFile
{
    public const char[] SAR1 = new char[4] { 'S', 'A', 'R', '1' }; // 0
    public const int Version = 1; // 4

    public int FileCount { get; set; } // 8
    public int Unknown1 { get; set; } // 12

    public NullTerminatedString[] FileNames; // 16
    public DoubleNullTerminatedString[] FileData;
}
*/

typedef struct 
{
    local string _val <hidden=true>;
    _val = ReadLine(FTell(), 2000); 
    char value[Strlen(_val)+1];

}uString <read=ReadStrang>;

string ReadStrang(uString &in)
{
  return in._val;
}

local int lindex =0; 
typedef struct 
{ 
    
    int size;
    byte value[size];
}uData <read=ReadData>;

string ReadData(uData &in)
{
  string out;
    SPrintf(out,"%d", in.size) ;
    return out;
}


//Header
typedef struct 
{
    char TAG[4];
    int version;
    int filecount;
   
} _Header <read=readHead>;

string readHead(_Header &in)
{
    string out;
    SPrintf(out,"%s", in.TAG) ;
    return out;
}



//FileNames


typedef struct ( int count) 
{
    int FileNameRegionSize; //mod4  ==0 
    

    local int curpos <hidden=true>;
    curpos = FTell();
    byte data[FileNameRegionSize]<optimize=false>;
    FSeek(curpos); 
    uString FiileNames[count]<optimize=false>;

} _FileNames <read=readFileNames>;

string readFileNames(_FileNames &in)
{
    string out;
    SPrintf(out,"FileNames") ;
    return out;
}


//FILEDATA;

typedef struct ( int count) 
{
    uData FileData[count]<optimize=false>;
} _FileData ;


//USE THE poop
_Header Header;

_FileNames FileNames(Header.filecount);


while(FTell() % 4 != 0){
FSkip(1);
}


_FileData FileData(Header.filecount);
 
Last edited:
Back
Top