Git Product home page Git Product logo

libmspdb's Introduction

IntroVirt

Description

IntroVirt, short for introspective virtualization, is a customized Hypervisor and library that provides a robust virtual machine introspection (VMI) application programming interface (API). VMI is the process of looking at the memory contents of a virtual machine during runtime. By applying knowledge of the guest operating system, introspection can be used for a variety of applications, including reverse engineering, debugging software, and securing guest VMs by limiting access to files or limiting an executing application’s functionality.

IntroVirt consists of two components: a patched version of the KVM Hypervisor, and the IntroVirt userland library.

Quick start

GitHub release (latest by date)

First, we need to get on the same kernel version supported by kvm-introvirt, which is currently Ubuntu Focal's 5.4.0-x:

$ uname -r
5.4.0-109-generic

On Ubuntu 20.04 (Focal), we can revert to the Linux kernel version 5.4.0-x by disabling HWE. The latest security patches are still provided by Canonical. To check if HWE is enabled, we can run hwe-support-status (no output means disabled, otherwise HWE is enabled).

To install on Ubuntu focal from the latest Github release.

mkdir introvirt_pkgs && cd introvirt_pkgs
wget https://github.com/IntroVirt/kvm-introvirt/releases/latest/download/kvm-introvirt.zip
wget https://github.com/IntroVirt/libmspdb/releases/latest/download/libmspdb.zip
wget https://github.com/IntroVirt/IntroVirt/releases/latest/download/introvirt.zip
unzip *.zip
sudo apt install *.deb

We will need to be booted into the correct kernel, based on the latest version of kvm-introvirt. If properly configured, running sudo ivversion will return a supported hypervisor.

Interested In Working For AIS?

Check out our Can You Hack It?® challenge and test your skills! Submit your score to show us what you’ve got. We have offices across the country and offer competitive pay and outstanding benefits. Join a team that is not only committed to the future of cyberspace, but to our employee’s success as well.

ais

Building on Ubuntu Linux

Install build dependencies:

If using the launchpad PPA, libmspdb-dev can be installed as a package:

sudo apt-get install cmake libcurl4-openssl-dev libboost-dev libboost-program-options-dev libboost-stacktrace-dev liblog4cxx-dev libmspdb-dev python3-jinja2 python3 doxygen clang-format git

Otherwise, build and install libmspdb

sudo apt-get -y cmake libcurl4-openssl-dev libboost-dev git
git clone https://github.com/IntroVirt/libmspdb.git
cd libmspdb/build/
cmake ..
make
sudo make install

Note: You will also have to build and install kvm-introvirt if not using the PPA.

Build and install IntroVirt:

cd build
cmake ..
make
sudo make install

Building a source package for Launchpad

First you'll need to copy the distro specific files into place:

cd debian/
cp control.focal control
cp changelog.focal changelog
dch -i # Bump the package version
cp changelog changelog.focal
cd ..

Next, build the source package:

debuild -S -sa

Finally, upload to launchpad

dput ppa:<ppa name> introvirt_<version>_source.changes 

Usage Instructions

The included IntroVirt tools have their own usage instructions. See the tools/ folder.

You can try system call monitoring with sudo ivsyscallmon -D <domain>. See sudo ivsyscallmon --help for more information.

Resources

IntroVirt provides some useful resources to learn how to use it including:

  • Documentation: TBD
  • Examples: TBD
  • Unit Tests: TBD

If you have any questions, bugs, or feature requests, please feel free to ask on any of the following:

If you would like to help:

License

IntroVirt is licensed under the Apache v2.0 License.

Related

If you’re interested in IntroVirt, you might also be interested in the following projects:

LibVMI:
https://github.com/libvmi/libvmi

Bitdefender:
https://github.com/bitdefender

HVMI:
https://github.com/hvmi/hvmi

libmicrovmi:
https://github.com/Wenzel/libmicrovmi

libmspdb's People

Contributors

bocajspear1 avatar chp-io avatar srpape avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

libmspdb's Issues

Update README

README doesn't have much information. Update to match main IntroVirt repo's README format.

Automate the creation of debian packaging related files via CMake

We currently have a debian directory which contains deb packaging related files. They have to be updated to keep track of the package version, change logs, install scripts, etc. which requires some manual work and discrepancies can be introduced, as these files duplicate some info provided in cmake scripts.

Instead of tracking these debian files, we should let CMake generate these for us, by leveraging CMake's templating system, variables, etc.

Update README to include instructions for the pre-built packages

We now have a CI that build and upload the debian packages to Github releases. We should update the README to provide instructions for downloading and installing the pre-built packages. However, we should also update the filename of the artifact uploaded to Github release to not include the version, as this is needed for downstream projects to easily pull the libmspdb pre-built package.

Tasking:

  • Update gh-release.yml to push a version-less artifact to Github release
  • Update the README to include a section that shows how to download and install the pre-built debian packages

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.