Вопрос: Нужна помощь с хуком | Добавлено: 25.11.08 15:46 |
Автор вопроса: ![]() |
Ответы | Всего ответов: 42 |
Номер ответа: 16 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 6 Ответов: 56 |
Профиль | Цитата | #16 | Добавлено: 29.11.08 15:01 |
Вообщем пока решил отказаться от хука и попытался сделать subclass окна:
Сообщения окна отлавливаются нормально, но при закрытии окна возникает ошибка: память не может быть "read". Подскажите пожалуйста, где я допустил ошибку. |
Номер ответа: 17 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 8068014 Вопросов: 18 Ответов: 817 |
Web-сайт: Профиль | Цитата | #17 | Добавлено: 29.11.08 15:44 |
ошибка в чьем приложении - похуканном или твоем? |
Номер ответа: 18 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 6 Ответов: 56 |
Профиль | Цитата | #18 | Добавлено: 29.11.08 16:12 |
Ошибка приложения, которое вызвавает мою dll.
P.S. Вышеуказанный код находится в dll. |
Номер ответа: 19 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 8068014 Вопросов: 18 Ответов: 817 |
Web-сайт: Профиль | Цитата | #19 | Добавлено: 29.11.08 16:27 |
терь можно долго гадать, на обращение к чему идет бага...
самый простой вариант - поюзать ollydbg, найти в какой строке кода на какое действо бага. на крайний случай хотя бы адрес исключения - в системных либах или в твоем коде. |
Номер ответа: 20 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 6 Ответов: 56 |
Профиль | Цитата | #20 | Добавлено: 29.11.08 16:42 |
А сам код, который я указал выше - валидный? |
Номер ответа: 21 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 8068014 Вопросов: 18 Ответов: 817 |
Web-сайт: Профиль | Цитата | #21 | Добавлено: 29.11.08 16:56 |
вот моя обработка
он в принципе ничем не отличается, и при закрытии работал нормально. значит косяк видимо надо искать в другом месте |
Номер ответа: 22 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 6 Ответов: 56 |
Профиль | Цитата | #22 | Добавлено: 29.11.08 17:10 |
По поводу ollydbg, выдал следующее:
Return to 7C90DE5C (ntdll.7C90DE5C) Process terminated, exit code C0000005 (-1073741819) Предполагаю, что баг кроется в самом приложении, пока выкрутился так:
Хоть и не спортивно, но работает ![]() |
Номер ответа: 23 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 8068014 Вопросов: 18 Ответов: 817 |
Web-сайт: Профиль | Цитата | #23 | Добавлено: 29.11.08 17:14 |
жесть ![]() ![]() а в олли ты не то видишь. нада залезть в настройки, отрубить игнорирование всех исключений(убрать все галки), дальше запустить в олли твой прого с длл, хукнуть прогу и звкрыть прогу - тада олли вывалится на бажный код. можешь ради интереса вставить сюда строк 10. 5 до строки с ошибкой и 5 после. |
Номер ответа: 24 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 6 Ответов: 56 |
Профиль | Цитата | #24 | Добавлено: 29.11.08 17:32 |
|
Номер ответа: 25 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 8068014 Вопросов: 18 Ответов: 817 |
Web-сайт: Профиль | Цитата | #25 | Добавлено: 29.11.08 17:36 |
хм. это не место ошибки. сталобыть или исключение теперь не возникает, или оно возникает в другом процессе. |
Номер ответа: 26 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 6 Ответов: 56 |
Профиль | Цитата | #26 | Добавлено: 29.11.08 17:44 |
ваще за такое все таки руки нада отрывать
Я понимаю что это не спортивно, но я не вижу причины почему я не могу принудительно закрыть процесс, если он и так собирался закрыться или остается вероятность наступить на грабли? Если ошибка в приложении - я все равно ее не устраню, т.к. это не мое приложение. |
Номер ответа: 27 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 8068014 Вопросов: 18 Ответов: 817 |
Web-сайт: Профиль | Цитата | #27 | Добавлено: 29.11.08 17:55 |
дело не в спортивности. бага, корни который непонятны, может проявица в разных формах. нету гарантий, что кильнув процесс баги не будет. если б гарантировать, что такой способ решения 100% спасет - то сгодится. |
Номер ответа: 28 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 6 Ответов: 56 |
Профиль | Цитата | #28 | Добавлено: 30.11.08 14:45 |
...значит косяк видимо надо искать в другом месте
Таки ты прав, создал dll с функцией Subclass, но без функций необходимых для подключения плагина и сделал вызов из приложения функции Subclass (приложение поддерживает работу с dll) - все ок, ошибки не происходит. Получается виноваты ф-ции связки плагина с приложением ![]() Ф-ции связки все однотипные, в SDK есть пример на Си, я сделал аналог на PB: Си:
GetPluginName Purpose: To return the name of the action plugin to the calling program. Keep this short but descriptive. For example, if your plugin is used to access ADO databases, call it something like “ADODatabase”. Prototype: int GetPluginName(char* szBuffer, int* pnBufferSize) Parameters: szBuffer - [out] A pointer to a character buffer that will receive the name of the plugin. pnBufferSize - [in/out] A pointer to an integer that contains the number of characters in szBuffer on the way in and will be set to the number of characters actually copied to the buffer on the way out. Returns: The number of characters copied to the buffer or -1 if the buffer was not large enough to contain the plugin’s name. If you return -1, be sure that you set pnBufferSize to the number of characters actually required. PB:
Я не вижу причину, которая может повлиять на работу Subclass или все таки мой налог кода не корректен? |
Номер ответа: 29 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 8068014 Вопросов: 18 Ответов: 817 |
Web-сайт: Профиль | Цитата | #29 | Добавлено: 30.11.08 15:42 |
на вид все корректно. видимо в другом месте косяк. есть другие функции? |
Номер ответа: 30 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 6 Ответов: 56 |
Профиль | Цитата | #30 | Добавлено: 30.11.08 19:10 |
Все функции аналогичны выше указанной, кроме одной:
|
|