Skip to content
View in the app

A better way to browse. Learn more.

ResHax

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.
Help us keep the site running.

Possible next features of QuickBMS

Featured Replies

  • Author
  • Localization

Shokoniraya, posted Tue Apr 14, 2020 8:46 am (55897)


sir aluigi, can make possible to find some unknow bits in findloc?
like \xAD\x?E\xCE or \xBD\x??\xCA\xFC
  • Replies 679
  • Views 46
  • Created
  • Last Reply

Top Posters In This Topic

  • Author
  • Localization

aluigi, posted Tue Apr 14, 2020 10:12 am (55899)


I thought about it but it was complicated to implement so I don't think there will ever be such feature.
  • Author
  • Localization

aluigi, posted Fri Apr 17, 2020 9:54 am (56021)


Ok, do you know if it's really a custom lz77 or something already in use in quickbms under different name?
  • Author
  • Localization

chrrox, posted Fri Apr 17, 2020 3:21 pm (56032)


I tried compscan and nothing matched the output.
  • Author
  • Localization

cai_miao, posted Thu Apr 23, 2020 7:50 am (56211)


aluigi wrote:
The problem is that lz77wii is a container of N algorithms, in reimport mode it's not possible to know what algorithm was used during extraction and therefore quickbms selects just one of them hardcoded in the tool


then how can i force the script to use that algorithm? ty in advance
  • Author
  • Localization

aluigi, posted Thu Apr 23, 2020 8:37 am (56216)


You can do it by replacing "comtype lz77wii" "clog..." with something like this:
Code:
savepos OLD_OFFSET
goto OFFSET
get LZ77WII_TAG byte
get LZ77WII_SIZE threebyte
math OFFSET 4
math SIZE - 4
comtype lz77wii_raw10
clog NAME OFFSET SIZE LZ77WII_SIZE
goto OLD_OFFSET
  • Author
  • Localization

Shokoniraya, posted Fri May 01, 2020 12:03 am (56433)


sir aluigi, since QuickBMS is a powerful generic tool, do you have any plan to compile bms scripts as assembly exe files? i think its possible and it's better... because it is possible to write some seperated bms scripts to create a complete tool and compile it to exe, actually, your job is great sir aluigi, but i think quickbms is not fast... and i think it's not wierd, because quickbms works with many functions and sure it's a hard coded system, but if you create a programming studio for bms language and rewrite system from beginnig, it can be very fast, great and powerful than this, because it directly using C functions, so a standalone exe without any other unused codes can be a best programming language, and with developing this system, you can even make gui systems with that, your job can turn to a nificent thing if you develop it, nothing is hard, it just requeste time. complexily is just a set of simple things

don't leave it behind, you can make it, just like drawing, we can't see more colors with our own eyes, but we can use it in best way with these limited colors (limitions is not a bad thing always, because it can make us deep and masterful)
(sometimes, we must fall if we want to rise)

sorry for my bad grrammar, my original language is totaly different than english or any other latin ciphers
and if someone thinks this words is nothing but stupied things, then i can tell that can you are right and not right too (not hard to understand, we live with it right now) i hate emojis, i could use it in such time if it was okay for me
  • Author
  • Localization

wattostudios, posted Fri May 15, 2020 1:01 pm (56781)


Hi Aluigi,

I've been playing with BMS scripting, and noticed that I couldn't specify a compression type as a variable.

For example, lets say a file has the compression type "ZLIB" listed as a string within it. If I have this piece of script...
Code:
GetCT COMPRESSIONTYPE STRING 0x20
ComType COMPRESSIONTYPE


I would expect this to read the string "ZLIB" into a variable COMPRESSIONTYPE, and then use the Value of COMPRESSIONTYPE in the next line.However, if I run the above, it says something like "Compression type COMPRESSIONTYPE unrecognized"

To make the script work, I had to hard-code the compression types, like this...
Code:
GetCT COMPRESSIONTYPE STRING 0x20
If COMPRESSIONTYPE = ZLIB
  ComType ZLIB
ElIf COMPRESSIONTYPE = DEFLATE
  ComType DEFLATE
EndIf


The readme certainly doesn't mention the ability for ComType to use Variables. Is there something I need to do here, any tricks that I could use, or is this something that you could implement in the future?

Thanks.
  • Author
  • Localization

aluigi, posted Fri May 15, 2020 4:53 pm (56785)


