
Scripts em Python para IDA que descriptografam strings do KPOT e as definem como comentários
Scripts em IDA Python para descriptografar as strings do stealer KPOT e defini-las como comentários ao lado da variável que as receberia durante a execução. Funciona da seguinte forma:
Obtém o offset passado em eax para uma das funções de descriptografia (são duas, por isso este repositório tem dois scripts), usando mov ou pop eax.
Descriptografa a string em um array lendo seu tamanho correspondente e a chave XOR.
Imprime a string descriptografada e o offset de onde foi definida como comentário, bem como quaisquer strings que não conseguiu descriptografar (veja Considerações Importantes abaixo).
Há alguns casos no código em que o malware utiliza um método diferente dos previstos nos scripts. Você pode encontrar esses casos seguindo os endereços com a mensagem Could not decrypt xref: e descriptografá-los fornecendo o offset manualmente às funções relevantes.
O script converte o array descriptografado em uma string via decode(). Na minha experiência, há três arrays de bytes descriptografados pelo KPOT que não são strings, o que faz o script falhar. Esses são os offsets ignorados em kpot-string-decrypter-pt1.py.
search_offset() que imprima o endereço atual pode ajudar a encontrar onde o script está falhando.decrypt_str() para return(newarray.hex()).Para saber qual dos dois scripts usar, verifique a rotina de descriptografia - pt1 é para a sub-rotina que faz apenas um XOR de byte, enquanto pt2 é para a que faz AND 0xFF após o XOR.