"You just throw it in and BAM! It works!"
The Binary Analysis Metadata (BAM!) tool collects and analyzes Windows updates, binaries, and symbols.
Develop a tool that can scan Windows updates, store information about those updates, obtain symbols for binary files, and analyze said information
symchk.exe will prompt the user to accept an Microsoft EULA when a symbol is going to be download from Microsoft's server. The symsrv.yes file (i.e., the YES file) is part of the Windows SDK installation in \Debugger\
Enable the Enable Win32 long paths policy under Administrative Templates > System > FileSystem. Due to the nature of how Windows updates are structured and named, they are given very long names when decompressed. BAM! will not run unless this group policy is enabled. Additionally, to avoid other long name errors during extraction and until the issue is resolved in the program, extract update contents to a single character named directory.
Display help
py.exe main.py
Create or use current DB, extract files at path to updates, download symbols from Microsoft's symbol server (initially or continuous use) and store them at path to where syms are to be stored:
py.exe main.py -x -p "path to updates" -pd "path to extract files to" -sp "path to where syms are to be stored"
Note: The script will always attempt to re-download symbols for PE files previously not downloaded.
Create or use current DB, extract files and download symbols from a specific symbol server (initially or continuous use):
py.exe main.py -x -p "path to updates" -pd "path to extract files to" -ss "symstore location" -sp "path to where syms are to be stored"
Note: The script will always attempt to re-download symbols for PE files previously not downloaded.
Create or use current DB, extract files and verify symbols using local symstore (initially or continuous use):
py.exe main.py -x -p "path to updates* -pd "path to extract files to" -sl -ss "directory path to symstore location or symbol location" -sp "path to where syms are to be stored"
Create or update current DB (requires update file, extracted files, downloaded symbols):
py.exe main.py -c -p "path to updates" -pd "path to extract files too" -sl -ss "directory path to symstore location or symbol location" -sp "path to where syms are to be stored"