Corevette (PC) .sma

Extraction and unpacking of game archives and compression, encryption, obfuscation, decoding of unknown files
Puterboy1
Posts: 382
Joined: Wed Sep 12, 2018 2:22 am

Corevette (PC) .sma

Post by Puterboy1 »

I'd like to extract it's archive. You can download it from here: https://ia802905.us.archive.org/view_ar ... rvette.zip
Ekey
Posts: 1383
Joined: Sat Aug 09, 2014 2:34 pm

Re: Corevette (PC) .sma

Post by Ekey »

Modified ZIP file

Code: Select all

# Corevette (SMA) format
# script for QuickBMS http://quickbms.aluigi.org

goto -0x16
idstring "PK\x05\x06"
        get disk_num        short
        get disk_start      short
        get central_entries short
        get central_entries short
        get central_size    long
        get central_offset  long
        get comm_len        short
        getdstring comment  comm_len

for i = 0 < central_entries
    goto central_offset
    idstring "\x29\xC7\xB3\x9A"
        get ver_made        short
        get ver_need        short
        get flag            short
        get method          short
        get modtime         short
        get moddate         short
        get crc             long
        get comp_size       long
        math comp_size ^= 0xCC6B9A57
        get uncomp_size     long
        get name_len        short
        get extra_len       short
        get comm_len        short
        get disknum         short
        get int_attr        short
        get ext_attr        long
        get rel_offset      long
        math rel_offset ^= 0xCC6B9A57
        getdstring name     name_len
        getdstring extra    extra_len
        getdstring comment  comm_len
    savepos central_offset

    goto rel_offset
    idstring "\xAC\x0C\x85\xB3"
        get ver             short
        get flag            short
        get method          short
        get modtime         short
        get moddate         short
        get crc             long
        get comp_size       long
        math comp_size ^= 0xCC6B9A57
        get uncomp_size     long
        get name_len        short
        get extra_len       short
        getdstring name     name_len
        getdstring extra    extra_len
        savepos offset

        if method == 0
            Log name offset uncomp_size
        else
            if method == 0
                ComType deflate
            elif method == 1
                ComType unshrink
            elif method == 6
                ComType explode
            elif method == 8
                ComType deflate
            elif method == 9
                ComType deflate64
            elif method == 12
                ComType bzip2
            elif method == 14
                ComType lzmaefs
            elif method == 13
                ComType XMemDecompress
            elif method == 21
                ComType XMemDecompress
            elif method == 64
                ComType darksector
            elif method == 98
                ComType ppmd
            elif method == 99
                print "this script doesn't support AES encryption"
                cleanexit
            else
                print "unsupported compression method %method%"
                cleanexit
            endif
            CLog name offset comp_size uncomp_size
        endif
next i