Хочется узнать насколько это безопасно.. Например через ZwQueryVirtualMemory найду свободный блок памяти нужного размера, изменю атрибуты на PAGE_EXECUTE_READWRITE, и запишу туда свой код. Что скажите?
Записать то ты запишешь... только вот где гарантия, что сама прога (владелец) этой памяти ее не перезапишет, единственный вариант, это найти свободные байти которые есть в конце секций, появляются они при выравнивании секции, но их бывает очень мало. Потому выделяй память!
mrcrown, как оказалось - с выделенными памятями тож хлопотом хватает.. Вот выделил достаточно большую область памяти в чужом адресном пространстве с помощью ZwAllocateVirtualMemory, и мне выдает ошибку - Как с этим быть ?
offtop// Endi У меня тоже было, ты целостность структур загрузчика нарушил. Отойду от торча посмотрим.
Код (Text): mov CodeAddress,0 mov CodeSize,22222 push PAGE_EXECUTE_READWRITE push MEM_COMMIT lea eax,CodeSize push eax push 0 lea eax,CodeAddress push eax push ProcessHandle call ZwAllocateVirtualMemory Вот
Flasher Не знаю. Не должен такой вызов мешать системным библиотекам. И уж тем более kernel32. Разве что вызывается это дело где-нибудь в перехватчике ZwCreateProcess, но тогда вопрос поставлен не совсем корректно.
Бери из лдр адрес и размер user32.dll, затем секцию кода найди(чтобы не юзать проекцию), после как граф. подсистема будет инициализирована указатель можно получить и без прохода, в XPSP2 там 98 сервисов, тоесть 98*4 << PAGE_SIZE, выделяешь одну страницу, заполняешь указателями на хэндлер. В нём NtSetInformationThread(ThreadHideFromDebugger). Тут кратко ввв.virustech.org/f/viewtopic.php?id=35 Они тогда большинство обломаются;
l_inc, суспенденным запускаю процесс, и туда пытаюсь выделить память. CrystalIC, я так и не понял кого мы собираемся обламывать
Ты знаешь... Навороченность иногда оооооооооочень сильно влияет. попробуй это же приложение на другой системке, если не пробывал конечно.
mrcrown, угу, так и есть, навороченность влияет, ибо на голой винде sp3 от msdn всё отлично работает. Вот хочется узнать - могет как-то моно справится с этим например манипулируя кешом памяти или наглухо отрубая DEP функционал..