|
|
|||||||||||||
Создание удаленного потока09.09.2015, 01:24. Показов 2072. Ответов 2
Приветствую!
Собственно имеется код, который создает поток, подгружающий DLL в чужой процесс: Кликните здесь для просмотра всего текста
И сама DLL: Кликните здесь для просмотра всего текста
Для некоторых процессов (например, AkelPad) нормально пишется лог:
Для третьих (chrome.exe, собственно то, что мне требуется) - поток создается успешно. LastDllError тоже проверял ( = 0 ), но такое впечатление что код DLL не выполняется, т.к. лог-файл не создается. Программу запускаю с повышенными привилегиями. Что можно улучшить, как исправить ошибки? Спасибо.
0
|
|||||||||||||
| 09.09.2015, 01:24 | |
|
Ответы с готовыми решениями:
2
Создание удаленного потока Создание удаленного потока
|
|
Ушел с форума
|
|||
| 09.09.2015, 10:21 | |||
|
процессом-"жертвой" разрядности и выполняться с ним в одном и том же сеансе. Это самое первое. А не пишет в файл, скорее всего, из-за нехватки прав. Процессы chrome, как и IE в защищенном режиме, выполняются на уровнях целостности low и untrusted. Чтобы с этих уровней обращаться к файлам, реестру, процессам и другим объектам, на этих объектах должна стоять соответствующая разрешающая метка. См. icacls, опция setintegritylevel. К сожалению, метку "untrusted" эта утилита не понимает, только "low". Windows Integrity Mechanism Design https://msdn.microsoft.com/en-... 25963.aspx Understanding and Working in Protected Mode Internet Explorer https://msdn.microsoft.com/en-... s.85).aspx A Developer's Survival Guide to IE Protected Mode http://www.codeproject.com/Art... ected-Mode На Windows 8 и выше процессы также могут выполняться в "песочнице" (AppContainer). В списке разрешений объектов, доступ к которым требуется из процессов-песочниц, должен быть прописан SID соответствующего AppContainer-а, или, как вариант, SID "All Application Packages" (S-1-15-2-1). У Chrome, кстати говоря, вообще очень мощная песочница, не удивляйся, если даже после загрузки туда dll все равно толком не будет работать: Sandbox https://www.chromium.org/devel... ts/sandbox Для некоторых процессов может быть выставлена защита (Vista Protected Processes или Protected Processes Light на Windows 8.1 и выше), открыть такие процессы с нужными для инжекта правами не получится даже из-под администратора или системы, и привилегия отладки не поможет. Еще загрузка dll в процесс может блокироваться т.н. "Mitigation Policy", см. здесь: UpdateProcThreadAttribute function https://msdn.microsoft.com/en-... s.85).aspx Например, если для процесса выставлен флаг "FORCE_RELOCATE_IMAGES_ALWAYS_ON_REQ_REL OCS", то в него возможна только загрузка dll, которые умеют загружаться по произвольному адресу ("dll rebase", см. опции сборки /DYNAMICBASE (ASLR) и /FIXED:NO в Visual C++). отладки (SE_DEBUG_NAME). Во-вторых, в DllMain можно безопасно вызывать только некоторое подможество функций kernel32.dll и ntdll.dll, но не GetCurrentProcessExplicitAppUserModelID из shell32.dll. Нет никакой гарантии, что shell32.dll уже проинициализирована на момент вызова и что вызов не будет связан с работой других потоков процесса, а они на время работы DllMain не могут создаваться и уничтожаться. DllMain entry point https://msdn.microsoft.com/en-... s.85).aspx Dynamic-Link Library Best Practices https://msdn.microsoft.com/en-... s.85).aspx Я бы посоветовал из DllMain вызвать CreateThread/_beginthreadex, и уже в функции созданного потока проделать всю нужную работу.
0
|
|||
|
|
|||||||||||
| 12.09.2015, 16:51 [ТС] | |||||||||||
|
Спасибо за столь развернутый ответ.
Похоже здесь максимум из того, что мне может потребоваться. Делюсь результатами, на чем остановился... по просьбам из другой темы. Убедился через Диспетчер задач, что процессы-"жертвы" имеют одинаковую разрядность с DLL и процессом, который ее внедряет (x32). Понизил уровень целостности контейнера до уровня "Низкий". По сути проблема № 2 с "вылетом" (это внедрение в iexplore.exe) решилась выведением кода получения UMID в отдельный поток. Поправил ошибки в "украденном" коде с типами данных и незакрытым хендлом. Задействовал альтернативные способы обмена данными между процессами: метюкс, событие, сообщение WM_COPYDATA, запись в файл, создание переменной окружения. Inject Кликните здесь для просмотра всего текста
Library Кликните здесь для просмотра всего текста
Попытка внедрить DLL в iexplore.exe x32 (v.11.0.9600.17959), OS Win7 x64 получилась успешна (ie создает сразу 2 процесса, один из которых защищен от создания удаленного потока, CreateRemoteThread Error = 5). Все функции библиотеки выполнены без ограничений. Sysinternals WinObj также показал, что событие и мютекс были созданы. Переменная окружения создана. Сообщение также пришло, если соблюдается согласование уровней целостности процесса IE и принимающей стороны. Попытка создать поток в процессе Chrome.exe как и раньше - успешна. Извне песочницы никаких признаков того, что код библиотеки выполнятся, к сожалению, не установлено. Защита хорошая. Моя же проблема решена, т.к. искомый мною UMID хром создает не для процесса, а для окна, получить который не составило труда через SHGetPropertyStoreForWindow и интерфейс IPropertyStore.
0
|
|||||||||||
| 12.09.2015, 16:51 | |
|
Помогаю со студенческими работами здесь
3
Создание удалённого доступа создание удаленного пользователя на локальном пк. Создание удалённого доступа windows server 2003
Создание потока из потока. Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Конвертировать закладки 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.
На борту пять. . .
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет
значение производной при заданном х
Логарифм записывается как: (x-2)log(x^2+2) -. . .
|
Камера 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. Пошагово создадим проект для загрузки изображения. . .
|