diff --git a/.gitattributes b/.gitattributes index 8e948c534a1fd79cf59d786adc75fec0a4d091d7..1c3309e32ed75f8340c8f90434c6ef0098b93d56 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1 +1,10 @@ * text=auto !eol +/build-all.sh -text +/clean-all.sh -text +/get-peasoup-packages.sh -text +/irdb_vars -text +/jdh8d_set_env_vars -text +/postgres_setup.sh -text +/set_env_vars -text +/start_dev.sh -text +/svn.externals.uva_dev -text diff --git a/build-all.sh b/build-all.sh new file mode 100755 index 0000000000000000000000000000000000000000..ae9a92020207bae31f2a1aa05946505ae8cc6a6d --- /dev/null +++ b/build-all.sh @@ -0,0 +1,63 @@ +#!/bin/bash + +# check if DIR is the directory containing the build script. +BUILD_LOC=`dirname $0` +FULL_BUILD_LOC=`cd $BUILD_LOC; pwd` +echo $PEASOUP_UMBRELLA_DIR +if [ "$PEASOUP_UMBRELLA_DIR" != "$FULL_BUILD_LOC" ]; then + echo "PEASOUP_UMBRELLA_DIR differs from build-all.sh location ($FULL_BUILD_LOC)."; + echo "Did you source set_env_vars from the root of the umbrella working copy?"; + exit 1; +fi + +# stratafier +cd $PEASOUP_UMBRELLA_DIR/stratafier +make + +# strata +if [ ! "$STRATA_HOME" ]; then + echo "STRATA_HOME not set."; + exit 1; +fi + +if [ `uname -m` = 'x86_64' ]; then + # build 32-bit strata + if [ ! -d $STRATA_HOME32 ] ; then + cd $STRATA + make clean distclean + cd $PEASOUP_UMBRELLA_DIR + echo Creating strata 32-bit build directory + cp -R $STRATA $STRATA32 + fi + cd $STRATA_HOME32 + STRATA_HOME=$STRATA_HOME32 STRATA=$STRATA_HOME32 ./build -host=i386-linux + + # build x86-64 strata + cd $STRATA_HOME + ./configure;make + +else + cd $STRATA_HOME + ./build +fi + +# smp-static-analyzer +if [ ! "$SMPSA_HOME" ]; then + echo "SMPSA_HOME not set."; + exit 1; +fi +cd $SMPSA_HOME +./configure +make + +# security-transforms +if [ ! "$SECURITY_TRANSFORMS_HOME" ]; then + echo "SECURITY_TRANSFORMS_HOME not set."; + exit 1; +fi +cd $SECURITY_TRANSFORMS_HOME +./build.sh + +cd $PEASOUP_HOME +make + diff --git a/clean-all.sh b/clean-all.sh new file mode 100755 index 0000000000000000000000000000000000000000..24cfd210bc001b4c55da385812e864096dca40fa --- /dev/null +++ b/clean-all.sh @@ -0,0 +1,44 @@ +#!/bin/bash + +# check if DIR is the directory containing the build script. +BUILD_LOC=`dirname $0` +FULL_BUILD_LOC=`cd $BUILD_LOC; pwd` +echo $PEASOUP_UMBRELLA_DIR +if [ "$PEASOUP_UMBRELLA_DIR" != "$FULL_BUILD_LOC" ]; then + echo "PEASOUP_UMBRELLA_DIR differs from build-all.sh location ($FULL_BUILD_LOC)."; + echo "Did you source set_env_vars from the root of the umbrella working copy?"; + exit 1; +fi + +# stratafier +cd $PEASOUP_UMBRELLA_DIR/stratafier +make clean + +# strata +if [ ! "$STRATA_HOME" ]; then + echo "STRATA_HOME not set."; + exit 1; +fi +cd $STRATA_HOME +./configure +make clean +cd $PEASOUP_UMBRELLA_DIR/ +rm -Rf strata32 + +# smp-static-analyzer +if [ ! "$SMPSA_HOME" ]; then + echo "SMPSA_HOME not set."; + exit 1; +fi +cd $SMPSA_HOME +./configure +make clean + +# security-transforms +if [ ! "$SECURITY_TRANSFORMS_HOME" ]; then + echo "SECURITY_TRANSFORMS_HOME not set."; + exit 1; +fi +cd $SECURITY_TRANSFORMS_HOME +make clean + diff --git a/get-peasoup-packages.sh b/get-peasoup-packages.sh new file mode 100755 index 0000000000000000000000000000000000000000..f42182ab6b4844d6180697b2b5452b4efebed727 --- /dev/null +++ b/get-peasoup-packages.sh @@ -0,0 +1,96 @@ +#!/bin/bash + +# Needed to build PEASOUP components +BASE_PKGS=" + bison + flex + g++ + nasm + openjdk-6-jre + sharutils + subversion + xdotool + gcc-multilib + g++-multilib + realpath + libelf-dev + libxqilla-dev + libxerces-c-dev + screen + libxml2-dev + libstdc++6:i386 + coreutils" +# TODO: don't require i386 libraries if not running MEDS (eg using IDA server) + +# For clients of IRDB +CLIENT_IRDB_PKGS=" + postgresql-client + pgadmin3 + libpqxx3-dev + libmysqlclient-dev + cmake + automake1.9" + +# For IRDB server +SERVER_IRDB_PKGS="postgresql" + +# For building test subjects +TEST_PKGS=" + asciidoc + autoconf + bison + gawk + gettext + libx11-dev + libfontconfig1-dev + libperl-dev + poedit + yasm + xvfb" + +# For handling SQL command injections +SQL_PKGS="sqlite3 libsqlite3-dev mysql-client mysql-server libmysqlclient-dev" + +# For LDAP +LDAP_PKGS="ldap-utils slapd libldap2-dev" + +ALL_PKGS="$BASE_PKGS $CLIENT_IRDB_PKGS $SERVER_IRDB_PKGS $TEST_PKGS $SQL_PKGS $LDAP_PKGS" + + +if [[ "$PEASOUP_UMBRELLA_DIR" == "" ]]; then + echo "PEASOUP_UMBRELLA_DIR not found" + echo "Did you source set_env_vars and use sudo -E" + exit 1 +fi + +for arg in $@; do + case $arg in + all) + sudo apt-get install $ALL_PKGS + ;; + base) + sudo apt-get install $BASE_PKGS + ;; + client-irdb) + sudo apt-get install $CLIENT_IRDB_PKGS + ;; + server-irdb) + sudo apt-get install $SERVER_IRDB_PKGS + ;; + irdb) + sudo apt-get install $CLIENT_IRDB_PKGS $SERVER_IRDB_PKGS + ;; + test) + sudo apt-get install $TEST_PKGS + ;; + sql) + sudo apt-get install $SQL_PKGS + ;; + ldap) + sudo apt-get install $LDAP_PKGS + ;; + *) + echo "$arg not recognized. Recognized args: all, base, client-irdb,"; + echo " server-irdb, irdb, test, sql."; + esac +done diff --git a/irdb_vars b/irdb_vars new file mode 100644 index 0000000000000000000000000000000000000000..634b8266825d44912fd28586ee269f2d1110af99 --- /dev/null +++ b/irdb_vars @@ -0,0 +1,4 @@ +export PGHOST=127.0.0.1 +export PGUSER=$USER +export PGPORT=5432 +export PGDATABASE=peasoup_$USER diff --git a/jdh8d_set_env_vars b/jdh8d_set_env_vars new file mode 100644 index 0000000000000000000000000000000000000000..9b0df1a381f2e9dacaddb077543a8bb254521240 --- /dev/null +++ b/jdh8d_set_env_vars @@ -0,0 +1,9 @@ + +. set_env_vars + +export STRATA_IBTC=1 +export STRATA_IBTC_SHARED=1 +export STRATA_IBTC_SIZE=$(expr 128 \* 1024) +export STRATA_FCACHE_SIZE=$(expr 64 \* 1024 \* 1024) +export PEASOUP=$PEASOUP_UMBRELLA_DIR + diff --git a/postgres_setup.sh b/postgres_setup.sh new file mode 100755 index 0000000000000000000000000000000000000000..916d857ae4f81ead9bc387c92ddbd82b2e0f8374 --- /dev/null +++ b/postgres_setup.sh @@ -0,0 +1,20 @@ +#!/bin/bash + +#Add PostGres password file for modifying the database +printf ":5432::$USER:1qaz2wsx\nlocalhost:5432:*:$USER:1qaz2wsx\n127.0.0.1:5432:*:$USER:1qaz2wsx" > $HOME/.pgpass +chmod og-rw $HOME/.pgpass + +#Allow remote access to PostGres +sudo su -c "printf \"\nhost \t all \t all \t 127.0.0.1/16 \t md5\nhostssl all \t all \t 127.0.0.1/16 \t md5\n\" >> /etc/postgresql/9.1/main/pg_hba.conf" +printf "\nlisten_addresses = '*'\n" | sudo tee -a /etc/postgresql/9.1/main/postgresql.conf > /dev/null + +#Restart PostGres +sudo service postgresql restart + +#Create Database User and Table +echo "CREATE ROLE $USER WITH CREATEDB LOGIN NOSUPERUSER NOCREATEROLE PASSWORD '1qaz2wsx'" | sudo -u postgres psql +sudo su -c "createdb -O $USER peasoup_$USER" postgres + +#Setup the Database to store PEASOUP info +source set_env_vars +$PEASOUP_HOME/tools/db/pdb_setup.sh diff --git a/set_env_vars b/set_env_vars new file mode 100644 index 0000000000000000000000000000000000000000..28a0f4e911a85f09682b08aad2cdb109e4470a4a --- /dev/null +++ b/set_env_vars @@ -0,0 +1,38 @@ + + +export PEASOUP_UMBRELLA_DIR=`pwd` +export STRATAFIER_OBJCOPY=$PEASOUP_UMBRELLA_DIR/binutils-2.19/binutils/objcopy +export TOOLCHAIN=$PEASOUP_UMBRELLA_DIR/diablo_toolchain +export PEASOUP_HOME=$PEASOUP_UMBRELLA_DIR/peasoup_examples +export PIN_HOME=$PEASOUP_HOME/tools/pin +export NICECAP_HOME=$PEASOUP_UMBRELLA_DIR/nicecap_example +export SMPSA_HOME=$PEASOUP_UMBRELLA_DIR/SMPStaticAnalyzer +export STRATAFIER=$PEASOUP_UMBRELLA_DIR/stratafier +export IDAROOT=$PEASOUP_UMBRELLA_DIR/idapro65/ +export IDASDK=$PEASOUP_UMBRELLA_DIR/idapro65_sdk +export STRATA=$PEASOUP_UMBRELLA_DIR/strata +export STRATA_HOME=$STRATA +export STRATA32=$PEASOUP_UMBRELLA_DIR/strata32 +export STRATA_HOME32=$STRATA32 + +export SECURITY_TRANSFORMS_HOME=$PEASOUP_UMBRELLA_DIR/security_transforms +if [[ ! "$LD_LIBRARY_PATH" =~ (^|:)"$PEASOUP_UMBRELLA_DIR/lib:$PEASOUP_UMBRELLA_DIR/grace/concolic/bin:$STRATA/lib"(:|$) ]] +then + export LD_LIBRARY_PATH=$PEASOUP_UMBRELLA_DIR/lib:$PEASOUP_UMBRELLA_DIR/grace/concolic/bin:$STRATA/lib:$LD_LIBRARY_PATH +fi + +#Get IDAPRO to work with no errors +export TVHEADLESS=1 + +source ./irdb_vars + +export GRACE_HOME=$PEASOUP_UMBRELLA_DIR/grace +export YICES_HOME=$GRACE_HOME/third-party/yices-sdk/1.0.34/linux32/bin +export PATH=$PATH:$GRACE_HOME/concolic/bin:$YICES_HOME +export SCONSFLAGS="exceptions=1 x86=1 tool=1 hprof=0 cpuprof=0 lm_required=false gen_lmi=0 offsite=1 irdb_path=$SECURITY_TRANSFORMS_HOME/libIRDB -j 2" + +#moving this to setenv vars, as it's not global and breaks our peasoup installation +# adjust to your SVN username +#export SVN_USERNAME=$USER + +source ./set_testing_env_vars diff --git a/start_dev.sh b/start_dev.sh new file mode 100755 index 0000000000000000000000000000000000000000..22b06a2f1a9f1b2cdcdc56b4b7c9d4a48819a4d5 --- /dev/null +++ b/start_dev.sh @@ -0,0 +1,9 @@ +#/bin/sh + + +if [ -z "$1" ]; then + echo "usage: $0 <externals config file>" +fi + +svn propset svn:externals . -F $1 +svn up diff --git a/svn.externals.uva_dev b/svn.externals.uva_dev new file mode 100644 index 0000000000000000000000000000000000000000..3582bdd6728fafe90ffc06dd5298184ae289366d --- /dev/null +++ b/svn.externals.uva_dev @@ -0,0 +1,8 @@ +diablo_toolchain http://peasoup.cs.virginia.edu/repos/diablo_toolchain/trunk/ +idapro65 http://peasoup.cs.virginia.edu/repos/idapro65/trunk/ +idapro65_sdk http://peasoup.cs.virginia.edu/repos/idapro65_sdk/trunk/ +strata http://peasoup.cs.virginia.edu/repos/strata/trunk/ +peasoup_examples http://peasoup.cs.virginia.edu/repos/peasoup_examples/trunk/ +security_transforms http://peasoup.cs.virginia.edu/repos/security_transforms/trunk/ +SMPStaticAnalyzer http://peasoup.cs.virginia.edu/repos/SMPStaticAnalyzer/trunk/ +stratafier http://peasoup.cs.virginia.edu/repos/stratafier/trunk/