DASCA combines dynamic and static techniques for analysing code for finding security (i.e., vulnerabilities), safety, or reliability problems.
Go to file
Michael Herzberg d0de8dacd4 Part two of the changes from protected to public. 2016-09-15 11:44:14 +01:00
externals WALA should now track master. 2016-08-20 10:53:04 +01:00
src Part two of the changes from protected to public. 2016-09-15 11:44:14 +01:00
.gitignore Ignore configured crosslanguage launcher. 2016-09-12 08:40:55 +01:00
.gitmodules Make submodule externals/WALA tracking master. 2016-08-20 10:48:55 +01:00
CITATION Added ESSoS 2016 publication. 2016-07-28 23:51:21 +01:00
LICENSE Initial commit 2015-05-30 23:28:28 +02:00
README.md Fixed README. 2016-09-11 13:06:09 +01:00

README.md

DASCA

Installation

Prerequisites

Checkout

Note that this repository imports WALA as a submodule. Thus, you either need to recursively clone this repository, e.g.,

git clone --recursive https://git.logicalhacking.com/DASCA/DASCA.git

or execute git submodule update --init --recursive after cloning the repository.

Resolving external dependencies

  • Ensure that the environment variable ANDROID_HOME is set correctly and that the Android SDK has API 19 installed, i.e., ${ANDROID_HOME}/platforms/android-19/android.jar should be a valid path.
  • Install apktool_2.0.0.jar into your local maven repository:
cd $(mktemp -d)
wget https://bitbucket.org/iBotPeaches/apktool/downloads/apktool_2.0.0.jar
mvn install:install-file -Dfile=apktool_2.0.0.jar -DgroupId=apktool -DartifactId=apktool -Dpackaging=jar -Dversion=2.0.0

WALA configuration

WALA needs to know the location of the Java 6 JDK. This is configured in the wala.properties file, e.g.

cd DASCA/
echo "java_runtime_dir = /usr/lib/jvm/java-6-jdk" >> externals/WALA/com.ibm.wala.core/dat/wala.properties

Don't forget to adjust the path to the Java 6 JDK accordingly.

How to Compile

First resolve the dependencies using maven:

cd src/eu.aniketos.dasca.parent/
mvn -P wala clean install -DskipTests=true -q

After this, all projects can be imported into a fresh Eclipse workspace using File -> Import -> Maven -> Existing Maven Projects:

  1. Select the DASCA src folder as source for the import
  2. Import all offered projects (WALA and DASCA)

While some Wala projects may contain compilation errors, all DASCA projects (i.e., eu.aniketos.dasca.*) should compile without errors.

Troubleshooting

Unavailable external JARs

The build process for WALA uses Ant scripts to download JAR libraries from third-party web sites, which might become unavailable. This leads to Maven throwing errors when compiling WALA due to unavailable JAR files, e.g.

[ERROR] DASCA/externals/WALA/com.ibm.wala.cast.js.test.data/build.xml:45: Can't get http://ajaxslt.googlecode.com/files/ajaxslt-0-7.tar.gz to DASCA/externals/WALA/com.ibm.wala.cast.js.test.data/temp.folder/ajaxslt-0-7.tar.gz

If the affected sub-project is not needed for the DASCA projects (such as the com.ibm.wala.cast.js.test.data project), the error might be resolved by skipping the compilation of a few WALA projects, e.g.

mvn -P wala -pl '!:com.ibm.wala.cast.js.test.data,!:com.ibm.wala.cast.js.html.nu_validator,!:com.ibm.wala.cast.js.test,!:com.ibm.wala.cast.js.rhino.test' install -DskipTests=true -q

WALA throws errors such as java.lang.Error: unexpected dynamic invoke type 8

Make sure the wala.properties file is correctly configured with the path to the Java 6 JDK. By default, WALA uses the JDK that is runs with also for the analysis, which is likely to be Java 8.

Team

Main contact: Achim D. Brucker

Contributors

Publications