Поддержка Obfuscator & Tech

Мы думаем о запутывании какого-либо кода, прежде чем выпускать его клиентам. Нам интересно, какое влияние это окажет на техническую поддержку. Могут ли клиенты предоставить нам значимые следы стека, или они тоже будут запутаны?

Я с нетерпением жду вашего опыта. Спасибо заранее.

Ответ 1

вы получите обфускацию стека. но obfuscators могут генерировать файлы сопоставления, которые отображают обфускации имен для настоящих имен.. вы должны хранить эти файлы сопоставления в надежном месте, и вы можете использовать их для "деобфускации" трассировки стека снова, когда это необходимо.

в случае технической поддержки - вы можете создать простой веб-интерфейс, где пользователи технической поддержки могут вставлять трассировки стека. таким образом, только веб-серверу нужен доступ к файлам сопоставления, чтобы он мог восстановить исходные трассировки стека.

здесь представлены две ссылки, объясняющие процесс с помощью обфускатора тофусатора:

http://www.preemptive.com/images/stories/dotfuscator_documentation/Dotfuscator/The_Map_File.html

http://www.preemptive.com/images/stories/dotfuscator_documentation/Dotfuscator/Decoding_Obfuscated_Stack_Traces.html

Ответ 2

Если методы в стеке запутаны в вашей версии, вы получите имена запущенных методов в любой трассировке стека.

Если вы поместите что-нибудь в свой код, чтобы помочь вам разобраться, какие методы были задействованы, потенциальные хакеры могут использовать эту информацию, чтобы лучше понять ваш код.

Одна общая стратегия состоит в том, чтобы запутать только некоторые из кода, включая (но не ограничиваясь) части, которые выполняют проверку лицензии. Если вы запутываете JUST проверку лицензии, она довольно легко сбрасывается на часть, которая требует внимания хакеров.

Ответ 3

Это обычно не проблема, поскольку большинство обфускаторов предоставляют возможность де-обфускации трассировки стека обратно к исходной трассе.

Ответ 4

Мы используем BitHelmet. Проблема в том, что при использовании самой сильной техники обфускации трассировка стека не может быть деобфузирована. BitHelmet использует переименование полной подписи (какая-то индукция перегрузки, только лучше). Что происходит, много методов имеют одно и то же имя, но с другим типом возвращаемого значения (это невозможно сделать на С#, но это нормально для CLR). Типы возврата не отображаются в виде следов стека! поэтому на самом деле невозможно деобфискурить трассировку стека с использованием наиболее сильной обфускации.

Мы задали тот же вопрос, что и вы, мы обсудили его, и мы пришли к выводу, что на самом деле мы предпочитаем лучшую обфускацию. Трассировки стека на самом деле не так полезны при предоставлении технической поддержки, как некоторые другие данные, которые может предоставить только конечный пользователь. "Пожалуйста, скажите мне, что вы делали?":)