####################################################################### QuickBMS by Luigi Auriemma e-mail: aluigi@autistici.org web: aluigi.org home: http://quickbms.aluigi.org ####################################################################### 1) Introduction 2) Usage 3) Reimport the extracted files 4) How to create scripts (for developers only!) 5) Experimental input, output and other features 6) Notes 7) Support 8) Additional credits ####################################################################### =============== 1) Introduction =============== QuickBMS is a multiplatform extractor engine that can be programmed through some simple textual scripts for extracting files and information from the archives of any program and moreover games. The script language from which QuickBMS is derived is MexScript documented here: http://wiki.xentax.com/index.php/BMS So QuickBMS is FULLY compatible with that original syntax and all the scripts that were created here: http://forum.xentax.com/viewtopic.php?t=1086 QuickBMS supports also the WCX plugins of Total Commander: http://www.totalcmd.net/directory/packer.html http://www.ghisler.com/plugins.htm I improved the original BMS language for removing some implied fields (like the file number in some commands) and adding new commands (like Encryption) and behaviours (like negative GoTo) that allow QuickBMS to work with tons of simple and complex formats and even doing things like modifying files, creating new files with headers and reimporting files back in their archives. The tool is open source under the GPL license and works on both Windows and Linux and on both little and big endian architectures like Intel and PPC. The official homepage of QuickBMS is: http://quickbms.aluigi.org In case it doesn't work try: http://aluigi.altervista.org/quickbms.htm For Linux users there is a Makefile in the src folder, the only requirements are openssl, zlib and bzip2 while the optional components are ucl, mcrypt and tomcrypt (uncomment the commented line near the end of the Makefile to enable them). If your distro supports apt-get and you have problems during the usage of make try the following: apt-get install gcc g++ zlib1g-dev libbz2-dev libssl-dev liblzo2-dev unicode ####################################################################### ======== 2) Usage ======== Simple and quick: - double-click on quickbms.exe - select the script or the plugin for the type of archive you want to extract (for example zip.bms if it's a zip file) - select the archive or multiple files you can also select a whole folder by entering in it and then typing * or "" in the "File name:" field and select Open - select the output folder where extracting the files (you can specify any filename, it will be ignored because only the directory is taken) - watch the progress of the extraction That one was the simple "GUI" usage but QuickBMS can do various other things when launched from the console because it supports various command-line options for advanced users or for who writes scripts. You can view all the available options simply launching QuickBMS without arguments, example: Usage: quickbms [options] <script.BMS> <input_archive/folder> [output_folder] Options: -l list the files without extracting them -f W filter the files to extract using the W wildcards separated by comma or semicolon, example -f "*.mp3,*.txt;*myname*" if the filter starts with ! it's considered an ignore filter the filter can be also a text file containing filters example: quickbms -f "*.mp3;!*.ogg" script.bms archive.dat output example: quickbms -f myfilters_list.txt script.bms archive.dat please use {} instead of * to avoid problems on Windows -F W as above but works only with the files in the input folder (if used) example: quickbms -F "*.dat" script.bms input_folder output_folder -o if the output files already exist this option will overwrite them automatically without asking the user confirmation -k keep the current files if already exist without asking (skip all) -r experimental reimport option that should work with many archives: quickbms script.bms archive.pak output_folder modify the needed files in output_folder and maybe remove the others quickbms -w -r script.bms archive.pak output_folder you must read section 3 of quickbms.txt before using this feature -s SF add a script file or command before the execution of the input script, useful if an archive uses a different endianess or encryption and so on SF can be a script or directly the bms instruction you want to execute -u check if there is a new version of QuickBMS available -. don't terminate QuickBMS if there is an error while parsing multiple files (like wrong compression or small file), just continue with the other files in the folder Advanced options: -d automatically create an additional output folder with the name of the input folder and file processed, eg. models/mychar/mychar.arc/FILES, -d works also if input and output folders are the same (rename folder) -D similar to -d but will not create the folder with the filename -E experimental option for automatically reversing the endianess of any file simply reading it field by field (so each get will produce a put) -c quick list of the basic BMS commands and some notes about this tool -S CMD execute the command CMD on each file extracted, you must specify the #INPUT# placeholder which will be replaced by the name of the file example: -S "lame -b 192 -t --quiet #INPUT#" -Y automatically answer yes to any question -O F redirect the output of all the extracted files to the file F Debug and experimental options: -v verbose debug information, useful for verifying possible errors -V alternative verbose output, useful for programmers -L F dump the offset/size/name of the files inside the file F -x use the hexadecimal notation in myitoa (debug) -0 no extraction of files, useful for testing a script without using space -R needed for the programs that act as interface for QuickBMS -a S pass arguments to the input script like quickbms_arg1, 2, 3 and so on -H cool HTML hex viewer output, use it only with very small files! -X cool hex viewer output on the console (support Less-like keys) -9 toggle XDBG_ALLOC_ACTIVE (enabled) -8 toggle XDBG_ALLOC_INDEX (enabled) -7 toggle XDBG_ALLOC_VERBOSE (disabled) -6 toggle XDBG_HEAPVALIDATE (disabled) -3 execute an INT3 before each CallDll Features and security activation options: -w enable the write mode required to write physical input files with Put* -C enable the usage of CallDll without asking permission -n enable the usage of network sockets -p enable the usage of processes -A enable the usage of audio device -g enable the usage of video graphic device -m enable the usage of Windows messages Remember that the script and the input archive/folder are ever REQUIRED and must be specified at the end of the command-line so if you want to list all the mp3 files in a particular archive you must use: quickbms -l -f "*.mp3" zip.bms myfile.zip quickbms -l -f "*.mp3;*.ogg" zip.bms myfile.zip quickbms -l -f "*.mp3;*.ogg,*filename*" zip.bms myfile.zip quickbms -l -f file_containing_the_filters.txt zip.bms myfile.zip QuickBMS supports also a folder as input which means that with a single command it's possible to unpack all the archives of a game directly using QuickBMS. Imagine to use the zip.bms script with all the zip files located in the c:\windows\temp folder: quickbms -F "*.zip" zip.bms "c:\Program Files" c:\output_folder Note: in case "*.zip" doesn't work you can use {} instead of *: "{}.zip" Except for -l, -f, -F and maybe -o and -s options the other are intended for debugging, special features or enabling/disabling some options and so should be ignored by the normal users. If the extraction with a particular script is too slow or scanning a folder takes too much memory and time try using the -9 option that disables the memory protection. You can apply these options directly in a link/shortcut to quickbms so that you can use the double-click method and all the command-line options you desire. In the same package you should find also quickbms_4gb_files.exe (previously known as quickms64_test.exe) that is an "experimental" version that uses 64bit numbers instead of the original 32 bits: - it supports archives and files bigger than 4 gigabytes - it may have problems to work with some "particular" scripts - it's a native 32bit application so works on both 32 and 64bit systems - it's experimental and so not much supported, problems like crashes and incorrect math operations can happen often --- Advanced users could find useful also the other options: -d automatically creates a folder with the name of the input file where placing all the files, sometimes it could be useful in some rare cases where users needed it. -E if you have a bms script that simply reads a file format you can change the endianess of all its numeric fields on the fly simply using this option. for example if you have a "get SIZ...
BumblebeeTransformers