Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Win Api
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.08.2012, 23:37   #11
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Как ни странно, но промотр по диагонали показал примитивную ошибку в модуле установки ловушек (чего я не ожидал от MS-Rem). Ошибка заключается в неверном атрибуте защиты для заглушки.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 21.08.2012, 00:02   #12
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Более глубокий анализ показывает, что проблема в удержании ссылки на интерфейсы (глобальные переменные). Они будут финализироваться при выгрузке DLL, когда основное приложение уже отстрелялось и выгрузило D3D. Что приведёт к всяческим плохим вещам.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 21.08.2012, 02:29   #13
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
(чего я не ожидал от MS-Rem).
Никто не идеален.
Человек_Борща вне форума Ответить с цитированием
Старый 21.08.2012, 06:02   #14
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Цитата:
Как ни странно, но промотр по диагонали показал примитивную ошибку в модуле установки ловушек (чего я не ожидал от MS-Rem). Ошибка заключается в неверном атрибуте защиты для заглушки.
Более глубокий анализ показывает, что проблема в удержании ссылки на интерфейсы (глобальные переменные). Они будут финализироваться при выгрузке DLL, когда основное приложение уже отстрелялось и выгрузило D3D. Что приведёт к всяческим плохим вещам.
Спасибо большое за работу! Скажи, лечить модуль есть смысл, или проще взять другой?

Цитата:
Есть мнение что ошибки в функция Hook'а.
Вы оказались правЫ!
Вчера, когда уже спать завалился, появилось такое же мнение.
Вспомнилось, что я уже ловил подобные ошибки при использовании этого модуля раньше. А вот с madCodeHook ошибок, вроде бы, не было. Наверное, буду покупать...
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Старый 21.08.2012, 14:21   #15
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Цитата:
Спасибо большое за работу! Скажи, лечить модуль есть смысл, или проще взять другой?
Какой модуль? Хука? Взять другой. Свой? Лечить.

Цитата:
Вы оказались правЫ!
Вчера, когда уже спать завалился, появилось такое же мнение.
Он случайно угадал. Потому то вышеуказанная ошибка проявляется при старте приложения (с включенным DEP), а не при выходе. Т.е. это не то, о чём спрашивается в вопросе.
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 21.08.2012, 17:44   #16
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Не мог бы помочь разобраться с ошибкой?.. Хотелось бы всё-таки понимать что делаю, а не тупо перебирать библиотеки...


Блин, всю голову себе сломал. В инете попадаются всё скопипащенные статьи про сплайсинг, где ни чего толкового, только готовые функции. Сравнивал с аналогом из advApiHook - отличия не существенные вроде как...
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}

Последний раз редактировалось Johnson; 21.08.2012 в 20:11.
Johnson вне форума Ответить с цитированием
Старый 21.08.2012, 20:52   #17
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Или ткни носом в литературу, где можно вменяемо почитать об этом, хотя бы...
Везде или бред, или копираст...
Почитал http://www.wasm.ru/article.php?article=apihook_2
Интересно и доступно, только вот автор статьи и есть автор библиотеки... И ошибки те же самые.
Да и подробностей мало. Например, как ты указал выше, проблемы в аттрибуте защиты хука... А подробнее ни где найти не могу.


PS: Я так понимаю, что проблемы в защите памяти - не самая серьезная ошибка в коде?
Объясни, пожалуйста, в двух словах про
Цитата:
Более глубокий анализ показывает, что проблема в удержании ссылки на интерфейсы (глобальные переменные). Они будут финализироваться при выгрузке DLL, когда основное приложение уже отстрелялось и выгрузило D3D. Что приведёт к всяческим плохим вещам.
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Старый 21.08.2012, 21:02   #18
GunSmoker
Старожил
 
Регистрация: 13.08.2009
Сообщений: 2,581
По умолчанию

Нет времени объянять подробно.

Проблема хука - в PAGE_READWRITE у GetMem вместо PAGE_EXECUTE_READ.
Проблема у тебя - в g_Font : ID3DXFont; и D3DDev: IDirect3DDevice9;
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы.
GunSmoker вне форума Ответить с цитированием
Старый 21.08.2012, 21:27   #19
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Он случайно угадал.
Не случайно.
Цитата:
Блин. Библиотека не должна ни чего делать после детача.
Код детача проходит нормально, без ошибок.
В детаче только снятия ловушек, и после этого ошибки. следовательно ошибки в функции хука или в функции его отпуска.
Человек_Борща вне форума Ответить с цитированием
Старый 21.08.2012, 21:43   #20
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Цитата:
Сообщение от GunSmoker Посмотреть сообщение
Нет времени объянять подробно.

Проблема хука - в PAGE_READWRITE у GetMem вместо PAGE_EXECUTE_READ.
Проблема у тебя - в g_Font : ID3DXFont; и D3DDev: IDirect3DDevice9;
Спасибо огромное! Буду разбираться.

--------------
Про защиту не понял... В хуке и анхуке ставится защита PAGE_EXECUTE_READWRITE (как я понимаю, на чтение, запись и исполнение)... В чем может быть проблема? И из предложения не понял не много - должна быть PAGE_EXECUTE_READ? Только чтение и исполнение? А как же тогда подмена начала функции? И ещё... под GetMem имеешь в виду эту строку?
Код:
OldFunction := VirtualAlloc(nil, 255, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
По D3D аналогично... D3DDev: IDirect3DDevice9; я совсем убрал за ненадобностью...
А как освободить ресурсы фонта не нашел в инетах, и не понял из заголовков... Ни чего похожего на *release*, *free*, *destroy* не нашел применительно к шрифтам... Везде освобождают устройство только. Или ты имел в виду, что создание этого интерфейса тут неуместно?

PS: Немного кастрировал проект, скопировал только нужные функции.
Вложения
Тип файла: rar testdll3.rar (3.7 Кб, 10 просмотров)
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}

Последний раз редактировалось Johnson; 21.08.2012 в 22:14.
Johnson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выгрузка из БД в Excel fenetka Microsoft Office Excel 6 20.10.2011 09:06
Зависимость библиотеки от библиотеки ds.Dante C# (си шарп) 2 07.07.2011 12:55
Выгрузка в Word ZapraBwiK Общие вопросы Delphi 0 26.05.2011 11:29
Выгрузка из текстовика mephist Microsoft Office Excel 2 06.08.2009 17:25
Выгрузка данных в ComboBox через ZQuery barcelona БД в Delphi 1 08.05.2007 03:35