aboutsummaryrefslogtreecommitdiffstats
path: root/obfuscator
diff options
context:
space:
mode:
authorbloodstalker <thabogre@gmail.com>2018-08-10 17:35:31 +0000
committerbloodstalker <thabogre@gmail.com>2018-08-10 17:35:31 +0000
commit4ffe5d672f5bab61e939a1289249c6a26f3ee9ca (patch)
tree4f7651353bd7dc2ac45e1533804f3f8ecf861c6e /obfuscator
parenttravis fix (diff)
downloadmutator-4ffe5d672f5bab61e939a1289249c6a26f3ee9ca.tar.gz
mutator-4ffe5d672f5bab61e939a1289249c6a26f3ee9ca.zip
updated obfuscators readme
Diffstat (limited to 'obfuscator')
-rw-r--r--obfuscator/README.md8
1 files changed, 8 insertions, 0 deletions
diff --git a/obfuscator/README.md b/obfuscator/README.md
index 8cb0973..5ab0937 100644
--- a/obfuscator/README.md
+++ b/obfuscator/README.md
@@ -7,6 +7,11 @@ You can find a list of the implemented features and the ones that will be implem
If you have suggestions or recommendations for features to add, please make an issue with the `obfuscator` label.<br/>
When an alpha version is ready, `obfuscator` will get its own mirror repo.<br/>
+## CLI options
+In addition to the clang options,obfuscator defines some custom CLI options:<br/>
+* --shake: the accepted values are 128 and 256 for SHAKE128 and SHAKE256 respectively.<br/>
+* --shake_len: the length of the hash value in bytes. see NOTES for some explanation.<br/>
+
### Implemented Features
* Identifier Obfuscation: Swaps the name of all identifiers with their hash.<br/>
* Comment Deletion: Deletes all comments.<br/>
@@ -20,6 +25,9 @@ When an alpha version is ready, `obfuscator` will get its own mirror repo.<br/>
running `run.sh` should do the trick. Do note that you need to regenerate the compilation database for the test under the `test` directory to work. You could use `bear`. If you already have `bear`, just run `make clean && bear make`.<br/>
## Notes
+Just some points to keep in mind while using obfuscator:<br/>
+* If you choose to use SHAKE as the hashing algorithm, you have the flexibility of getting a variable-length digest. Just bear in mind that the value provided by `-shake_len` is the number of bytes in the hash itself. The stringified digest will be twice that length plus, file names have `FILE` attached to their begenning and any other identifier in the source code will have `ID` prepended to the digest value.If your compiler has limitations regarding the length of identifiers(some embedded C/C++ compilers do), you should keep that in mind.
+* The hashed file names can end up being much longer than the original file name. Some tools have limitations regarding the length of arguments or file paths.<br/>
* Obfuscator uses the Clang Frontend(CFE) libraries. Most embedded hardware require the use of their custom toolchains and that can result in clang complaining about custom pragmas.<br/>
* If you want the preprocessor conditionals that evaluate to false that pertain to source code inclusion to be removed, use your compiler to get the output of the preprocessor and then pass that to `obfuscator` or just outright don't include them in the source code since `obfuscator` will not look through things that are not included in the source code by the preprocessor.<br/>
* Getting rid of the whitespaces in the source code is a moot point since reverting it is as easy as running something like `clang-format` on it, so the feature is not currently included in obfuscator.<br/>