Я хочу запустить отладчик Visual Studio в запутанной программе .Net. (Это моя собственная программа — я не пытаюсь взломать чужую программу.)
Когда я компилирую программу с помощью «System.Diagnostics.Debugger.Break()» или подключаю отладчик к запущенному процессу, отладчик показывает «Нет доступных источников». Это я так понимаю - нет исходника, соответствующего запутанной версии программы. Но когда я нажимаю «Показать дизассемблирование», появляется окно дизассемблирования с надписью «Нет доступных дизассемблированных».
Почему? Любые предложения относительно того, что я могу сделать, чтобы заставить разборку работать?
В разделе «Параметры отладки» у меня есть флажки «Включить отладку на уровне адреса» и «Показать дизассемблирование, если источник недоступен».
Спасибо.
РЕДАКТИРОВАТЬ
Просто, чтобы попытаться объяснить немного больше ...
Рассматриваемая программа является моей собственной программой, и используемая программа запутывания также является моей собственной программой. Программа запутывания запускает ILDAsm.exe, изменяет код ILAsm и запускает ILAsm.exe.
Моя запутанность, по-видимому, создает проблемы, поэтому программа больше не работает правильно. Чтобы понять, как/почему это не работает, я хотел бы проследить это. Но почему-то отладчик Visual Studio говорит "Дизассемблирование недоступно", и тогда я вообще ничего не могу сделать. (Когда незапутанная программа запускается в Visual Studio, окно дизассемблирования может быть открыто и показывает ожидаемую информацию. Только запутанная версия создает эту проблему с отладчиком VS.)
РЕДАКТИРОВАТЬ 2
Не смог найти ответ на свой вопрос, но теперь у меня есть своего рода обходной путь.
Я установил WinDbg и убедился, что он может подключаться к моей обфусцированной программе и может, по крайней мере, выполнять ее по одному шагу и показывать текущее место выполнения в окне дизассемблирования. Но я никогда раньше не пользовался WinDbg, и это выглядит немного устрашающе.
Я также последовал совету, который я видел в нескольких местах, чтобы загрузить sos.dll в WinDbg. Может быть, это поможет.
Но я предполагаю, что на самом деле я в конечном итоге добавлю в свою программу множество временных операторов регистрации в тех местах, где она не работает, и, надеюсь, таким образом получу некоторое понимание.