Schemoose

This project analyzes Scheme programs, for the purpose of reverse engineering them. The primary target is visual reverse engineering with Moose; ScheMoose exports to the MSE format used by Moose. There is also an exporter of callgraphs to the dot format.

Written by Katerina Barone-Adesi in 2007 as part of her Bachelor’s project.

Please find below a mirrored copy of the project’s website, http://atelier.inf.unisi.ch/~baroneak/schemoose/index.html

Dependencies

ScheMoose is written in two languages, Scheme and Smalltalk. To use a minimal core of ScheMoose, only DrScheme is needed; this allows analyzing Scheme programs and exporting the results in mse or dot formats. DrScheme 360 is highly recommended; DrScheme 370 appears to work. DrScheme 208 is known not to work. To use the generated mse files, Visualworks Smalltalk 7.4 or above is needed, with Moose (version from the Bern Software Composition Group store recommended), and the parcel provided below. Visualworks 7.4.1 is recommended. The parcel is technically optional, but extended information (such as whether a function is recursive) will be ignored without it. The parcel has no effect on the generation of the MSE file; it is only useful for using it within Moose.

Download

ScheMoose is available from svn. To check it out, use the following:

 svn co --username guest https://evo.inf.unisi.ch/svn-repositories/kat-schemoose schemoose 

The password is "luganoguest", without quotes.

How to use ScheMoose

Generating MSE and dot files

After checking ScheMoose out from svn, cd schemoose/scheme. This is where the Scheme part of ScheMoose, which creates MSE (and dot) files from Scheme programs resides. To use it, run

 mzscheme -i cmd.scm mse infile0 infile1 ... infileN outfile.mse 

At least one input file (or directory) must be specified; any larger number can be. The part of the command in bold should not be changed. The name of the output file does not matter. To generate dot files, the process is the same, but the ’mse’ after cmd.scm needs to be replaced with ’dot’:

 mzscheme -i cmd.scm dot infile0 infile1 ... infileN outfile.dot

Using MSE files

Given a working installation of Visualworks (version 7.4.1 is recommended), and an image with Moose loaded, it’s possible to analyze the MSE files generated by ScheMoose. However, not all information is available unless the parcel found in the schemoose/smalltalk directory is loaded. This parcel contains extensions, for modelling features such as whether functions are recursive, as well as the custom size metric of the ScheMoose project, number of parentheses.

Setting up prerequisites

Install Moose. The installation instructions are for version VisualWorks 7.5, but this is currently an untested configuration with the parcel. Please report successes/failures. Import from an MSE file may be of interest.