What is Stigmata

Stigmata is a toolkit for birthmarking Java class files. Extracting birthmarks from Java class files directly and comparing them. And analyzing birthmarks in multi-dimensional scaling.

What is birthmark

A birthmark is a unique and native characteristics of a program. The birthmark provides a way to detect stolen software without embedding any additional information before distribution.

For more details, see Definitions.

Why did We name the tool Stigmata

Birthmark is marks that appear on a person's body in the same places as those made on Jesus Christ's body when he was nailed to a cross.


We liken birthmarks to holy sign of programs.

What kind of features does Stigmata have

Stigmata have general mode and expert mode. In general mode, we can extract certain birthmarks from jar file directly, and compare extracted birthmarks. Additionally, analyzing extracted birthmarks with MDS (multi-dimensional scaling).

In expert mode, it added to general mode, we can define the new birthmark, and a new filter (filtering the result of comparing).

Moreover, a part of extracting/comparing birthmarks is provided as plug-ins, you can define original birthmark plug-in and easily install it to Stigmata.

What is the limitation of extracting birthmarks

Stigmata loads a target class by StigmataClassLoader when birthmarks were extracted from the class. Therefore, extracting birthmarks from sealed classes will be failed.

For example, let S be a set of classes included in sealed jar file SomeArchive-X.X.jar, then, SecurityException will be thrown when extracting birthmarks from other version sealed jar file (SomeArchive-X.Y.jar).

This limitation is occured only when extracting IS birthmark. IS birthmark is inheritance structure birthmark, and to extract it to find super class from loaded classes pool. So, difference version cannot be applied.