Re: Работа 32-битных приложений в 64-битных ОС
От: AlexKom  
Дата: 03.04.09 12:21
Оценка: 2 (1)
Здравствуйте, AlexKom, Вы писали:

AK>Добрый день!


AK>Я столкнулся с проблемой — есть 32-битный проект, который выполняет inject в чужой процесс используя CreateRemoteThread. В 32-х битной WinXP всё работает замечательно. Тот же самый код в 64-битном окружении работать не хочет, функция CreateRemoteThread возвращает ошибку Access denied.


AK>Я использовал код Рихтера (глава 22 из книги "Создание эффективных Win32-приложений с учетом специфики 64-разрядной версии Windows). Та же самая ошибка. У Рихтера никаких объяснений по этому поводу нет (да и про возможность появления ошибки тоже).


AK>Есть подозрение, что 32-битный процесс запускается в своей "песочнице" и поэтому нельзя 32-битную dll внедрить в 32-битный процесс.


AK>Если кто-то сталкивался с подобной проблемой — поделитесь как решали.

AK>Может быть у кого есть линки на хорошее описание, как именно выполняются 32-битные процессы в Win64 — было бы тоже замечательно. Ничего внятного по этой теме я пока найти не смог.

проблема оказалась во флаге PROCESS_VM_READ, который нужно было обязательно указать в OpenProcess. Удивительно, но без него все хорошо работало везде, кроме WinXP64. В документации четко указано, нужно обязательно его использовать.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.