Argus Program Analysis Group provides open source softwares that assissts researcher and analyst to do program analysis tasks. The following diagram shows the major products from us.
Jawa is an intermediate representation (IR) language for JVM based bytecodes (eg., Java bytecode, Dalvik bytecode). It is a highly flexible, annotation based, and have the capability of representing ‘all’ JVM based bytecode cleanly. Jawa defines the grammar for static analysis and IDE tools build upon it.
Argus Static Analysis Framework is a static analysis back-end for Jawa Language. It provides a framework to do static analysis on any Jawa convertible program (e.g., Java program, Android program). It currently integrated Jawa and Amandroid, thus have the capability to perform comprehensive, efficient and highly precise inter-component analysis for Android applications.
Jawa compiler provides compilation support for Jawa language. It provides lexer and parser to parse jawa code, and code generator to generate java bytecode from Jawa code. This gives Jawa language the ability to work with Java program and perform Java/Jawa cross compilation.
We developed two gradle plugins (gradle-jawa-plugin and gradle-android-jawa-plugin) to allowing Jawa language to build with java and android program.
Jawa-to-Java provides user the ability to translate Jawa code to Java code, which helps reverse engineering Android application much easier. jawa2java addressed the challenges of recovering control logic and exception handling, and we plan to further optimize the translation to make it even more readable.
Argus Code Inspection Tool is a platform which leverages all aforementioned products to provide a user friendly reverse engineering and program analysis working environment. It provides an IDE environment for reviewing and editing Jawa language, and integrated compiler plugins, static analysis plugins and code translation plugins to make it powerful and convenient. Argus-CIT currently have an Eclipse implementation and Intellij implementation. As Android development is shifting to Intellij based IDE, we stoped support for Eclipse.