UniPloit encodes x86 based shellcode to contains only bytes that doesn't listed on badUni and given badChars.

the script produces a shellcode consists of:
GetPC: I used my own unicode implementation of GetPC to get the current instruction pointer (EIP). the implementation is based on floatpoint instructions.
Loop to generate the decoder: This loop will generates the decoder's loop and transfers the execution flow to it. then the 
decoder will decode the encoded data (shellcode) and execute it.