Сложности при дизассемблировании зашифрованных программ возникают по нескольким причинам:
- Использование антиотладочных механизмов. konyakov.ru www.kavserver.ru Некоторые упаковщики внедряют в файл такие механизмы, что затрудняет анализ. konyakov.ru Лобовая атака становится невозможной, приходится искать обходные пути. konyakov.ru
- Использование динамической шифровки. konyakov.ru Это увеличивает размер файла, что также затрудняет исследование. konyakov.ru
- Восстановление таблицы импорта. konyakov.ru Многие упаковщики затирают её после распаковки, что усложняет процесс. konyakov.ru
- Невозможность распознать данные, если они совмещены с кодом. books.ifmo.ru Например, дизассемблер может рассматривать конструкцию, реализованную компилятором как таблицу переходов, и неверно генерировать представление на языке ассемблера. books.ifmo.ru
Для работы с зашифрованным кодом часто используют комбинацию дизассемблера и отладчика: дизассемблер реконструирует «скелет» алгоритма, а отладчик расшифровывает запакованные фрагменты кода и уточняет значение регистров ЦП и ячеек памяти. konyakov.ru