Делает ли доставка файла PDB бесполезность в .net? - PullRequest
7 голосов
/ 30 августа 2011

Если я запутываю сборку vb.net, используя Eazfuscator с включенным шифрованием имен символов (чтобы я мог использовать декодер стека трассировки Eazfuscator), будет ли это эффективно отменено, если я отправлю файл PDB?Я хочу отправить файл PDB, чтобы получить номера строк в трассировках стека, которые отправляются мне обратно в отчетах об ошибках.

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

Заранее благодарен за любой совет.

Ответы [ 2 ]

4 голосов
/ 01 мая 2012

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

Некоторые обфускаторы, такие как Crypto Obfuscator поддерживают генерацию файлов PDB - после обфускации он выводит новые файлы PDB, которые синхронизируются с обфусцированными сборками, так что трассировки стека остаются правильными. Кроме того, файлы PDB содержат запутанные имена файлов исходного кода, упомянутых выше. Он также удаляет все имена локальных переменных из файлов PDB.

ОТКАЗ ОТ ОТВЕТСТВЕННОСТИ: Я работаю в LogicNP Software, разработчике Crypto Obfuscator.

4 голосов
/ 30 августа 2011

PDB не содержат фактического кода. Но у меня есть сильное ощущение, что после запутывания PDB будет несовместим с бинарным. Вот что находится внутри PDB :

  • Адреса публичных, приватных и статических функций
  • Имена глобальных переменных и адреса
  • Имена параметров и локальных переменных и смещения, где найти их в стеке
  • Тип данных, состоящий из класса, структуры, и определения данных
  • Данные пропуска указателя кадра (FPO), которые являются ключ к нативному стеку, идущий на x86
  • Имена исходных файлов и их строки

Насколько я понимаю, запутывание разрушит такие вещи, как непубличные типы, методы, параметры и т. Д. Так что, если оно не изменяет исходные смещения IL, показ номеров строк может сработать, но он предоставит некоторую информацию, которая была фактически запутана , вопрос это восстанавливаемый или нет.

Я предлагаю добавить расширенное ведение журнала, если вы очень обеспокоены деобфускацией.

...