|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
22.02.2013, 19:04 | #1 |
Форумчанин
Регистрация: 02.12.2012
Сообщений: 250
|
Загрузить библиотеку в внешний процесс - только инжект?
В соседних ветках уже касался этого вопроса,но хотелось бы уточнить еще раз. Если мне надо вызвать функцию LoadLibrary для внешнего процесса, возможно ли это сделать без инжектирования кода внутрь этого процесса?
Сначала я думал что CreateProcess или OpenProcess могут помочь, но получается что все команды будут относиться к моему загрузчику,а не внешнему процессу? Ну например: proga1.exe вызывает CreateProcess proga2.exe Далее proga1.exe вызывает LoadLibrary или VirtualAlloc - на процесс proga2.exe это будет влиять или нет? |
22.02.2013, 19:09 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
процессы не связаны, инжектировать короткий кусок кода:
http://wm-help.net/books-online/book...-16.html#h22t4 Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
22.02.2013, 20:16 | #3 |
Форумчанин
Регистрация: 02.12.2012
Сообщений: 250
|
Что то я туплю опять.А зачем инжектировать? Если я вызову CreateProcess,а затем CreateRemoteThread(hProcessRemote, NULL, 0, LoadLibraryW, L"C \\MyLib.dll" , 0, NULL); из моего приложения-загрузчика, не будет работать?
И таким же образом можно любую функцию вызвать,скажем VirtualAlloc? Последний раз редактировалось calypso; 22.02.2013 в 20:19. |
22.02.2013, 20:32 | #4 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
Не, не будет - "MyLib.dll" строка будет в вашем процессе.
Строго говоря, нет гарантии, что адрес LoadLibrary будет один и тот же во всех процессах (хотя для kernel32 это обычно так). Через CreateRemoteThread сможете вызывать только функции с одним аргументом - VirtualAlloc к ним не относиться. |
22.02.2013, 20:45 | #5 |
Форумчанин
Регистрация: 02.12.2012
Сообщений: 250
|
Ну тогда значит получается CreateRemoteThread будет выполнять роль функции InjectDLL ,а уже в DLLMain MyLib.dll нужно прописать код с VirtualAlloc,LoadLibrary,GetModuleH andle,GetProcAddress и т.д.
Кстати не пойму,у Рихтера книжка Windows via C++ ничем не отличается от Windows Для профессионалов? Что то по моему там целые главы одинаковые |
22.02.2013, 20:51 | #6 |
Форумчанин
Регистрация: 02.12.2012
Сообщений: 250
|
И ещё вопрос: у меня CreateProcess создается с параметров CREATE_SUSPEND ,т.е. загружаются не все библиотеки.Я создам в нем свой поток,выполню код из инжектированной DLL,а потом как продолжить нормальную загрузку процесса? Или система сделает это автоматически
|
22.02.2013, 22:13 | #7 |
Старожил
Регистрация: 13.07.2012
Сообщений: 6,330
|
Надо сделать ResumeThread первого потока процесса - возвращается из CreateProcess()
А вот насчет загрузки DLL это еще вопрос... если DLL процесса еще не загружены, как будет вызываться LoadLibrary? |
23.02.2013, 13:04 | #8 |
Форумчанин
Регистрация: 02.12.2012
Сообщений: 250
|
Ну да, с CREATE_SUSPENDED вероятно не получится - процесс ещё не проинициализирован. А есть ещё способы приостановить его загрузку чтобы загрузился минимальный набор библиотек,но уже с kernel32?
|
23.02.2013, 13:49 | #9 | |
Форумчанин
Регистрация: 30.10.2009
Сообщений: 114
|
Цитата:
Различных статей по этой теме огромное множество, так что стоит поискать и почитать, все вопросы сразу отпадут. |
|
25.02.2013, 12:56 | #10 |
Форумчанин
Регистрация: 02.12.2012
Сообщений: 250
|
Код:
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
AppInit_DLLs и инжект в определенный процесс | nls | Win Api | 2 | 01.02.2013 09:17 |
Hibernate. Java. Загрузить список только из одного поля таблицы | KBI | Java Базы данных (JDBC, JPA, Hibernate) | 1 | 26.07.2012 19:32 |
Загрузить библиотеку вместе сразу вместе с программой | Anekdot | Общие вопросы Delphi | 4 | 26.01.2010 23:14 |
Загрузить процесс в память, но не допустить запуска | Crivel | Общие вопросы Delphi | 8 | 28.05.2009 11:17 |
Как загрузить свою DLL в атакуемый процесс, который не знает о ее существовании - Создание хуков | KleoY | Win Api | 18 | 30.03.2009 14:31 |