воскресенье, 6 февраля 2011 г.

Release 0.0.15

Вышел очередной релиз pykd.

Исправили ряд мелких и не очень багов:

#8229 - При вызове функции loadModule для модулей отличных от nt появлялось сообщение об ошибке. Теперь - все работает четко. 
#8236 - Функции вывода текста ( dprint/dprintln ) не работали с UNICODE. В результате, приходилось писать:
dprint( str( loadUnicodeString( strAddr ) )
Теперь str - можно ( и нужно ) опустить.
#8239 - ф. ptrSignByte возвращала строку, а не число со знаком, что естсетвенно приводило к неправильной работе скриптов.

Добавили следующие функции:
locals()
Возвращает коллекцию локальных переменных в текущей области видимости. Применять можно при отладке, например так:
a = locals().a
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] )


Комментариев нет:

Отправить комментарий