@Shokoniraya
I already answered some posts ago. It's not possible to do that.

@wattostudios
Yeah, comtype must be a string so variables aren't supported.
Just remember to use "zlib" and "deflate" (with quotes) when doing comparison, it's not necessary but it's a good thing.
I don't think comtype will ever be implemented as variable, I don't remember the original reasons if it's something related to conflicts with other variables and names probably.
In the over 2000 scripts I made I never had this necessity.
  • Author
  • Localization

wattostudios, posted Sat May 16, 2020 3:22 am (56792)


Thanks Aluigi, just thought I'd ask, no worries.
I wouldn't say it's a necessity, but just something I thought about. I have seen some archives that list the compression method directly in the archive, which would be convenient to just pass straight in to QuickBMS, but it's not too hard to work around it 8-)
  • Author
  • Localization

Shokoniraya, posted Mon Sep 07, 2020 8:56 pm (58570)


sir aluigi, i have an idea for next version of QuickBMS

in -s "" "", we have to replace many escapes and replace \x0D\x0A to |
but how about file_compressed_var.bms? can you add a feature to use compressed var text like -s without replace any escape?
for example: -s 0xSWzdkGr/WfWtK-VIaEJwd wGlQJKVzevre vkIJKLXJwJWtImUOWEI
  • Author
  • Localization

spiritovod, posted Wed Sep 09, 2020 6:32 pm (58606)


I wonder if it's possible to add extension guessing for files, where magic value is not header, but the footer. For example, in UE4 files "uasset" magic is 0xC1832A9E for first bytes, while for "uexp" files the same magic will be last bytes in the file.
  • Author
  • Localization

HenryEx, posted Sat Sep 12, 2020 7:02 pm (58644)


I know this is meant for new features, but i haven't really found any closer info on it, so i thought i'd ask here.

The latest update 0.10.1 mentions implementing a few 010-like commands, but doesn't actually mention which ones. I briefly searched the manual for any mentions of 010 but didn't find any, and i haven't checked the entire thing closely again because it's so massive by now.

What exactly do these commands entail? Since i'm also working with 010, it might speed up my workflow a bit.
  • Author
  • Localization

aluigi, posted Sun Sep 13, 2020 10:11 pm (58659)


@Shokoniraya
I guess you can already do that with:
-s "set VAR compressed CONTENT"
Not sure what you mean about escapes but check if they work when you use \\ instead of \

@spiritovod
ok I added it to sign_ext.c just after the code that handled the tga "TRUETYPE" footer but I'm not sure if it will work well.

@HenryEx
If 010 editor uses some internal commands, they may be referenced in the parse_bms function of bms.c, they are not documented and just partially implemented.
While the C structures, which are the main part of 010, are implemented with some work-arounds.
quickbms will say something like "- c_structs (arguments)" when it parses these fields.


Hopefully tomorrow I should be able to release a beta with the things fixed till now.
  • Author
  • Localization

Shokoniraya, posted Mon Sep 14, 2020 12:04 am (58662)


sir aluigi, i mean compress a script file to use it in bat file instead making whole script to a single line and replace \x0D\x0A to ; or replace " to \" or % to %%

normally, we have to use it in this way
Code:
quickbms.exe -o -s "get SIZE asize ; log file 0 SIZE" "" file.bin


but how about just compressing a script file to use it? without any replaced escape and less size
just compressing bms file with file_compressed_var.bms
Code:
quickbms.exe -o -s eNoBHwDg/2dldCBTSVpFIGFzaXplDQpsb2cgZmlsZSAwIFNJWkWfTgmc file.bin

it could be useful for including huge scripts in command line
  • Author
  • Localization

aluigi, posted Mon Sep 14, 2020 6:47 pm (58673)


Ok I added that feature too.

This is the current beta:
https://aluigi.altervista.org/beta/quickbms_beta.zip

It's just quickbms.exe with the main issues fixed and main features added, it already contains the current version of the various external libraries.

Please let me know how it works and what other things remain to be fixed.

I still have stuff in my TODO list, for example:
- reimporting of data.win doesn't work as in version 0.9
- apparently there is a crash if you select thousands of files with quickbms (via gui)
- checking if append -1 works as expected
- adding more compression algorithms, maybe from garbro
- findarray / searcharray
- 64bit dll support
  • Author
  • Localization

Shokoniraya, posted Tue Sep 15, 2020 2:03 am (58694)


