SandMark version 2.0


sandmark.obfuscate.methodmadness
Class SignatureBludgeoner

java.lang.Object
  |
  +--sandmark.Algorithm
        |
        +--sandmark.obfuscate.GeneralObfuscator
              |
              +--sandmark.obfuscate.AppObfuscator
                    |
                    +--sandmark.obfuscate.methodmadness.SignatureBludgeoner
All Implemented Interfaces:
de.fub.bytecode.Constants

public class SignatureBludgeoner
extends AppObfuscator
implements de.fub.bytecode.Constants

Bludgeons the signatures of methods so that they take Object[] and return Object in order to hide the information implicitly encapsulated in methods' argument lists.

Used by Method2RMadness obfuscator.

Code quality: Seems to work, but has not been extensively tested. Main concern: correctness of code by which it is determined whether or not a method is renamable (Sandmark's ClassHierarchy class).

Author:
Martin Stepp (stepp@cs.arizona.edu)

Field Summary
 
Fields inherited from interface de.fub.bytecode.Constants
AALOAD, AASTORE, ACC_ABSTRACT, ACC_FINAL, ACC_INTERFACE, ACC_NATIVE, ACC_PRIVATE, ACC_PROTECTED, ACC_PUBLIC, ACC_STATIC, ACC_STRICT, ACC_SUPER, ACC_SYNCHRONIZED, ACC_TRANSIENT, ACC_VOLATILE, ACCESS_NAMES, ACONST_NULL, ALOAD, ALOAD_0, ALOAD_1, ALOAD_2, ALOAD_3, ANEWARRAY, ANEWARRAY_QUICK, ARETURN, ARRAYLENGTH, ASTORE, ASTORE_0, ASTORE_1, ASTORE_2, ASTORE_3, ATHROW, ATTR_CODE, ATTR_CONSTANT_VALUE, ATTR_DEPRECATED, ATTR_EXCEPTIONS, ATTR_INNER_CLASSES, ATTR_LINE_NUMBER_TABLE, ATTR_LOCAL_VARIABLE_TABLE, ATTR_PMG, ATTR_SIGNATURE, ATTR_SOURCE_FILE, ATTR_STACK_MAP, ATTR_SYNTHETIC, ATTR_UNKNOWN, ATTRIBUTE_NAMES, BALOAD, BASTORE, BIPUSH, BREAKPOINT, CALOAD, CASTORE, CHECKCAST, CHECKCAST_QUICK, CONSTANT_Class, CONSTANT_Double, CONSTANT_Fieldref, CONSTANT_Float, CONSTANT_Integer, CONSTANT_InterfaceMethodref, CONSTANT_Long, CONSTANT_Methodref, CONSTANT_NameAndType, CONSTANT_NAMES, CONSTANT_String, CONSTANT_Utf8, CONSTRUCTOR_NAME, CONSUME_STACK, D2F, D2I, D2L, DADD, DALOAD, DASTORE, DCMPG, DCMPL, DCONST_0, DCONST_1, DDIV, DLOAD, DLOAD_0, DLOAD_1, DLOAD_2, DLOAD_3, DMUL, DNEG, DREM, DRETURN, DSTORE, DSTORE_0, DSTORE_1, DSTORE_2, DSTORE_3, DSUB, DUP, DUP_X1, DUP_X2, DUP2, DUP2_X1, DUP2_X2, F2D, F2I, F2L, FADD, FALOAD, FASTORE, FCMPG, FCMPL, FCONST_0, FCONST_1, FCONST_2, FDIV, FLOAD, FLOAD_0, FLOAD_1, FLOAD_2, FLOAD_3, FMUL, FNEG, FREM, FRETURN, FSTORE, FSTORE_0, FSTORE_1, FSTORE_2, FSTORE_3, FSUB, GETFIELD, GETFIELD_QUICK, GETFIELD_QUICK_W, GETFIELD2_QUICK, GETSTATIC, GETSTATIC_QUICK, GETSTATIC2_QUICK, GOTO, GOTO_W, I2B, I2C, I2D, I2F, I2L, I2S, IADD, IALOAD, IAND, IASTORE, ICONST_0, ICONST_1, ICONST_2, ICONST_3, ICONST_4, ICONST_5, ICONST_M1, IDIV, IF_ACMPEQ, IF_ACMPNE, IF_ICMPEQ, IF_ICMPGE, IF_ICMPGT, IF_ICMPLE, IF_ICMPLT, IF_ICMPNE, IFEQ, IFGE, IFGT, IFLE, IFLT, IFNE, IFNONNULL, IFNULL, IINC, ILLEGAL_OPCODE, ILLEGAL_TYPE, ILOAD, ILOAD_0, ILOAD_1, ILOAD_2, ILOAD_3, IMPDEP1, IMPDEP2, IMUL, INEG, INSTANCEOF, INSTANCEOF_QUICK, INT2BYTE, INT2CHAR, INT2SHORT, INTERFACES_IMPLEMENTED_BY_ARRAYS, INVOKEINTERFACE, INVOKEINTERFACE_QUICK, INVOKENONVIRTUAL, INVOKENONVIRTUAL_QUICK, INVOKESPECIAL, INVOKESTATIC, INVOKESTATIC_QUICK, INVOKESUPER_QUICK, INVOKEVIRTUAL, INVOKEVIRTUAL_QUICK, INVOKEVIRTUAL_QUICK_W, INVOKEVIRTUALOBJECT_QUICK, IOR, IREM, IRETURN, ISHL, ISHR, ISTORE, ISTORE_0, ISTORE_1, ISTORE_2, ISTORE_3, ISUB, ITEM_Bogus, ITEM_Double, ITEM_Float, ITEM_InitObject, ITEM_Integer, ITEM_Long, ITEM_NAMES, ITEM_NewObject, ITEM_Null, ITEM_Object, IUSHR, IXOR, JSR, JSR_W, KNOWN_ATTRIBUTES, L2D, L2F, L2I, LADD, LALOAD, LAND, LASTORE, LCMP, LCONST_0, LCONST_1, LDC, LDC_QUICK, LDC_W, LDC_W_QUICK, LDC2_W, LDC2_W_QUICK, LDIV, LLOAD, LLOAD_0, LLOAD_1, LLOAD_2, LLOAD_3, LMUL, LNEG, LOOKUPSWITCH, LOR, LREM, LRETURN, LSHL, LSHR, LSTORE, LSTORE_0, LSTORE_1, LSTORE_2, LSTORE_3, LSUB, LUSHR, LXOR, MAJOR, MAJOR_1_1, MAJOR_1_2, MAJOR_1_3, MAX_ACC_FLAG, MAX_BYTE, MAX_CODE_SIZE, MAX_CP_ENTRIES, MAX_SHORT, MINOR, MINOR_1_1, MINOR_1_2, MINOR_1_3, MONITORENTER, MONITOREXIT, MULTIANEWARRAY, MULTIANEWARRAY_QUICK, NEW, NEW_QUICK, NEWARRAY, NO_OF_OPERANDS, NOP, OPCODE_NAMES, POP, POP2, PRODUCE_STACK, PUSH, PUTFIELD, PUTFIELD_QUICK, PUTFIELD_QUICK_W, PUTFIELD2_QUICK, PUTSTATIC, PUTSTATIC_QUICK, PUTSTATIC2_QUICK, RESERVED, RET, RETURN, SALOAD, SASTORE, SHORT_TYPE_NAMES, SIPUSH, STATIC_INITIALIZER_NAME, SWAP, SWITCH, T_ADDRESS, T_ARRAY, T_BOOLEAN, T_BYTE, T_CHAR, T_DOUBLE, T_FLOAT, T_INT, T_LONG, T_OBJECT, T_REFERENCE, T_SHORT, T_UNKNOWN, T_VOID, TABLESWITCH, TYPE_NAMES, TYPE_OF_OPERANDS, UNDEFINED, UNPREDICTABLE, WIDE
 
Constructor Summary
SignatureBludgeoner()
           
 
Method Summary
 void apply(ClassFileCollection cfc)
          Bludgeons the method arguments in this ClassFileCollection's classes.
 java.lang.String getAlgHTML()
          Returns an HTML description of this obfuscator.
 java.lang.String getAlgURL()
          Returns the URL at which you can find information about this obfuscator.
 java.lang.String getAuthor()
          Specifies the author of the algorithm.
 java.lang.String getAuthorEmail()
          Specifies the email address author of the algorithm.
 ConfigProperties getConfigProperties()
          Returns this obfuscator's configuration properties.
 java.lang.String getDescription()
          Specifies what this algorithm does, briefly.
 java.lang.String getLongName()
          Returns a long description of this obfuscator's name.
 ModificationProperty[] getMutations()
          Specifies the types of modifications that the algorithm makes.
 java.lang.String getShortName()
          Returns a short description of this obfuscator's name.
static void main(java.lang.String[] args)
           
 void setConfigProperties(ConfigProperties props)
          Sets this obfuscator's configuration properties to the given properties.
 
Methods inherited from class sandmark.obfuscate.AppObfuscator
toString
 
Methods inherited from class sandmark.Algorithm
getPostprohibited, getPostrequisites, getPostsuggestions, getPreprohibited, getPrerequisites, getPresuggestions, getReferences
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface de.fub.bytecode.Constants
 

Constructor Detail

SignatureBludgeoner

public SignatureBludgeoner()
Method Detail

main

public static void main(java.lang.String[] args)
                 throws java.lang.Exception
java.lang.Exception

apply

public void apply(ClassFileCollection cfc)
           throws java.lang.Exception
Bludgeons the method arguments in this ClassFileCollection's classes.

Specified by:
apply in class AppObfuscator
Parameters:
cfc -
java.lang.Exception

getAlgURL

public java.lang.String getAlgURL()
Returns the URL at which you can find information about this obfuscator.

Specified by:
getAlgURL in class Algorithm
Returns:
a URL to the help.html file for the algorithm

getAlgHTML

public java.lang.String getAlgHTML()
Returns an HTML description of this obfuscator.

Specified by:
getAlgHTML in class Algorithm
Returns:
an HTML formatted description of what the algorithm does.

setConfigProperties

public void setConfigProperties(ConfigProperties props)
Sets this obfuscator's configuration properties to the given properties.

Specified by:
setConfigProperties in class Algorithm
Parameters:
props - the ConfigProperties to use.

getConfigProperties

public ConfigProperties getConfigProperties()
Returns this obfuscator's configuration properties.

Specified by:
getConfigProperties in class Algorithm
Returns:
the parameters for this run of the algorithm

getLongName

public java.lang.String getLongName()
Returns a long description of this obfuscator's name.

Specified by:
getLongName in class Algorithm
Returns:
the long name for this algorithm

getShortName

public java.lang.String getShortName()
Returns a short description of this obfuscator's name.

Specified by:
getShortName in class Algorithm
Returns:
the short name for this algorithm

getDescription

public java.lang.String getDescription()
Description copied from class: Algorithm
Specifies what this algorithm does, briefly. This description is displayed to the user in the log of execution in Sandmark.

Overrides:
getDescription in class Algorithm
Returns:
a brief description of the algorithm

getAuthor

public java.lang.String getAuthor()
Description copied from class: Algorithm
Specifies the author of the algorithm.

Overrides:
getAuthor in class Algorithm
Returns:
the name of the author of the algorithm

getAuthorEmail

public java.lang.String getAuthorEmail()
Description copied from class: Algorithm
Specifies the email address author of the algorithm.

Overrides:
getAuthorEmail in class Algorithm
Returns:
the email address of the author of the algorithm

getMutations

public ModificationProperty[] getMutations()
Description copied from class: Algorithm
Specifies the types of modifications that the algorithm makes. For more information see ModificationProperty. NOTE: This method will be tagged abstract as of 06/05/2002; at that time, all Sandmark algorithms should provide their own implementation.

Overrides:
getMutations in class Algorithm
Returns:
a list of mutations that this algorithm may do on the code

SandMark version 2.0

Mon Jun 17 12:30:47 MST 2002