Static Module Verifier technology enables full module analysis using Microsoft Azure.
Перейти к файлу
microsoft-github-policy-service[bot] 733a4ba919
Auto merge mandatory file pr
This pr is auto merged as it contains a mandatory file and is opened for more than 10 days.
2023-06-12 20:52:53 +00:00
Doc delete rawcfgf and their obj.li files, update documentation 2016-08-03 10:23:28 -07:00
SMVActionsTable Bump Newtonsoft.Json from 10.0.2 to 13.0.1 in /SMVActionsTable 2022-06-22 17:06:15 +00:00
SmvAutomation Update EntityFramework dependency. (#34) 2021-06-16 12:29:21 -07:00
SmvCloudWorker Bump Newtonsoft.Json from 10.0.2 to 13.0.1 in /SmvCloudWorker 2022-06-22 18:55:43 +00:00
SmvCmdlets Bump Newtonsoft.Json from 6.0.8 to 13.0.1 in /SmvCmdlets 2022-06-22 18:57:27 +00:00
SmvDb Update EntityFramework dependency. (#34) 2021-06-16 12:29:21 -07:00
SmvInterceptor Update EntityFramework dependency. (#34) 2021-06-16 12:29:21 -07:00
SmvInterceptorWrapper Fix regex detection of absolute paths in intercepted build. (#50) 2022-08-24 16:59:22 -07:00
SmvLibrary Bump Newtonsoft.Json from 10.0.2 to 13.0.1 in /SmvLibrary 2022-06-22 18:50:21 +00:00
SmvLineCounter Update EntityFramework dependency. (#34) 2021-06-16 12:29:21 -07:00
SmvService Update Azure guest OS version to WS2019 2021-09-09 17:47:46 -07:00
StaticModuleVerifier Additional EntityFramework reference fix. (#40) 2021-07-24 10:50:48 -07:00
deployment Fixes #3 2016-12-01 14:24:00 -08:00
.gitignore change .gitignore 2017-02-16 11:05:38 -08:00
LICENSE Initial commit 2016-09-13 11:33:48 -07:00
README.md Update README.md (#32) 2021-06-16 12:29:31 -07:00
SECURITY.md Microsoft mandatory file 2023-06-02 20:41:33 +00:00
smv.sln Updating database, adding db code to proj, making Automation debug folder self sufficient 2017-06-14 13:39:40 +05:30

README.md

Static Module Verifier

Static Module Verifier enables two things at it's core:

  • Building IR for a module to perform full program analysis
  • Scaling the analysis using the Azure cloud

StaticModuleVerifier supports multiple build environments, and can produce IR based on any toolchain that you specify. Examples of such toolchains are the [SMACK] (https://github.com/smackers/smack/) toolchain and the [SLAM] (https://www.microsoft.com/en-us/research/project/slam/) toolchain, which is also used as the frontend in the [Static Driver Verifier] (https://msdn.microsoft.com/en-us/library/windows/hardware/ff552808(v=vs.85).aspx) project.

StaticModuleVerifier takes as input a configuration file that specifies the series of actions to execute for building, intercepting, and then performing analysis. Details of the configurations can be found in the documentation folder.

Build

Windows

  • Prerequisites:
    • Visual Studio 2015
    • Microsoft Azure SDK for VS 2015: version 2.9 .NET
    • NuGet with default configurations
  • After cloning, you should be able to open the smv.sln file in your repository in VS2015
  • The smv.sln solution should build in VS2015

Usage

Packaging

StaticModuleVerifier expects the following directory structure for plugins:

  • bin: all StaticModuleVerifier core binaries are placed here (including external dependencies)
  • analysisPlugins: analysis plugins are created in an analysisPlugins folder which resides at the same level as the bin folder (where you placed all the binaries).
    • bin: anlaysis plugin specific binaries (your checker etc.) and top level script for invoking StaticModuleVerifier
    • configurations: configurations that are to be used for StaticModuleVerifier.exe

The final directory structure should look as follows:

  • %SMV% (top level folder where you created your deployment)
    • bin: contains all binaries, and today, the intercept.xml as well
    • analysisPlugins: contains sub folders that have analysis plugins
      • SDV: Static Driver Verifier analysis plugin
      • bin: binaries that are SDV specific. Usually also a cmd script that wraps calls to smv.exe
      • configurations: StaticModuleVerifier configurations for build and analysis
      • other folders can be created as necessary

Plugin

Coming soon...

Interception

Coming Soon...

SMV and the Azure Cloud

  • Deploying to Azure
    • You will need a valid subscription for Azure
    • You will need to create the following:
      • Storage service with your name of choice (for example, MySmvCloud)
        • Create the following containers: smvversions, smvactions, smvresults
      • Service bus with the same name as the service (MySmvCloud) and a queue called smvactions
      • Cloud service with same name as the service (MySmvCloud)
      • Queue named smvactions
    • Edit the following files for the connection strings for your newly created services:
      • SmvCloud\ServiceConfiguration.Cloud.cscfg
      • SmvLibrary\CloudConfig.xml
      • SmvCloudWorkerContent\CloudConfig.xml
  • After creating your deployments
  • To use the cloud, you can add executeOn="cloud" to any analysis action node in your configurations, and it will execute using the SMV cloud

Miscellaneous tools

  • Azure Storage Explorer for viewing storage accounts and their contents