Luigi Auriemma


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

  • QuickBMS generic files extractor and reimporter 0.6 (quickbms)
    script based files extractor and reimporter compatible with the BMS language (aka MexScript) and supporting tons of games file formats, archives, encryptions, compressions 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, using this second mode or a link to the executable it's possible to activate many useful and advanced options.
    the tool supports also the WCX packer plugins of Total Commander.

    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 and GNU/Linux (x86 and PPC)
    • works from both command-line and GUI (Windows only)
    • reimport feature for reinjecting the modified files back to the archives (if smaller/equal than the original files)
    • support for tons of encryption algorithms, even some proprietary ones
    • support for tons of compression algorithms, 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 and SSL
    • 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 for easier handling of file formats by specifying simply the fields in C notation
    • 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 at 64bit useful in some occasions
    • 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

    • 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: 06 Oct 2013)
    • 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.

    Special scripts for reverse engineering:
    • scanner of compression algorithms on a raw unknown compressed data file: + comtype_scan2.bat (0.1.1a)
      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

    • scanner of the various encryption algorithms available using a key and an optional ivec on a raw data file: + encryption_scan.bat (0.1.1)
      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

    • scanner of various crc/checksum algorithms: (0.1.1)
      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

    • 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:
      • if it finds the password you will see a "password found" message

    Old versions of QuickBMS:

    Usage and examples:

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

My main scripts:

other scripts written by me:

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: