Подскажите плагин или еще чего, что позволит в отлаживаемой 3D программе увидеть структуры и интерфейсы DirectX. Может есть возможность присвоить связи в ручном режиме? Читал, что DX использует виртуальные функции, так как он работает по COM технологии. Вызов функции производиться расчетом смещения от ф. CallBack. Вот только как увидеть структуры DX, которые в приложении выделены под нужды программы. Например, Caps, DevCaps и другие. Скачивал pdb файлы для dll directx, но это не то. ps. Еще вопрос в IDA есть возможность расспознать структуры?
tex32 в иде можно самому задавать структуры и применять их к данным на крайний случай, можешь дх-логгером посмотреть
tex32 Как вариант, если приложение твое. И отладчиком сложно, то можешь выводить в свой лог все что интересует- значения переменных, структуры итп.
Rustem Изучаю технологию отладки на примере из Dx SDK. Поэтому использовать лог можно, но хотелось бы разобраться, как выполнить все операции в отладчике внутри чужого приложения. Пробовал дх-логгер, спасибо, помогает очень. o14189 Вопрос, вот в чем, если у меня нет pdb файла для отлаживаемой программы. Программа чужая, отладка ведеться в слепую (нет исходников), у меня есть только набор системных отладочных символов скаченных с сайта ms, это может помочь или нет? Скачал Symbol Type Viewer, пробовал, что-то он сильно сложный. Поставил отладочные символы в каталог "C:\Windows\symbols" прописал в окружение "_NT_SYMBOL_PATH=C:\Windows\symbols" пробовал запускать, программа пишет "не могу найти символы." Или она ищет pdb отлаживаемой программы? Пробовал в ИДА загружать idc файл, но не увидел изменений в листинге отлаживаемой программы, если можно разъясните, что должно произойти.
Symbol Type Viewer не качает pdb. Хотя пишет в строке состояния "pdb ... loaded." Уже все настроил, выставил параметры. Может можно заставить его построить idc файл на основе локальных отладочных символов или он работает только со скаченными самостоятельно.
Rustem это понятно. pdb символы с сайта мс я хочу использовать, чтобы в отлаживаемой программе было больше понятного кода. В 3d программе используеться структуры и функции из DX, их я и хочу найти. Желательно, чтобы это выглядело, как ollydbg находит и показывает системные функции. Думаю, что надо читать, как писать плагины.
tex32 OllyDbg показывает функции по ее имени в экспорте + у нее есть сигнатуры популярных функции. В директиксе все методы виртуальные. просто так имени не получишь, а получишь код вида push param push param2 .... push pobj call [eax+NN] Например, возьмем интерфейс IDirect3DDevice8 Для него NN будет след 0 {"IDirect3DDevice8_QueryInterface"},//0 4 {"IDirect3DDevice8_AddRef"},//1 8 {"IDirect3DDevice8_Release"},//2 12 {"IDirect3DDevice8_TestCooperativeLevel"},//3 16 {"IDirect3DDevice8_GetAvailableTextureMem"},//4 20 {"IDirect3DDevice8_ResourceManagerDiscardBytes"},//5 24 {"IDirect3DDevice8_GetDirect3D"},//6 ..... Если хочешь изучить прогу, то лучше делай это в ида, а дебагер используй для уточнения неясных деталей. поля структур оля не показывает, а в иде это легко PS что за прогу реверсишь то?
Rustem спасибо за помощь. Действительно в OllyDbg все так и происходит, ты очень хорошо это описал. Насколько я понял push pobj всегда один и тот же, меняеться только значения param и +NN. Я просто больше знаком с OllyDbg, чем с ида. Начал читать статьи по ида, наберусь опыта, тогда уже начну понимать, всё что многим уже давно известно и не вызывает затруднений. Программа из DirectX SDK называеться Blobs.exe. Взял ее, хотя там можно взять любую.