![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
Kostyaxp |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 19.7.2006 Репутация: нет Всего: 1 |
Привествую всех заглянувших в ветку, и прошу помощи по возможности в решении следующего вопроса.
Задача такова: В системе другим (не моим) процессом загружена dll. Имя этой dll известно, имя процесса ее загрузившего тоже. Необходимо из ресурса этой dll загрузить hex данные в свое приложение. Имя ресурса (RCDATA) в dll тоже известно. Есть код (пример):
Вопрос в том, как получить HInstance этой dll (загруженной чужим процессом) не загружая ее в свое приложение, чтобы передать ее HInstance, как параметр для TResourceStream.Create? Это сообщение отредактировал(а) Kostyaxp - 28.10.2012, 16:39 |
|||
|
||||
Illusion Dolphin |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 4 Всего: 63 |
Не понимаю полностью проблему. Если известно имя длл, то грузим её как данные (LoadLibraryEx, LOAD_LIBRARY_AS_DATAFILE) и читаем что хотим - чем это не устраивает?
-------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
|||
|
||||
Чучмек |
|
|||
НЭТ БИЛЭТ ![]() ![]() Профиль Группа: Участник Сообщений: 841 Регистрация: 11.5.2008 Где: СССР Репутация: 7 Всего: 41 |
HInstance это адрес по которому загружена длл.
-------------------- умную мысль держи при себе, а дурной - поделись с другими |
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 16 Всего: 128 |
Но автор хочет Почему поставлено такое ограничение, что нельзя библиотеку "загрузить" в свое АП и сделать с ней то, что надо? -------------------- There are always someone smarter than you... |
|||
|
||||
Illusion Dolphin |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1198 Регистрация: 3.5.2003 Репутация: 4 Всего: 63 |
99% что этого автор не хочет, а пытается сделать. Задача имхо совсем в другом, но он забыл об этом рассказать. Но в лоб как это сделать - делается dll inject, код которого делает GetModuleHandle(Имя этой dll) и операции с ресурсами, по завершению через межпроцессорное взаимодействие передаёт днные в программу автора. Чтобы получить список dll у процесса можно сделать вот так (© stackoverflow):
Получите список dll и их ModuleHandle - то же, что и HInstance для win32. Дальше GetModuleFileNameEx и если совпало - получите искомое HInstance. Теперь самое интересное - это не поможет получить ресурсы, т.к. полученный HInstance это виртуальный адрес в адресном пространстве того exe, а не нашего. FindResource не будет работать. Считать данные можно кое-как через ReadProcessMemory и операции с форматом PE файла, но это уже как-то сложно. -------------------- В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен. Шифрование и организация фотографий - Photo Database 4.5 |
||||
|
|||||
bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: 21 Всего: 88 |
младшие биты могут отличаться (используются как флаги) -------------------- Обижено школьников: 8 |
|||
|
||||
Kostyaxp |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 54 Регистрация: 19.7.2006 Репутация: нет Всего: 1 |
Всем спасибо за ответы.
В итоге сам точно также и пришел к выводу о том, что dll-ку придется грузить, иначе слишком сложно все получается. Ограничение изначально было из-за того, что путь до dll не известен (хотелось в другом процессе отловить), а само содержимое ее ресурсов может при этом меняться. Код такой получился:
Хотел поставить "плюсеги", но постов не хватает. ![]() Это сообщение отредактировал(а) Kostyaxp - 1.11.2012, 18:58 |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |