Обфускатор и техническая поддержка - PullRequest
11 голосов
/ 06 марта 2010

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

Я с нетерпением жду, чтобы услышать о вашем опыте. Заранее спасибо.

Ответы [ 4 ]

9 голосов
/ 06 марта 2010

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

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

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

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

1 голос
/ 09 апреля 2010

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

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

1 голос
/ 06 марта 2010

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

1 голос
/ 06 марта 2010

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

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

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

...