ЗАДАЧА:
Я создаю набор задач по реверс-инжинирингу сборки x86, которых у меня уже двадцать или около того. Они просто для развлечения / образования.
Текущая задача - одна из более продвинутых, и включает в себя некоторые хитрости, которые заставляют выглядеть так, как будто EP находится в обычной программе, но на самом деле он упакован в другом разделе PE.
Вот основная схема:
Идея в том, что поскольку они думают, что находятся в нормальном потоке программы, это заставляет их пропустить вызов антиотладки и последующие проверки. В любом случае, все работает нормально.
ПРОБЛЕМА:
Текущая проблема заключается в том, что OllyDbg и несколько других инструментов смотрят на упакованную секцию и видят, что она имеет высокую энтропию, и выдают предупреждение, что она упакована. Указатель секции кода в заголовке PE установлен правильно, так что это не связано с наличием внешнего кода EP - это чисто энтропийный анализ.
ВОПРОС:
Есть ли метод шифрования, который я могу использовать, сохраняя низкую энтропию, но при этом легко реализуемый в x86 asm? Я не хочу использовать простой xor, так как это слишком просто, но я также не хочу, чтобы он поймал его как упакованный и выдал игру.
Я думал о чем-то вроде шаффлера (как-то создавать поток ключей и использовать его для обмена 4-байтовыми блоками кода), но я не уверен, что это сработает или даже будет просто.
У кого-нибудь есть идеи?