Skip to content
Lukas Dürrenberger edited this page Sep 19, 2021 · 3 revisions

SDB believed to stand for Static Database, are two files, ClientDB.SDB and CommonDB.SDB that were used before the newer SD2 format for Firefall. According to SignSrch they each contain different sections of compressed data.

Versions

ClientDB.SDB from Build 1189

Signsrch 0.2.4

- open file "C:\Program Files (x86)\Red 5 Studios\Firefall_1189\system\db\clientdb.sdb"
- 4246484 bytes allocated
- load signatures
- open file C:\Users\X\Desktop\signsrch\signsrch.sig
- 3075 signatures in the database
- start 8 threads
- start signatures scanning:

  offset   num  description [bits.endian.size]
  --------------------------------------------
  00004ce2 3048 DMC compression [32.le.16&]

- 1 signatures found in the file in 3 seconds
- done

CommonDB.SDB from Build 1189

Signsrch 0.2.4

- open file "C:\Program Files (x86)\Red 5 Studios\Firefall_1189\system\db\commondb.sdb"
- 3173194 bytes allocated
- load signatures
- open file C:\Users\X\Desktop\signsrch\signsrch.sig
- 3075 signatures in the database
- start 8 threads
- start signatures scanning:

  offset   num  description [bits.endian.size]
  --------------------------------------------
  00015215 3048 DMC compression [32.le.16&]
  001761f0 2417 MBC2 [32.le.248&]
  00236b31 1041 SSL3 #define [32.be.176&]
  0024708b 2418 MBC2 [32.be.248&]

- 4 signatures found in the file in 3 seconds
- done

010 Template

Below is a basic Template (.bt) file for 010 Editor. It currently only works with ClientDB.SDB from Build 1189. It's a very early version but it may provide some sort of help to someone else that looks into the file.

//------------------------------------------------
//--- 010 Editor v7.0.2 Binary Template
//
//      File: ClientDB.SDB Binary Template
//   Authors: ThiconZ
//   Version: 1
//   Purpose: Template Descriptor for Pre-Encryption ClientDB; Only for Build 1189 currently
//  Category: 
// File Mask: 
//  ID Bytes: 
//   History: 
//------------------------------------------------
struct FILE {
    struct HEADER {
        int unk1; // Version?
        int unk2; // Doesn't Change?
        BYTE UNKB1; // Changes between ClientDB and CommonDB
        BYTE UNKB2[3]; // Changes between all files
        int NULL; // Null Block
        int BlockCounter;
    } header <bgcolor=cLtGray>;

    // New Struct for each Block set, name format is BLOCK[Ending Byte Before Null]
    struct BLOCK00 {
        int block100;
        int block200;
        int block300;
        int block400;
        int block500;
        int block600;
    } block00 <bgcolor=cDkGray, fgcolor=cLtGray>;
    
    struct BLOCK10 {
        int block110;
        int block210;
        int block310;
        int block410;
        int block510;
        int block610;
        int block710;
        int block810;
        int block910;
        int block1010;
        int block1110;
        int block1210;
    } block10 <bgcolor=cDkGray, fgcolor=cLtGray>;

    struct BLOCK0D {
        int block10d;
        int block20d;
        int block30d;
        int block40d;
        int block50d;
        int block60d;
    } block0d <bgcolor=cDkGray, fgcolor=cLtGray>;

    struct BLOCK16 {
        int block116;
        int block216;
    } block16 <bgcolor=cDkGray, fgcolor=cLtGray>;

    struct BLOCK17 {
        int block117;
        int block217;
        int block317;
    } block17 <bgcolor=cDkGray, fgcolor=cLtGray>;

    struct BLOCK19 {
        int block119;
        int block219;
        int block319;
        int block419;
        int block519;
        int block619;
        int block719;
    } block19 <bgcolor=cDkGray, fgcolor=cLtGray>;

    struct BLOCK27 {
        int block127;
    } block27 <bgcolor=cDkGray, fgcolor=cLtGray>;

    struct BLOCK30 {
        int block130;
        int block230;
        int block330;
        int block430;
        int block530;
        int block630;
        int block730;
        int block830;
    } block30 <bgcolor=cDkGray, fgcolor=cLtGray>;

    struct BLOCK32 {
        int block132;
        int block232;
        int block332;
    } block32 <bgcolor=cDkGray, fgcolor=cLtGray>;

    struct BLOCK33 {
        int block133;
        int block233;
    } block33 <bgcolor=cDkGray, fgcolor=cLtGray>;

    struct BLOCK34 {
        int block134;
        int block234;
    } block34 <bgcolor=cDkGray, fgcolor=cLtGray>;

    struct BLOCK3C {
        int block13c;
        int block23c;
        int block33c;
        int block43c;
        int block53c;
        int block63c;
        int block73c;
        int block83c;
        int block93c;
        int block103c;
        int block113c;
        int block123c;
    } block3c <bgcolor=cDkGray, fgcolor=cLtGray>;

    struct BLOCK3D {
        int block13d;
    } block3d <bgcolor=cDkGray, fgcolor=cLtGray>;

    struct BLOCK3E {
        int block13e;
        int block23e;
        int block33e;
        int block43e;
        int block53e;
        int block63e;
    } block3e <bgcolor=cDkGray, fgcolor=cLtGray>;

    struct BLOCK40 {
        int block140;
        int block240;
    } block40 <bgcolor=cDkGray, fgcolor=cLtGray>;
} file;
Clone this wiki locally