Как правильно распаковывать исполняемые файлы?
Распаковка исполняемых файлов – задача при реверсе. Если объект является малварем, тогда часто натыкаемся на кастомных упаковщиков. Существуют защитные механизмы банкера GootKit, которые можно обойти даже при условии их постоянно апгрейда.
Чтобы противостоять антиотладке, следует разобраться с параметрами функции CreateFileA. Рекомендовано работать с виртуальной машиной, иначе такие манипуляции приведут к заражению этим банкером и вы попрощаетесь со своими данными.
Необходимо открыть Detect it Easy и изучить работу GootKit. Сразу заметно, что детектором не было выявлено никакой навесной защиты, но энтропия файла достаточно высока. Далее переходим к загрузке файла в дизассемблер, чтобы можно было подробно ознакомиться с программой. Видно, что при входе выполняется вызов программы. После того, как в него заходим, видим код.
Значения перемещаются на стек, переменные инициализируются, после чего идет вызов. Немного напоминает динамический вызов функции. Для самостоятельного убеждения поможет компиляция и просмотр в IDA программы с такой же техникой вызова. На выходе получим более или менее чистый и понятный код.
Для переключения в псевдокод нажмем F5. Вся работа выставлена как на ладони: понятен ее принцип и как что происходит. Также можно глянуть на перекрестные ссылки на буфера, передающиеся в функции. Видно, что применено шифрование XOR по ключу.
Если знаем ключ, то для расшифровки понадобится Python, встроенный в IDA. Далее будем использовать цикл дешифровки. Распаковка исполняемых файлов, оказывается, очень занятное дело. Помните о своей безопасности и не торопитесь скачивать на свой компьютер все программы подряд. Для полной безопасности работайте в виртуальной машине, и будет вам счастье.
Читать статью на:
Для просмотра ссылки необходимо нажать
Вход или Регистрация