Не выполняются команды dbgCommand при отладке ядра

Jun 24, 2015 at 3:13 PM
Добрый день, столкнулся со следующей проблемой: если запускать pykd-скрипт из отладчика, предварительно подключившись отладчиком к ядру и закомментировав строку с pykd.attachKernel, то команды '!process' и '!token' работают корректно и возвращают какой-то результат, если же запускать pykd-скрипт самостоятельно, то они перестают работать. Проблема с '!process' была решена загрузкой kdexts.dll, решения же проблемы с '!token' я так и не нашел. Значение, передаваемое '!token' вычисляется динамически, по результату работы '!process' для конкретного процесса, захардкодено оно только для этого примера. Прошу Вашей помощи в решении проблемы с выполнением этих двух команд, либо вообще для любых.
import pykd
pykd.attachKernel(r"com:port=com1,baud=115200")
pykd.dbgCommand(r'.sympath C:\symbols')
pykd.dbgCommand(r'!reload')
ext = pykd.loadExt(r"C:\Debugging Tools for Windows (x86)\winxp\kdexts.dll")
print "!process"
print pykd.dbgCommand("!process")
print "!token 882014f0"
print pykd.dbgCommand("!token 882014f0")
print "end"
Developer
Jun 24, 2015 at 8:29 PM
Edited Jun 24, 2015 at 8:29 PM
  1. Все команды, начинающиеся с '!' - это расширения. Расширения в windbg устроены очень просто - это функции, экспортируемые из dll по имени
  2. Вы можете выяснить, какие расширения загружены в windbg с помощью команды .chain. Можете просто загрузить все перечисленные там расширения - этого обычно хватает
  3. Искомая команда !token содежится в winxp/exts.dll ( я это выяснил просматривая таблицы экспортов модулей из каталогов winext и winxp )
Надеюсь, это поможет
Jun 25, 2015 at 6:28 AM
Спасибо за ответ, загрузка winxp/exts.dll решила проблему с !token