Context menu "Decrypt string (D)" or "Decrypt imm const (D)" in pseudocode view, "Decrypt data (Shift-D)" in disasm view.
Right click on string, global variable or constant value in pseudocode or in disasm view and select "Decrypt ...". Select appropriate encryption algorithm and parameters in dialog box.
The following ciphers are available:
Ror/Add/Sub/Xor/Mul
every symbol of string withKey
.Byte, Word, Dword, Qword
item sizes are supported.Xor
every byte of string with corresponding byte ofKey
string.- Simple substitution
- RC4*
- Sosemanuk*
- ChaCha20*
- Salsa20*
- Tea*
- XTea*
- AES*
- DES*
- there are also placeholders in this list for your custom stream and block ciphers
(*) Statically linked open source library Crypto++ is used for these algorithms. So you may easily extend the available ciphers list.
Results of decryption be shown in "Output Window" in hex representation and as a string in dialog box that asks to patch string (if applicable) or set comment with decryption results
Notes:
- For ciphers that can work with different key length - the default key length is 128 bits (16 bytes) when key is specified by memory address. For Simple-Substitution the default key-length is 256 bytes.
- For CBC mode of ciphers, zeroes filled IV is assumed if IV value is not specified.
- Hover mouse above "Key", "IV" or "Cnt" field - hint is appeared.
- The plugin uses various hints to guess decryption item size and count, it may be string char size, array size, on screen selection size in disasm view, stack var or array cell assignment size, call argument type, etc
- "-1" in
Cnt
field means that stream decryption will continue until zero-terminating symbol is appeared in input encrypted stream - Stream ciphers
Key
may be specified as: decimal/octal/hexadecimal/binary value - Block ciphers
Key
andIV
may be specified as:- address or a name in the database (ex:
0x4013E6
,my_key
) - 'string' surrounded by single quote (') symbols (ex:
'my secret key'
) - unspaced hex-string without prefix (ex:
6D7920736563726574206B6579
)
- address or a name in the database (ex:
- Look in the "Output Window" if something went wrong.