Вышел очередной релиз pykd.
Исправили ряд мелких и не очень багов:
#8229 - При вызове функции loadModule для модулей отличных от nt появлялось сообщение об ошибке. Теперь - все работает четко.
#8236 - Функции вывода текста ( dprint/dprintln ) не работали с UNICODE. В результате, приходилось писать:
dprint( str( loadUnicodeString( strAddr ) )
Теперь str - можно ( и нужно ) опустить.
#8239 - ф. ptrSignByte возвращала строку, а не число со знаком, что естсетвенно приводило к неправильной работе скриптов.
Добавили следующие функции:
a = locals().aИсправили ряд мелких и не очень багов:
#8229 - При вызове функции loadModule для модулей отличных от nt появлялось сообщение об ошибке. Теперь - все работает четко.
#8236 - Функции вывода текста ( dprint/dprintln ) не работали с UNICODE. В результате, приходилось писать:
dprint( str( loadUnicodeString( strAddr ) )
Теперь str - можно ( и нужно ) опустить.
#8239 - ф. ptrSignByte возвращала строку, а не число со знаком, что естсетвенно приводило к неправильной работе скриптов.
Добавили следующие функции:
locals()Возвращает коллекцию локальных переменных в текущей области видимости. Применять можно при отладке, например так:
while a > 10:
trace()
a = locals().a
Также, локальные переменные можно посмотреть для любого фрейма в коллекции, которую возвращает функция getCurrentStack. Примерно так:
frames = getCurrentStack() for f in frames: dprintln( f.locals )
typedVarArray( offset, moduleName, symbolName, arraySize )Возвращает коллекцию элементов типа moduleName!symbolName, которые располагались в памяти в виде массива размерностью arraySize. Использовать можно примерно так:
nt = loadModule("nt") poolVector = typedVarArray( nt.PoolVector, "nt", "_POOL_DESCRIPTOR*", 2 ) dprintln( "non paged pool: %x" % poolVector[0] ) dprintln( "paged pool: %x" % poolVector[1] )
Комментариев нет:
Отправить комментарий