1) append -1
append -1 doesn't work correct yet
Code:
append -1
log NAME OFFSET SIZE
append


2) EXECUTE
EXECUTE problem still not fixed
http://www.mediafire.com/file/ew70myc2t ... m.zip/file
note: zip file has 0.10.0 quickbms.exe, please replace it with beta

3) lzo1x_999_compress
this script should compress input file to a compressed file, but give me this error: the variable index is invalid (-1), there is an error in QuickBMS (403)
is that possible to use lzo1x_999_compress or its just a function name?
Code:
comtype lzo1x_999_compress
get FILE_SIZE asize
clog compressed_file.compressed 0 FILE_SIZE FILE_SIZE


4) codepage problem and unicode names for input file
download/file.php?id=8840
those "Ianei" folder folder still created in output folder

about unicode names for input files, they are still has problem
- error in src\file.c line 597: fdnum_open()
Error: Invalid argument


5) xmath command
xmath still has problem with x
Code:
xmath VAR "15 x 16"
  • Author
  • Localization

aluigi, posted Wed Sep 16, 2020 12:50 pm (58716)


I just updated the beta.

1)
Fixed. I had to just read the whole file and move its content, this operation can't be done with a buffer, just whole or byte per byte (slow).

2)
It's not an error of quickbms, the script is messy and not clear what you want to do.
the script must have no access to the temporary files because their content is already moved to the output file and immediately deleted.
or do you mean another type of problem?

3)
you must use lzo1x_compress, because lzo1x_999_compress is the name of the function

4)
fixed, the error was related to how mkdir works, in short it's necessary to check both the return value and errno

5)
xmath doesn't support x because x can be a variable
xmath only supports non-alphanumeric operatorrs so what you want to do can be accomplished with && or ?align.
I added the possibility to use ?x too.
  • Author
  • Localization

spiritovod, posted Wed Sep 16, 2020 1:48 pm (58717)


Thanks for the additions and fixes. Could you please clarify about extension guessing for uexp - did you integrated it to the latest beta or it was about extension guessing in a whole for other formats. Because guessing for uexp doesn't work with the latest beta.
  • Author
  • Localization

aluigi, posted Wed Sep 16, 2020 6:35 pm (58720)


I added it to sign_ext.c but as far as I remember the signature checking is only limited to the first few bytes of the file, therefore no check on the tail is possible.
Sorry.
  • Author
  • Localization

spiritovod, posted Wed Sep 16, 2020 8:56 pm (58728)


I see. Then maybe you should remove uexp definition from the code to avoid possible problems, since uasset is using the same magic value, but for first bytes, and guessing for uasset works fine (though not sure if overlapping is possible in case of the same magic for multiple extensions).
Thanks for checking it anyway.
  • Author
  • Localization

aluigi, posted Wed Sep 16, 2020 9:20 pm (58730)


Ok.

In case someone is interested in why reimporting data.win in quickbms 0.10 gave a different result than 0.9:
viewtopic.php?p=58729#p58729
  • Author
  • Localization

Shokoniraya, posted Thu Sep 17, 2020 6:33 am (58734)


append 1- works fine
codepage problem solved, so there is no Ianei folder
and about EXECUTE, yes it fixed, i don't know why bms files was messed up, maybe UltraEdit broked the file, because that was not real one, no problem with EXECUTE anymore

here my correct EXECUTE example
Code:
math INPUT_NUMBER = 2

set MEMORY_FILE1 binary "0"
comtype EXECUTE "calc\\calc.exe %INPUT_NUMBER% / 32 >#OUTPUT#"
clog answer.txt 0 1 1 MEMORY_FILE1


and both && or ?x do the job, so maybe keep using ?x in xmath will be fine, right? thank you


all of this problem solved, but there is one problem, unicode names in input file
i tested with last beta version
but i get this error, but there is no problem in GUI mode, i get this error when i use it in command line (example zip uploaded)
- error in src\file.c line 602: fdnum_open()
Error: Invalid argument

for /r "input\" %%x in ("*.bin") do (
)
%%x could be used on any file with unicode name

unicode_input.zip

  • Author
  • Localization

aluigi, posted Fri Sep 18, 2020 7:39 pm (58756)


Perfect, I just updated the beta.

There is also a "diff" file in case someone is interested in the work-in-progress with the source code, but it doesn't include garbro.c (just finished today).
Guest
This topic is now closed to further replies.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.