Разбираю статьи Four-F (за что ему большое спасибо, очень хорошо и толково написано), юзаю windbg + vmware на 2ой машине, но каждый шаг трассировки уж оочень долго соображает, пишет Retrieving information... при каждом степе. Напрягает немного. Это можно как-то поправить? syser можно через пайп как windbg заюзать или его только на vmware ставить? Не смотря на его глюки, он более понятен.
Не могу подгрузить символы для XP SP2 в WinDbg. Скачались нормально. ChkMatch показал, что хеши совпадают, но age отличаются. Попробовал с помощью ChkMatch исправить, написало окей, но всё по прежнему .symopt+0x40 не помогает. .reload пишет: Код (Text): Loading Kernel Symbols .......................................................................................................................................................... Loading User Symbols .......................... Loading unloaded module list .......................... Но команда dt nt!_* ничего не выводит.
Что интересно в висте всё сразу заработало, dt показала структуры. В XP же очень непонятно. Кто-нибудь в теме, что это означает?
Символы видимо подгрузились корректно. Но почему-то шалит символ - *, если ввести dt nt!_TEB, то выводит. А если dt nt!_*, то ничего. Странно.
2Great Там около 1000стр..Это же боллее 100стр в день..Я худ лит то врядле столько прочитаю..Тем более как ты говоришь вечерами читал..Ну и скорость..
А что вы скажите по поводу неиспользования Студии? Так ли она нужна? Единст плюс - это удобно смотреть структуры и т.д.. Компилять дрова можно и одной командой build , предварительно сделав 2 маленьких файла в директории с исходником: Sources и Makefile , как описано в книге Язык асм и уроки програмирования на стр.472. Я говорю про Си-проекты драйверов
хорошая программа, но полноценный хидер, который можно использовать в проектах, она к сожалению не выдаст. никак не решена проблема с юнионами/структурами внутри юнионов/структур, информации о которых в PDB нет. PDB только определяет смещения полей. впрочем, в точности воссоздать описания структур невозможно(imho). хорошо хоть смещения выводит... вот пример: Код (Text): struct _LDR_DATA_TABLE_ENTRY { // static data ------------------------------------ // non-static data -------------------------------- /*<thisrel this+0x0>*/ /*|0x8|*/ struct _LIST_ENTRY InLoadOrderLinks; /*<thisrel this+0x8>*/ /*|0x8|*/ struct _LIST_ENTRY InMemoryOrderLinks; /*<thisrel this+0x10>*/ /*|0x8|*/ struct _LIST_ENTRY InInitializationOrderLinks; /*<thisrel this+0x18>*/ /*|0x4|*/ void* DllBase; /*<thisrel this+0x1c>*/ /*|0x4|*/ void* EntryPoint; /*<thisrel this+0x20>*/ /*|0x4|*/ unsigned long SizeOfImage; /*<thisrel this+0x24>*/ /*|0x8|*/ struct _UNICODE_STRING FullDllName; /*<thisrel this+0x2c>*/ /*|0x8|*/ struct _UNICODE_STRING BaseDllName; /*<thisrel this+0x34>*/ /*|0x4|*/ unsigned long Flags; /*<thisrel this+0x38>*/ /*|0x2|*/ unsigned short LoadCount; /*<thisrel this+0x3a>*/ /*|0x2|*/ unsigned short TlsIndex; /*<thisrel this+0x3c>*/ /*|0x8|*/ struct _LIST_ENTRY HashLinks; /*<thisrel this+0x3c>*/ /*|0x4|*/ void* SectionPointer; /*<thisrel this+0x40>*/ /*|0x4|*/ unsigned long CheckSum; /*<thisrel this+0x44>*/ /*|0x4|*/ unsigned long TimeDateStamp; /*<thisrel this+0x44>*/ /*|0x4|*/ void* LoadedImports; /*<thisrel this+0x48>*/ /*|0x4|*/ void* EntryPointActivationContext; /*<thisrel this+0x4c>*/ /*|0x4|*/ void* PatchInformation; // base classes ----------------------------------- // friends ---------------------------------------- // static functions ------------------------------- // non-virtual functions -------------------------- // virtual functions ------------------------------ }; // <size 0x50> на смещение 0x3c претендуют два разных поля. с 0x44 то же самое. а на самом деле там: Код (Text): ... union { LIST_ENTRY HashLinks; struct { PVOID SectionPointer; ULONG CheckSum; }; }; union { ULONG TimeDateStamp; PVOID LoadedImports; }; ... А вообще, если мне не изменяет память, в составе DIA SDK есть даже аналогичная программа. Только она не пытается в C-стиле выводить структуры, что вобщем-то правильно.
luckysundog Да, конечно, оно не предназначено для использования. Надо вручную перебивать юнионы. Либо фиксить саму программу, благо сорцы вроде бы есть
так вот я бы советовал в твою статью внести эту поправку, а то ведь это не так очевидно. а то я в свое время пытался эти хидеры в IDA импортировать и удивлялся, почему размеры структур не совпадают
а еще посоветуйте что-нибудь для удобной навигации по сорцам(речь идет о WRK). хотелось бы что-нибудь типа http://doxygen.reactos.org, только попроще. и так чтоб сразу - поставил и работает
А чем не устраивает doxygen? Один раз сгенерил доку и лазай сколько влезет. Я им пользуюсь, мне хватает.
Попалось на глаза - из старого http://ivanlef0u.free.fr/repo/ObjectDir.rar http://rapidshare.de/files/47853093/R0_structs.rar.html