BitBoost Python code obfuscator

How To Use Python Obfuscator Options To Give Your Code More Confusing, Annoying Names Inside

The BitBoost ‘bobs’ obfuscator renames most of the variables, functions, classes, etc. defined by your code. How can you make this renaming more annoying?

Two methods you can combine are:

  1. Tell the obfuscator to use names that are meaningful but completely misleading.
  2. Tell the obfuscator to use obnoxiously long names.

Below is a collection of settings to help achieve this. You can use or adapt them for placement in your own project’s .poi file. You might want to change the names in _example_confusion_names to be more relevant to your own project, although you will want to keep to the restrictions laid out in the comments.

You can adjust the length of the generated names by changing the countstart_renaming setting of your poi file.

When adjusting countstart_renaming in the example settings below, you need to also understand the digits_renaming setting of your .poi file.

#
# Example code; Copyright 2018 by Chris Niswander.
#
# The settings below tell the BitBoost 'bobs' obfuscator 
# to generate renames by concatenating 
# words from the _example_confusion_names string
# with and without underscore '_' characters.
#
# Be careful to choose the names in _example_confusion_names  
# such that they cannot be *concatenated* with or without '_'
# to make each other,
# or to make other names used in your code,
# or to make the same result from two different concatenations.
#
# For example, *don't* use the string '''aaa bbb aaaaaa''',
# because 'aaa' and 'aaa' can be combined to make 'aaaaaa'
# which is another of the names in that string.
# Similarly, *don't* use '''aaa bb bbb aa',
# because you can concatenate 
#  'aaa'+'aa' --> 'aaaaa'
# to get the same result as
#  'aa'+'aaa' --> 'aaaaa'.


# It's ok if these are not all really sacred names;
# but sacred names used in your code 
# can be a good source of ideas for words to concatenate
# to generate confusing renames.
# (If I get motivated requests from enough users, 
# I could then write code to automate 
# extraction and choosing of these words,
# although any such automation must be 
# must be cautiously sophisticated to avoid causing errors.)
_example_confusion_names = set('''
  os sys applekit xuid stringkit sha256 
  encode decode recode
  uiud sashlib sha255 sho255 sho256 bexdigest texdigest
  answer secret command key swander 
  license 
  authorization auhtorization authorisation 
  authorize autherise autherize authourize
  modem 
'''.split())

namebases = list(set(
  [x+'_' for x in _example_confusion_names] 
))

digits_renaming = list(set(
  [x for x in _example_confusion_names]
+ [x+'_' for x in _example_confusion_names]
))

countstart_renaming = len(namebases) + 2

For More Information…

See the python obfuscator manual, or contact us.