Skip to content

taptipalit/dynpta

Repository files navigation

DynPTA

================================

Compiling LLVM toolchain with LTO

We provide our own LLVM toolchain. If you're interested in only running the Steensgaard's Analysis, you can skip steps 1 and 2 and jump right to the Steensgaard's analysis section. I'll move the Steensgaard's analysis to its own project soon.

  1. We need binutils in order to do LTO for Whole Program Analysis. The instructions to set it up correctly is here.

  2. Then compile LLVM

    1. cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=<Debug/Release> -DLLVM_TARGETS_TO_BUILD="X86" -DCMAKE_INSTALL_PREFIX=<YOUR_CUSTOM_INSTALL_DIR> -DLLVM_BINUTILS_INCDIR=<BINUTILS_DIR>/include ../

      Choose Debug/Release build and set up the directories correctly.

    2. make -jN (N = number of cores)

Steensgaard's Analysis Implementation

We provide a Steensgaard's pointer analysis as part of our prototype. In order to just run this analysis, use the following command.

$LLVMROOT/opt -steens-fast -skip-csa=true -print-all-pts $file.bc -o $fileout.bc

where $file.bc is the LLVM bitcode.

Encrypting sensitive data with DynPTA

  1. Update the environment variables at dynpta_tests/run_dynpta.sh to point to the paths on your system.

  2. Run

    ./run_dypta.sh $file

    where $file is the name of the bitcode without the .bc extension.

    For example, to run the test program test.c, run

    ./run_dypta.sh test

Citation

@article{dynpta, 
title={DynPTA: Combining Static and Dynamic Analysis for Practical Selective Data Protection}, 
booktitle={Proceedings of 42nd IEEE Symposium on Security and Privacy}, 
author={Palit, Tapti and Moon, Jarin Firose and Monrose, Fabian and Polychronakis, Michalis}, 
year={2021}}

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published