Detects Windows-compatible application bitness, without ever running it.
- Never runs the executable at any point
- Host OS can run the application tested (for example, Windows XP, but not Vista, and a DOS app)
- Minimum byte-size applicable is always returned (for example, 32-bit apps on 64-bit host OS are analyzed to use 32-bit word size, even if it is emulated)
- WinAPI may be glitchy, hence their output is doubted
- WinAPI should be versatile
- Beta+
exe2wordsize <path_to_app>
exe2wordsize <path_to_app> * <args>
exe2wordsize C:/Projects/idk/Project1.exe
exe2wordsize "C:/Projects/idk/Project1.exe" * M=2 R=8192
<path_to_app> - Path to your executable. "-tolerable
* - Delimiter. Only required to use optional args.
<args> - Optional arguments, space-delimited. Supported args below,
- M=(number) - Set analysis mode. 3 modes supported,
- 0 - Automatic and flexible (Default)
- 1 - Rely only on WinAPI. 64-bit input may be unreliable
- 2 - Rely only on raw-reading. 32/64-bit detection only
- R=(number) - In raw-reading mode (M=2), how many bytes to read at most (Hint: Only used in MODE = 2, default 8192)
In JSON format,
- path: path supplied
- args: arguments supplied
- time: Unix timestamp
- code: (error-)code
- code_desc: (error-)code description
- wordsize: deduced wordsize (bitness)
- desc: analytical description
- walkthrough: walkthrough process taken
-
[Recommended for compatibility] Get a Windows XP VM
-
Get Microsoft Visual Basic 6.0
- Tip: There is a portable build, only a few megabytes. Look up Portable Microsoft Visual Basic 6.0 SP6
-
Start Microsoft Visual Basic 6.0, open the project.
-
Go to File → Make *.exe → Save
-
Patch the app for CLI use:
-
You can use my AMC patcher. For example,
amc C:\Projects\exe2wordsize\exe2wordsize.exe 3 -
Or you can use the original Nirsoft's Application Mode Changer (docs), unpack the archive and then run appmodechange.exe
-
-
Done!
SHGetFileInfoIS buggy on 64-bit executables. HenceMODE=2had to be implementedGetBinaryTypeBinaryType IDs are poorly documented
- For binary reading,
InputBreturns some patterned gibberish, despite documentation online. UseInputinstead
- No straightforward way in Visual Basic 6 to parse arguments → worked around using
*delimiter.
-
Merge Vertical icon by Icons8
- Although I have their subscription, better safe than sorry
-
Much of useful online documentation chained together!
My other small Windows tools,
- AMC_patcher-CLI – (CLI) Patches app's SUBSYSTEM flag to modify app's behavior.
- exe2wordsize – (CLI) Detects Windows-compatible application bitness, without ever running it.
- SCAPTURE – (GUI) Simple screen-capturing tool for embedded systems.
- txtShear – (CLI) Fast engine to skew (or shear) text by a desired angle, emulating handwriting.
