Software Languages Lab
Published on Software Languages Lab (http://soft.vub.ac.be/soft)

Home > Aran

Aran

Groups audience: 
CAMP [1]
Logo Image: 
Promoted to Artifact Page: 
Yes
Keywords: 
JavaScript
Instrumentation
Dynamic Program Analysis
Description
Description: 

Aran [2] is a npm module for instrumenting JavaScript code which enables amongst other things: profiling, tracing, sandboxing, information-flow analysis, and symbolic execution. Aran performs a source-to-source code transformation largely compatible with ECMAScript2018 [3] and fully compatible with ECMAScript5 [4]. As for any other npm module, Aran can be installed by running: npm install aran.
The capabilities of Aran can be extended with the below modules:

  • Otiluke [5]: Support for modular JavaScript programs. NodeJS programs are instrumented by modifying how module imports other modules. Web pages are supported by deploying a man-in-the-middle proxy.
  • Linvail [6]: Track primitive values through the store by deploying a transitive membranes based on ECMAScript Proxies.
  • AranRemote [7]: Deploy single-process analysis in a distributed context "for-free".
Download: 
  • https://github.com/lachrist/aran [2]
  • https://github.com/lachrist/otiluke [5]
  • https://github.com/lachrist/linvail [6]
  • https://github.com/lachrist/aran-remote [7]
Publications: 
  • Christophe, L., Boix, E. G., De Meuter, W., & De Roover, C. (2016, March). Linvail: A general-purpose platform for shadow execution of JavaScript. In 2016 IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER) (Vol. 1, pp. 260-270). IEEE
  • Christophe, L., De Roover, C., Boix, E. G., & De Meuter, W. (2018, November). Orchestrating dynamic analyses of distributed processes for full-stack JavaScript programs. In Proceedings of the 17th ACM SIGPLAN International Conference on Generative Programming: Concepts and Experiences (pp. 107-118). ACM.

Source URL: http://soft.vub.ac.be/soft/content/aran

Links
[1] http://soft.vub.ac.be/soft/camp
[2] https://github.com/lachrist/aran
[3] https://www.ecma-international.org/ecma-262/9.0/index.html
[4] http://www.ecma-international.org/ecma-262/5.1/
[5] https://github.com/lachrist/otiluke
[6] https://github.com/lachrist/linvail
[7] https://github.com/lachrist/aran-remote