Analyzing DLLs using Seal

Seal takes as input DLL(s) obtained by compiling C# code bases. The main executable that starts the analysis is called "Checker.exe" and can be found in the "$SEALHOME\Bin" directory. To analyze a dll named input.dll stored in the directory "C:\" use the following command:

$SEALHOME\Bin\Checker.exe /in C:\input.dll

To analyze multiple DLLs that are inter-dependent follow the steps detailed below:

Configuring Seal

Seal allows the users to configure the analysis by exposing some parameters to the users.
Seal can be provided an optional Config file containing values for the parameters.
For example, see the config files stored in the directory "$SEALHOME\Configs".

To provide a config file to seal use the following command:

Checker.exe /in "input-dlls" /config-file "path-to-config-file"

If no config file is provided Seal uses the default configuration specified in $SEALHOME\Configs\default.config file

Parameters

Here, we discuss the parameters that can be specified in the config file. (There are some additional parameters not explained here . Users can ignore them. They are mainly used for development/debugging purposes).

Parameters that control the outputs of the analysis

Serialization Parameters

Note: the summaries once searialized remain persistent unless they are explicitly deleted from the database.
We use MS SQL compact 3.5 database to store the summaries. The database can be found in the DBs directory inside the $SEALHOME. The database uses four tables (relations). Every entry in the tables stores the name of the dll, that created the entry, in the field 'dllname'. One can use this field to (manually) clear the information corresponding to a dll, if necessary.
An alternative is to re-analyze the DLL by setting the "ClearDBContents" flag (explained below) to true.

Parameters that control the precision/scalability of the analysis

The calling context is a set of call-strings in our analysis. Setting the flag to false indicates that the size of the set is unbounded and so the analysis tracks the full (acyclic) context under which an abstract object is created. However, this may (severely) slow down the analysis on large programs.
This flag when set to true informs the analysis that the context-string has to be bound. The actual bound can be set using the following parameter.

Input file paths

The following are additional parameters to the analysis. We recommend not to change the values of these parameters.