arthur2 писал(а):А как перехватить, если субклассить чужое окно нельзя?
Понятно А как такое сделать? Без асма возможно?Хакер писал(а):Так что если окно чужого процесса, то WP надо поместить в его (чужого процесса) АП
arthur2 писал(а):А как такое сделать? Без асма возможно?
arthur2 писал(а):А как такое сделать? Без асма возможно?
alibek писал(а):Статью GSerg-а почитай.
Решение задачи не представлял даже теоретически, вот и предположил.Хакер писал(а):Переспрошу: и зачем тут асм?
Как внедритьсяTwister писал(а):А вообще вопрос-то в чём? Как внедриться или как сабклассить?
Twister писал(а):ты ли запускаешь процесс (или внедриться надо в уже запущенный), какие права в системе, требуется ли корректная обработка UAC на Vista+?
arthur2 писал(а):Как внедриться
И ещё - как узнать, сколько байт копировать? То есть, сколько занимает в памяти та или иная функция? Что мне приходит в голову - от Addressof одной и до Addressof следующей?arthur2 писал(а):а для таких действий, скажем, в семерке какие нужны права?
Antonariy писал(а):А как узнать размер процедуры?
Sub A
fooooo barr
End Sub:Sub End_of_A:end sub
SizeOfA = AddressOf End_of_A - AddressOf A 'по смыслу
arthur2 писал(а):А как всё-таки насчёт прав на такую фишку?
Нужно добавить соответствующий манифест, тогда будет "не молча".Если это хук, то хук в семерке ставить не дают. Причем, молча - и Run As Administrator не помогает. Если отключить UAC - тогда дают, но хочется с включеным.
Тогда я рекомендую не заморачиваться с внедрением кода процедуры окна. Тебе такой код всё равно придётся писать базонезависимым.Я запускаю.
Twister писал(а):Эм, arthur2, а ты собрался просто так вот взять первую попавшуюся процедуру и запустить её в чужом процессе?
Нижайше кланяюсь и говорю "ну, сорри"Twister, ты обломал весь кайф
Twister писал(а):кто-то должен заюзать SetWindowLong-функцию внутри целевого процесса
Угу, я тоже так думал. Но вот тут мы до этого манифеста так и не добрались:Twister писал(а):Нужно добавить соответствующий манифест
Кайф у тебя какой-то садисткий. Впрочем, давно подозревал.Хакер писал(а):Twister, ты обломал весь кайф открытия того, что абы-какую процедуру нельзя тупо скопировать в чужое АП, у Артура, и весь кайф созерцания процесса открытия и описания мыслей по этому поводу Артуром — у меня.
Ключевые слова здесь - внутри целевого процесса. SetWindowLong с параметром GWL_WNDPROC не сработает для окон чужого процесса. Значит вызывать её нужно во внедряемом коде. Следовательно, копировать нужно две функции: 1ая - установщик новой процедуры окна, 2ая - процедура окна. При этом еще нужна область глобальных данных, где бы 1ая процедура сохранила адрес оригинальной WndProc, а 2ая оттуда бы его брала. На асме и других человеческих языках это всё уместится в один блок данных, но как быть с глобальной внедряемой переменной в VB я не знаю, если только "костыли" юзать.Хакер писал(а):Twister писал(а):кто-то должен заюзать SetWindowLong-функцию внутри целевого процесса
Внутри целевого процесса внутри внедряемой функции? Зачем?
Что такое EIP?Twister писал(а):меняй EIP основного потока на адрес LoadLibraryW (надо позаботиться о том, чтобы на стеке лежал адрес строки и корректный адрес возврата)
Сейчас этот форум просматривают: AhrefsBot, Google-бот и гости: 90