![]() |
eXeL@B —› Вопросы новичков —› Оттрассировать ActiveX вызыавающийся из IE |
Посл.ответ | Сообщение |
|
Создано: 28 октября 2011 17:44 · Личное сообщение · #1 Есть дебильный видеорегистратор просмотр которого идет через ActiveX компоненту. ActiveX компонента падает с ошибкой CreateDDSsecondary error при подключении к регистратору. Я вырыл интернет до дна, но решения такой ошибки не нашел, не нашел и такого API к directdraw. IDA докопалась до куска кода, который генерит ошибку. --- cod --- Code:
--- cod --- Блин, directx стоит на всех машинах, все окейно работает. Но на одних эта компонента работает, в других нет. Запустил Iexplore под Олей, попробовал на процедуру поставить int3 (0cch) (вместо push ebp), все валится с ошибкой, Оля спит. Как подцепиться к этому злобному OCX, чтобы посмотреть, какие он действия делает ? На эту тему тоже ничего внятного не нашел. ![]() |
|
Создано: 28 октября 2011 17:58 · Личное сообщение · #2 |
|
Создано: 29 октября 2011 04:16 · Личное сообщение · #3 Vovan666 пишет: лучше зацикли (ebfeh), а потом просто нажми на паузу. -- Хрень какая то... Оля конечно оживает, но совсем не на беконечном цикле, а сразу после sysenter в ntdll. Code:
вот на 514 адресе и встает, а дальше ходить можно по dll'кам до посинения. Хотя ie зависает, что значит управление в цикл упирается. Но что-то у меня все немногочисленные идеи покончались. А почему int3 может не работать ? ![]() |
|
Создано: 30 октября 2011 13:52 · Личное сообщение · #4 -Xlat- но совсем не на беконечном цикле Глянь сколько там потоков/thread-ов и переключись на свой... Естественно все. Ты же IE отлаживаешь, а он многопоточный и твой поток не главный. ![]() |
|
Создано: 31 октября 2011 04:49 · Личное сообщение · #5 tundra37 пишет: Глянь сколько там потоков/thread-ов и переключись на свой... Естественно все. Ты же IE отлаживаешь, а он многопоточный и твой поток не главный. tundra, будь другом распиши подробнее, а то я не врублюсь.. Момент загрузки activex, я отследить не могу, даже, когда ставлю остановку при загрузке DLL. По ebfe я конечно могу повесить.. но так как ie виснет, то может у него один поток. В общем, как мне найти тот поток, в котором висит этот activex ? А есть какой api к оле, чтобы можно было им дернуть и оля проснулась бы. Ведь код я могу пропатчить как угодно и если оля всплывет, то мне только это и надо. А то int3 не работает.. ппц какой то, кто то ставит свой обработчик, что ли. В общем, мой моск ударно близится к коме. ![]() |
|
Создано: 31 октября 2011 06:19 · Личное сообщение · #6 |
|
Создано: 31 октября 2011 11:57 · Личное сообщение · #7 0xy пишет: В Ольге кнопочка Т (Threads) вызывает список потоков. Это то понятно.... Там список порядка из 14 потоков. Один из потоков реально выделяется потребленным временем. Наверное, это он. Прикол в другом.. В просмотре дампа (alt+m) если вызвать поиск (ctrl+b), и вбить туда двоичный код, ну например: "8B 95 7C FF FF FF" (mov edx, [ebp+CallTable]) это из выше приведенного листинга, то... то нифига ничего не находится. А эксплорер висит явно зацикленный. Мистка какая то. Модуль есть... и его нет. Чего я не понимаю ![]() |
|
Создано: 31 октября 2011 13:19 · Личное сообщение · #8 |
|
Создано: 01 ноября 2011 13:09 · Личное сообщение · #9 ![]() Кароче, я ее победил. Тундра и Вован, спасибо вам за идеи, очень ценные. Если кому интересно, как все было и что было. ActiveX компонента циклилась по ebfe. (совет вована) Потом, когда IE вис, подключался Олей к потоку, и в контексте по alt+m делал поиск куска кода, там находил свой ebfe и исправлял его на то, что надо. (тундра) После долгого изучения работы с ddraw, выяснилось, что эта долбанная компонента вызывает DD.CreateSurface, которая валится с ошибкой и вместо того, чтобы корректно завершиться, эта хрень шла исполняться дальше, генеря кучу эксепшенов, которые в конце приводили к падению и краху IE. Сам код написан корректно, то есть с ddraw работа идет нормально и правильно, нигде никакой фантазии. Так что компонента оказалась не причем. Проблема заключалась в том, что на машине стоял vnc с видеодрайвером "vncdrv.sys(size: 4736)", хотя такая же хрень происходила и с драйвером mv2.sys (size:12096). (оси winxp, win7) Кароч, проблема заключалась в том, что бюджетная видеокарточка не могла работать в кооперативном режиме для двух ddraw операторов. Когда один читал экран, а второй в этом экране открывал свои поверхности для отображения. Как только в vnc, ставшь галочку работать через video hook driver, dd.createsurface кончалась с ошибкой, компонента выдавала уродскую createddsecondary error и обваливала ie. На нормальных видюхах такая проблема не обнаруживается и все работает параллельно. ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Оттрассировать ActiveX вызыавающийся из IE |