Luigi Auriemma [PGP]


Files extractor and reimporter, archives and file formats parser, advanced tool for reverse engineers and power users, and much more.

  • QuickBMS generic files extractor and reimporter 0.9.2 (quickbms)
    universal script based files extractor and reimporter.
    QuickBMS supports tons of games and file formats, archives, encryptions, compressions, obfuscations and other algorithms.

    QuickBMS uses a minimalistic GUI if the executable is double-clicked (launched normally) or from command-line if launched from the console, by using this second mode or a link to the executable it's possible to activate many useful and advanced options.

    the idea was born from the need of a simple and fast solution for handling the archives used by the majority of games without wasting time writing a stand-alone tool with tons of C code just for a basic file format.
    so this tool has been created mainly for myself for creating my extractors quickly on the fly, and secondly for any other user who wants do the same without learning a real programming language.
    the BMS language is basic, easy to use and exists from over 10 years, what I did was simply enhancing it for my personal requirements and making the life easier when handling complex archives and file formats.

    • open source and multiplatform, tested on Windows (even Win98) and GNU/Linux (x86 and PPC)
    • works from both command-line and GUI (Windows only, just double-click on quickbms.exe)
    • reimport and reimport2 modes for reinjecting the modified files back to the archives
    • support for tons of encryption algorithms, even some proprietary ones
    • support for tons of compression algorithms (over 700), even some proprietary ones
    • support for tons of hashing algorithms
    • support for other types of algorithms (like base64) and/or obfuscations (xor, rot and so on)
    • support for calling DLLs and raw dumped functions with almost any known calling convention
    • support for bits operation and switchable little/big endian
    • simple and dynamic language that allows to make many operations reducing the percentage of archives and formats that can't be supported easily
    • verbose option (-V) that displays all the needed details during reversing and testing of file formats
    • HTML output (-H) that automatically applies colors and names to the fields parsed during the usage of the scripts: example for on
    • possibility to use the tool as a blind scanner of compression, encryption and crc/checksum algorithms
    • support for network sockets, SSL and http/https
    • support for other alternative input/output interfaces like processes (included debugging and automatic breakpoint restoring), audio, video and Windows messages
    • support for the visualization and creation of various types of data like x86 assembly, IP addresses, time_t, FILETIME, ClassID and more
    • support for C-like structures and basic syntax for easy handling of file formats
    • support for the WCX packer plugins of Total Commander
    • support for any command-line decompressor/decrypter/anything_else via the EXECUTE method (Comtype and Encryption commands)
    • read and write operations
    • quickbms_4gb_files.exe is a native 32bit program with all the variables set as 64bit useful in some situations
    • planned future development that will cover more advanced features for reverse engineers and power users
    • customizable CRC engine
    • tons of scripts supporting hundreds of file formats and thousands of games
    • experimental games localization (strings editing)
    • creation of ISO images and ZIP archives as alternative outputs
    • embedded C compiler to use C functions at runtime
    • experimental IPC interfaces: named pipes, mailslot, web and dll
    • support for the WCX packer plugins of Total Commander

    Source Code / Linux:
      the full source code of the tool, it's separated from the executables to reduce the size of the download and avoiding confusion to the users.
      on Linux it's enough to go in the src folder and launch make.

    • quickbms.txt
      the first 3 sections are intended for any user while the rest is ONLY for developers and advanced users who want to understand and write scripts for QuickBMS.
    • quickbms_crc_engine.txt
      How to use the CRC calculation engine embedded in QuickBMS for calculating custom checksums.
    • userDefineLang.xml
      BMS syntax highlighting for Notepad++ (latest update: 18 Mar 2017)
    • a changelog.txt is available inside the package

    Support, help, feedback and suggestions:

    Search magics and signs:
    • BMS Search
      search keywords inside my BMS scripts.
      if you don't know the correct script, open your archive/file with a hex editor and check if there is a string (usually 4 bytes) at the beginning and insert it in the search form.

    Feeds with the latest scripts:
    • RSS
      new and updated scripts

    Special scripts for reverse engineering:
    (do NOT use them if you don't know what you are doing!):
    • QuickBMS comtype scanner 2: scanner of compression algorithms on a raw unknown compressed data file: + comtype_scan2.bat (0.1.1b)
      How to use:
      • for a graphical step-by-step check this page
      • dump the compressed data in a new file, maybe using a hex editor (you can call this file dump.dat)
      • create a new folder (for example c:\output_folder)
      • put comtype_scan2.bat, and quickbms.exe in the same folder
      • from the command-line type:
        • comtype_scan2.bat dump.dat c:\output_folder
          if you already know the decompressed size (for example 0x112233), use:
        • comtype_scan2.bat dump.dat c:\output_folder 0x112233
      • during this process you must press CTRL-C when you see quickbms stalled/freezed for some seconds and answer N when Windows will ask you "Terminate batch job (Y/N)?"
      • the whole process will take less than one minute
      • go in the output folder and verify all the created file with a hex editor
      • there are some tricks to make this work easier:
        • search for an expected string with grep, for example if you expect a wav file use grep -rs RIFF c:\output_folder
        • start the verification process from the biggest files
        • remove the files that have a size smaller than the original file
        • when you have identified the output file, search its number in the source file src\defs.h

    • QuickBMS encryption scanner 0.2: scanner of the various encryption algorithms available using a key and an optional ivec on a raw data file: + encryption_scan.bat (0.2)
      How to use:
      • The usage is the same as before, except for the optional size of the output file because there is no such parameter

    • CRC scanner: scanner of various crc/checksum algorithms: (0.1.2a)
      How to use:
      • dump the data on which you want to calculate the checksum in a new file, maybe using a hex editor (you can call this file dump.dat)
      • from the command-line type:
        • quickbms dump.dat > crc.txt
      • open the file crc.txt and search the checksum you were expecting and the relative settings to generate it, the result includes both the checksum and the same checksum with reversed endianess for easy search

    • ZIP password scanner - zipcrypto: (0.1)
      How to use, if you want to take the zip password of a game:
      • unpack the game executable if it's packed/protected, you can also dump the process (for example using dumproc)
      • run the strings tool over the executable redirecting the output to passwords_list.txt:
        • strings game.exe > passwords_list.txt
      • you can also use my Exestringz tool for scanning the executable and you can try two methods in case the first doesn't work:
        • exestringz -q 1 game.exe passwords_list.txt
        • exestringz -b -q 1 game.exe passwords_list.txt
      • from the command-line type:
        • quickbms
      • if it finds the password you will see a "password found" message

    Compiled versions of QuickBMS:

    Usage and examples:

    Whole collection of scripts available on this page:
      A daily made ZIP archive containing ALL the scripts on this page. One link to rule them all!

    QuickBMS is ever open to crazy ideas and suggestions so feel free to contact me with any feedback.

My scripts:

search a keyword inside the BMS scripts available on this website (case insensitive).
useful if you know the magic or the signature of an archive or an encryption and compression type and so on:

external scripts:
how to search a script:
  • search the name of the game in the search field in the left menu
  • search on google: "name of the game"

generic examples:
other example scripts relative to other stand-alone extractors already made by me in the Research page: