1 package jp.sourceforge.stigmata.birthmarks.wsp;
7 import jp.sourceforge.stigmata.BirthmarkComparator;
8 import jp.sourceforge.stigmata.BirthmarkElement;
9 import jp.sourceforge.stigmata.BirthmarkExtractor;
10 import jp.sourceforge.stigmata.BirthmarkPreprocessor;
11 import jp.sourceforge.stigmata.birthmarks.AbstractBirthmarkService;
14 * Weighted Stack Pattern based birthmark.
16 * this birthmark is proposed by LIM et al. in following papers.
18 * <li>Hyun-il Lim, Heewan Park, Seokwoo Choi, Taisook Han, ``Detecting Theft
19 * of Java Applications via a Static Birthmark Based on Weighted Stack
20 * Patterns,'' IEICE Transactions on Information and Systems, Vol.E91-D No.9
21 * pp.2323-2332, September 2008.</li>
22 * <li>Heewan Park, Hyun-il Lim, Seokwoo Choi and Taisook Han, ``A Static Java
23 * Birthmark Based on Operand Stack Behaviors,'' In Proc. of 2008 International
24 * Conference on Information Security and Assurance, pp.133-136, April 2008.</li>
27 * @author Haruaki Tamada
30 public class StackPatternBasedBirthmarkService extends AbstractBirthmarkService{
31 private BirthmarkPreprocessor preprocessor = new OpcodeWeightCalculatePreprocessor(this);
32 private BirthmarkExtractor extractor = new StackPatternBasedBirthmarkExtractor(this);
33 private BirthmarkComparator comparator = new StackPatternBasedBirthmarkComparator(this);
36 public String getDefaultDescription(){
37 return "Weighted stack pattern based birthmark";
41 public boolean isUserDefined(){
46 public String getType(){
51 public BirthmarkComparator getComparator(){
56 public BirthmarkExtractor getExtractor(){
61 public BirthmarkPreprocessor getPreprocessor(){
66 public BirthmarkElement buildBirthmarkElement(String value){
67 return new StackPatternBasedBirthmarkElement(value);
71 public String getDisplayType(){
72 return "Weighted Stack Pattern Based Birthmark";