Each Tigress transformation is specified, at a minimum, by the
that selects the type of transformation and the
--Functions option that
selects the function(s) to which it should be applied. The Tigress options described here
apply to all transformations. Each transformation additionally has their
own set of options, all prefixed by the name of the transformation.
|--Environment||string|| A string that describes the architecture, operating system, and compiler being used. We currently recognize the following strings:
|--out||file.c||The file to write to.|
|--Seed||INTSPEC|| The randomization seed.
|--Verbosity||int|| Tigress' chattiness level.
|--Skip||BOOLSPEC|| Skip a particular transformation. Typically, use like this to skip transformation
|--Input||INPUTSPEC|| Specify invariants over the command line arguments, such the range of integer values a particular argument may take, the range of lengths of an argument, or the string value of an argument. These are used by the input opaque predicate, which is created by
To avoid name clashes and to allow you to specify the results of a
transformation, prefixes can be added to all new identifiers. For
example, after a
Split transformation, you may want to
perform additional transformations to the newly formed functions,
and thus need to know their new names. You can use the
for this. Also, if you intend to run Tigress multiple times on the same
file (rather than applying all transformations in one run), you need
to make sure that new names don't clash with old ones. Use
--FilePrefix for this.
|--FilePrefix||AUTO, NONE, string|| Use this if you intend to run tigress multiple times on each file to avoid name clashes. Only set this option once. Default=NONE.
|--Prefix||string||Add this prefix to each new generated symbol. This is in addition to the --filePrefix. Default is "_number_" where number is the order number of the transformation given on the command line. You can set this for every transformation. Default=_number_.|
|--Exclude||string-list||Comma-separated list of the functions to exclude from obfuscation. Useful after an --Functions=* or --Functions=?int option, like this: --Functions=* --Exclude=main|
|--Functions||IDENTSPEC||The functions to which the transformation should be applied. See below for how to specify a set of functions.|
|--GlobalVariables||IDENTSPEC|| The global variables to which the transformation should be applied. Currently only used for the
|--LocalVariables||LOCALSPEC|| The local variables and formal parameters to which the transformation should be applied. Currently only used for the
AAA_BBB_opaque_list1, give the options
--FilePrefix=AAA_ \ --Transform=initOpaque \ --Prefix=BBB
AAA__0__opaque_Node, give the options
--FilePrefix=AAA_ \ --Transform=InitOpaque
For options that take an integer an argument we provide an INTSPEC notation that allows randomized selection of the value. There's a similar BOOLSPEC notation for booleans.
All transformations require you to specify the set of functions to
which they should be applied. IDENTSPEC (identifier
specifications) allow you to flexibly select all or some of the
available functions. Some transformations also use identifier
specifications to specify variables, as
--UpdateEntropyVar=* which would select all variables of
|INTSPEC||?, int?int, int|| The INTSPEC notation allows randomized selection of integer valued options.
|FRACSPEC||*, int, int?int, %int|| The FRACSPEC notation allows the selection of a fraction of a set of elements.
|BOOLSPEC||?, true, false|| The BOOLSPEC notation allows randomized selection of boolean valued options.
|IDENTSPEC||*, ?int, %int, /regexp/, string|| Many transformations require you to specify the set of functions to which they should be applied. Trivally, you can say
|LOCALSPEC|| The LOCALSPEC notation is used to specify a set of local variables and formal parameters. For example,
|INPUTSPEC||int, ?int, int?, int?int, +int, -int, "int", "string", "length"|| The
Here are some examples:
--Transform=UpdateEntropy \ --Functions=foo \ --UpdateEntropyVar=*
--Transform=split \ --Functions=%20
Note that some care needs to be exercised when specifiying identifiers, since some renaming can happen during obfuscation.