Я не могу сделать так, чтобы исходный код показывался в windbg, когда я направляю ntsd -d
на цель через windbg -k
, но это работает, когда я отлаживаю локально.
Я хочу отладить самое первое выполнение кода Winlogon.exe и LSASS.exe. Но чтобы было проще воспроизвести проблему, я составил следующую настройку:
- Я использую пример приложения CrashMe , с предварительно созданным исходным кодом и символами, скопированными в C: \ CrashMe как на цели, так и на хосте
- Я использую средства отладки Windows для Windows (DTW) версии 6.12.0002.633 везде.
- Цель - Windows XP SP3, хост Windows 7. Ultimate.
- Каждый путь и настройки одинаковы на обеих машинах: путь к DTW и путь к сбою.
- Я всегда использую полный путь (например, c: \ dtw \ ntsd.exe).
- Я запускаю XP на виртуальной машине, загруженной с
/noexecute=optin /fastdetect /debug /debugport=com1 /baudrate=115200
Я могу отладить локально с помощью этой команды, запущенной из C: \ CrashMe:
windbg -g -G -srcpath C:\CrashMe -y C:\CrashMe debug\CrashMe.exe
Я могу запустить виртуальную машину Windows XP и подключиться к ней с помощью этой команды:
windbg -n -k com:pipe,port=\\.\pipe\com_1,reconnect -srcpath SRV*;C:\CrashMe -y
c:\windows\system32;c:\windows\symbols;C:\CrashMe\debug
Но мне нужно отладить удаленную машину. На цели, у меня есть следующие варианты:
- Отладка через
-server
и -remote
- прерывание в рабочем процессе
- Использовать параметры выполнения файла изображения (IFEO).
В каждом из этих вариантов я вижу символы (x crashme!*
работает).
Я не могу использовать # 1 (-server
) или # 2 (breakin.exe <pid>
), потому что я хочу отладить код запуска поставщика аутентификации, поэтому мне нужно LSASS.exe
start под ntsd -d
. Я не могу позволить ему запустить и прикрепить позже.
Насколько я понимаю, мне нужно использовать IFEO. Используя gflags.exe вместо изменения реестра вручную, я установил для исполняемых параметров
c:\dtw\ntsd -d -G -lines -x -y c:\symcache;c:\windows\system32 -n -srcpath C:\CrashMe\
- Я могу взломать приложение, но установленные точки останова никогда не будут достигнуты.
- Я могу
.open
любой файл, но я не могу использовать файл для установки точки останова.
- Я могу х (изучить) любой символ
- Я не вижу исходный код.
Как мне увидеть исходный код моей DLL процесса, работающего с ntsd -d
по windbg -k
?