
Скрипты IDA Python для расшифровки строк из KPOT и установки их в качестве комментариев
Скрипты IDA Python для расшифровки строк стилера KPOT и простановки их в качестве комментариев рядом с переменной, которая будет получать их во время выполнения. Работает следующим образом:
Получает смещение, передаваемое в eax в одну из функций расшифровки (их две, поэтому в этом репозитории два скрипта), либо через mov, либо через pop eax.
Расшифровывает строку в массиве, считывая соответствующие размер и XOR-ключ.
Выводит расшифрованную строку и смещение, по которому она была установлена в качестве комментария, а также все строки, которые не удалось расшифровать (см. Важные замечания ниже).
В коде есть несколько случаев, где вредонос использует другой метод, не учтённый в скриптах. Эти случаи можно найти, переходя по адресам с сообщением Could not decrypt xref:, и расшифровать их, передавая смещение вручную в соответствующие функции.
Скрипт преобразует расшифрованный массив в строку через decode(). По моему опыту, у KPOT есть три байтовых массива, которые не являются строками, и это приводит к падению скрипта. Это те смещения, которые игнорируются в kpot-string-decrypter-pt1.py.
search_offset(), которая выводит текущий адрес, поможет найти место, где скрипт падает.decrypt_str() на return(newarray.hex()).Чтобы понять, какой из двух скриптов использовать, посмотрите на процедуру расшифровки: pt1 предназначен для подпрограммы, которая выполняет только побайтовый XOR, а pt2 — для той, которая выполняет AND 0xFF после XOR.