|
|
||||||||||||||||
Сплайсинг (хук)29.11.2014, 20:36. Показов 4931. Ответов 18
Метки нет (Все метки)
Есть библиотека с модифицированной функцией для сплайсинга
Кликните здесь для просмотра всего текста
и приложение для инжекта библиотеки в процесс Кликните здесь для просмотра всего текста
При запуске app.exe получается так, что библиотека инжектится быстрее чем загружается some_lib.dll и естественно хук не срабатывает. Как и где нужно сделать Wait? я вижу это так - приложение останавливает загрузку той программы, которая вызывает some_lib.dll (причём на адресе этой some_lib.dll), посылает команду Inject и ждёт ответа от хука. для более понятного объяснения я напишу пример кода программы, которая вызывает some_lib.dll и в которую нужно проинжектить хук Кликните здесь для просмотра всего текста
0
|
||||||||||||||||
| 29.11.2014, 20:36 | |
|
Ответы с готовыми решениями:
18
Хук клавиатуры Хук на процесс Хук создания окна |
|
Ушел с форума
|
|
| 29.11.2014, 21:07 | |
Сообщение было отмечено _lunar_ как решение
Решение
Пара вариантов, на выбор:
1. Запустить процесс с флагом DEBUG_PROCESS (отладка), затем дождаться с помощью WaitForDebugEvent загрузки нужной dll и после этого поставить хук. 2. Запустить из DllMain поток, и уже из него ставить хук. Поток начнет работать только после того, как будут проинициализированы точки входа всех статически слинкованных dll. 3. Похукать ntdll!LdrLoadDll и из нее ловить загружаемые dll. Лично я за вариант 2 как наиболее безопасный (к моменту запуска функции потока нужная dll гарантированно будет загружена и проинициализирована).
1
|
|
|
|
||||||
| 29.11.2014, 22:09 [ТС] | ||||||
|
2 вариант вроде то, что нужно. Спасибо, буду пробовать.
Добавлено через 17 минут к сожалению не получилось. Сделал так
0
|
||||||
|
Ушел с форума
|
|||
| 29.11.2014, 22:47 | |||
|
LPTHREAD_START_ROUTINE - это _stdcall-функция, которая принимает один параметр (void *) и возвращает DWORD.
0
|
|||
|
|
||||||||
| 29.11.2014, 23:05 [ТС] | ||||||||
0
|
||||||||
|
Ушел с форума
|
||
| 29.11.2014, 23:11 | ||
|
Добавлено через 1 минуту И еще неплохо бы узнать, что возвращают GetModuleHandle, GetProcAddress и VirtualProtect (и какой last error в случае ошибки).
0
|
||
|
Ушел с форума
|
|
| 29.11.2014, 23:16 | |
|
А, ну тогда способ 2 отметается.
Ну или можно в функции потока самому позвать LoadLibrary
0
|
|
|
Ушел с форума
|
|
| 29.11.2014, 23:24 | |
|
Вместо того, чтобы ждать появления dll, можно загрузить ее самому.
1
|
|
|
Ушел с форума
|
|
| 29.11.2014, 23:32 | |
|
Если так не получится (а могут быть побочные эффекты, если приложение
рассчитывает на определенный порядок загрузки dll), советую попробовать вариант с перехватом LdrLoadDll (ntdll.dll), он достаточно простой.
1
|
|
|
Ушел с форума
|
|||||||
| 29.11.2014, 23:51 | |||||||
|
Одно из двух: либо приложение проверяет каким-то образом порядок загрузки dll, либо, что более вероятно, одна из функций возвращает по какой-то причине ошибку (но это не проверяется, поэтому точная диагностика невозможна). "Портянка" WinAPI-вызовов, где нет ни одного "if" с проверкой успешности - не самый лучший способ что-то сделать. В первую очередь данный код нужно улучшить в плане обработки ошибок:
1
|
|||||||
|
286 / 192 / 56
Регистрация: 25.12.2012
Сообщений: 640
|
|
| 02.12.2014, 16:50 | |
|
Да тут проще всего приатачить вашу dll к нужной dll и все дела. Для этого даже программы есть , делается как дважды два проще простого.
0
|
|
| 02.12.2014, 17:00 | |
|
0
|
|
|
|
||
| 03.12.2014, 20:18 [ТС] | ||
|
0
|
||
|
286 / 192 / 56
Регистрация: 25.12.2012
Сообщений: 640
|
|
| 03.12.2014, 21:46 | |
|
Я не понимаю зачем ждать загрузки some_lib.dll и потом её править, если можно сразу её модифицировать (или в вашем случае нельзя сразу ?). Создаёте dll цепляете её к some_lib.dll (путём правки таблицы импорта ) . Это гарантирует что в момент выполнения DllMain (вашей dll) some_lib.dll будет уже загружен.
Добавлено через 7 минут К стати вариант хука у вас не самый лучший. Я бы на вашем месте модифицировал таблицу импорта, переписать пришлось бы только один DWORD. Добавлено через 30 минут Как вариант можно похукать LdrpLoadImportModule.
1
|
|
| 04.12.2014, 04:51 | |
|
0
|
|
| 04.12.2014, 04:51 | |
|
Помогаю со студенческими работами здесь
19
Хук, скрытие окна Не срабатывает хук WH_GETMESSAGE Хук на события сохранения Перехват (хук) функции Хук перестает работать Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|