Форум: "WinAPI";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];
ВнизCreateRemoteThread??? Найти похожие ветки
← →
Игорь Шевченко © (2005-02-01 17:19) [120]firewall никуда не внедряется. А нафига ему внедряться ?
← →
kaZaNoVa © (2005-02-01 17:21) [121]Игорь Шевченко © (01.02.05 17:19) [120]
> А нафига ему внедряться ?
а как он ослеживает изменение модулей процессов?
← →
Игорь Шевченко © (2005-02-01 17:30) [122]kaZaNoVa © (01.02.05 17:21) [121]
А что такое модули процессов ?
← →
kaZaNoVa © (2005-02-01 17:35) [123]Игорь Шевченко © (01.02.05 17:30) [122]
имхо - загруженные и используемые процессом ДЛЛ.
проверял на АутПосте - при внедрении с помощью CreateRemoteThread с подружанием длл - он ругается с сообщением "изменились модули процесса" ..
а при внедрении по"легендарному"
методу "поток без длл" - не ругается! - )
← →
Игорь Шевченко © (2005-02-01 17:39) [124]kaZaNoVa © (01.02.05 17:35) [123]
Outpost работает с использованием драйвера, так что ему доступна масса сервисов без всякого внедрения. Собственно, outpost, как и большинство firewall"ов - это всего лишь интерфейсная оболочка, а всю работу выполняет драйвер режима ядра.
← →
kaZaNoVa © (2005-02-01 18:47) [125]Игорь Шевченко © (01.02.05 17:39) [124]
Говорят, некоторые фаерволлы, в частности, ZoneAlarm (я сам пока не проверял) реагируют на OpenProcess и спрашивают юзера, позволить или нет ..
← →
Piter © (2005-02-01 18:58) [126]Kerk © (01.02.05 16:23) [117]
с внедрением. но потоки тут не при чем
CreateRemoteThread просто один из способов внедрения, если ты не знал
добавление лишней ДЛЛ файрвол отловит
отловит. Но зачем ему при этом внедряться?
при внедрении с помощью CreateRemoteThread с подружанием длл - он ругается с сообщением "изменились модули процесса" ..
естественно. Потому что при перечислении модулей он увидел новый модуль (DLL твою) - об этом и написал
а при внедрении по "легендарному" методу "поток без длл" - не ругается!
естественно. Как он может ругаться? Если бы он ругался на каждый лишний поток - он бы ругался всегда...
← →
Kerk © (2005-02-01 19:14) [127]Piter © (01.02.05 18:58) [126]
CreateRemoteThread просто один из способов внедрения, если ты не знал
если ты мне покажешь каким боком она используется в перехвате АПИ, я пожму тебе руку (извраты не предлагать).
Piter © (01.02.05 18:58) [126]
добавление лишней ДЛЛ файрвол отловит
отловит. Но зачем ему при этом внедряться?
Для этого внедряться не надо. Внедряться надо для перехвата АПИ. Перехватывает он АПИ или нет мы пока не выяснили.
← →
kaZaNoVa © (2005-02-01 21:56) [128]по сабжу, поставил ZoneAlarm Pro 4.5 версию, да, точно, там есть настройка - спрашивать на разрешение OpenProcess - удивительно, работает))))
← →
kaZaNoVa © (2005-02-01 22:14) [129]провёл тесты с ZoneAlarm Pro v4.5.538
впечатления- надёжная, мощная программа ...
главное - реагирует на OpenProcess ))
Дальше - интереснее, при попытке с помощью Process Explorer"a v8.60 завершить его процесс, либо его сервис, сразу, без попросов возникает отказ "отказано в доступе" ..
Но, самое интересное, если сперва Process Explorer"ом открыть процесс клиента (при этом он не спрашивает разрешения, уровень защиты был на максимуме) - и поочередно убить все его нити то процесс клиента вылетает .. ))))) (!!!)
после этого также лекго можно убить нити сервиса и сервис, соответственно вылетает, и, все, "свобода в инет" - защита исчезает(
Таким поведением ZA меня сильно разочаровал, видимо разработчики не подумали, что "юзера" могут убивать отдельные нити (Thread))))
//весь тест шёл на VMware с Windows XP SP2
← →
Piter © (2005-02-01 23:49) [130]Kerk © (01.02.05 19:14) [127]
если ты мне покажешь каким боком она используется в перехвате АПИ, я пожму тебе руку
хм. Странно. не знал бы тебя - сказал бы что дурак :)
Итак, ты вроде не отрицаешь два факта:
1) чтобы перехватить WinApi функцию, нужно внедрить свой код в удаленный процесс
2) функция CreateRemoteThread является одним из способов внедрения в удаленный процесс
Но я смотрю возникают вопросы как используется CreateRemoteThread в перехвате АПИ.
Она используется для ВНЕДРЕНИЯ в удаленный процесс, ибо это есть условие перехвата WinApi функции (см. пункт 1).
Не знаю как ты мне будешь жать руку по интернету... ну да ладно, обойдусь :)
Внедряться надо для перехвата АПИ
согласен. Но зачем firewall"у перехватывать АПИ? Какой смысл?
kaZaNoVa © (01.02.05 21:56) [128]
спрашивать на разрешение OpenProcess
а какой в этом смысл, никак не пойму?
← →
Kerk © (2005-02-02 04:21) [131]Piter © (01.02.05 23:49) [130]
1) чтобы перехватить WinApi функцию, нужно внедрить свой код в удаленный процесс
2) функция CreateRemoteThread является одним из способов внедрения в удаленный процесс
CreateRemoteProcess НЕ ИСПОЛЬЗУЕТСЯ для внедрения кода. Она используется для запуска потока в удаленном процессе. Скажи как оно связано с перехватом АПИ. (Руку жать пока не буду :P)
>Внедряться надо для перехвата АПИ
>
> согласен. Но зачем firewall"у перехватывать АПИ? Какой
> смысл?
Чтобы ловить вызов OpenProcess.
>спрашивать на разрешение OpenProcess
>
> а какой в этом смысл, никак не пойму?
Внедрение хуком ловим легко - там добавляются лишние модули. Все остальные способы внедрения кода используют OpenProcess.
P.S. По-прежнему не утверждаю, что они перехватывают АПИ. Мнение основано на косвенной информации (в частности о разрешении на OpenProcess)
← →
Kerk © (2005-02-02 07:13) [132]Внедрение кода - есть запись кода в АП другого процесса. Как этот код получит управление - другой вопрос. Перехват АПИ - один из способов передать управление на внедренный код.
← →
kaZaNoVa © (2005-02-02 07:13) [133]Piter © (01.02.05 23:49) [130]
> Но я смотрю возникают вопросы как используется
>CreateRemoteThread в перехвате АПИ.
>
> Она используется для ВНЕДРЕНИЯ в удаленный процесс,
> ибо это есть условие перехвата WinApi функции (см.
> пункт 1).
LOL, она имхо просто запускает поток ...
← →
Piter © (2005-02-02 15:32) [134]Kerk © (02.02.05 4:21) [131]
CreateRemoteProcess НЕ ИСПОЛЬЗУЕТСЯ для внедрения кода
:))
Ну ладно. Разжевываем еще проще, а то опять неясности.
Итак, CreateRemoteThread используется для внедрения в удаленный процесс. Порядок внедрения такой:
1) Создаем поток в удаленном процессе
2) Этот поток загружает нашу библиотеку
3) сам поток завершается
4) имеем загруженную DLL в "чужом" ВАП
То есть, фактически произошло внедрение, аналогичное хукам (почти), но мы не использовали хуки. Причем таким способом можно внедриться в процессы, в которые хуками не внедришься (например, консольное приложение, если там не делается выборка сообщений)
А внедрились мы для того, чтобы перехватывать WinApi функции.
ну теперь то наконец понятно зачем нужна CreateRemoteThread в перехвате WinApi функций, какую роль она играет?
← →
Игорь Шевченко © (2005-02-02 16:18) [135]Господа хорошие, для того, чтобы запустить хоть что-то, даже CreateRemoteThread, надо создать процесс. Вот он-то аудитом и будет пойман, или тем оповещателем, о котором на этом форуме неоднократно упоминал Digitman. И все ваши тайные замыслы станут явными. Лучше займитесь чем-нибудь более полезным, самодвижущееся пресс-папье изобретите или архитектурный институт закончите.
← →
Kerk © (2005-02-02 16:45) [136]Piter © (02.02.05 15:32) [134]
ну теперь то наконец понятно зачем нужна CreateRemoteThread в перехвате WinApi функций, какую роль она играет?
не понятно.
> 1) Создаем поток в удаленном процессе
раз создали поток, то код уже внедрен. нафига еще какие-то ДЛЛки подгружать?
← →
Piter © (2005-02-02 17:04) [137]А кто говорит про тайные замыслы?
← →
Piter © (2005-02-02 18:36) [138]Kerk © (02.02.05 16:45) [136]
раз создали поток, то код уже внедрен. нафига еще какие-то ДЛЛки подгружать?
у DLL"ки будут автоматически верно настроены все реллоки, а также импорт любых функций. Можно, конечно, и в удаленном потоке все организовать, но так геморройно.
Теперь понятно, каким образом CreateRemoteThread участвует в перехвате функций? :)
← →
Kerk © (2005-02-02 18:49) [139]Piter © (02.02.05 18:36) [138]
Ну хорошо. признаю, что этот метод имеет право на существование. :) Извратом, учитывая релоки, не назовешь... но я, все же, предпочел бы без ДЛЛ перехват делать.
← →
Piter © (2005-02-02 19:53) [140]Kerk © (02.02.05 18:49) [139]
но я, все же, предпочел бы без ДЛЛ перехват делать.
Перехват без DLL? Каким образом?
← →
Kerk © (2005-02-02 20:36) [141]Piter © (02.02.05 19:53) [140]
а в чем принципиальная разница? пишем свой код в процесс, тем же способом с помощью WriteProcessMemory меняем адрес в IAT. см, например, мой пример, выше ссылка была.
← →
Piter © (2005-02-02 23:26) [142]Kerk © (02.02.05 20:36) [141]
пишем свой код в процесс, тем же способом с помощью WriteProcessMemory меняем адрес в IAT
а как ты будешь импортировать функции в удаленном потоке? Как хотя бы ты узнаешь адрес WriteProcessMemory? Можно примерчик?
← →
Kerk © (2005-02-03 06:24) [143]Piter © (02.02.05 23:26) [142]
Как хотя бы ты узнаешь адрес WriteProcessMemory?
а зачем она мне когда я уже внедрился? :)
> Можно примерчик?
Ну посмотри ты мой пример по ссылке выше. :) Адреса функций определяются заранее и записываются в АП чужого процесса вместе с кодом. ImageBase кернела32 совпадает для всех процессов.
← →
Digitman © (2005-02-03 09:44) [144]
> Piter © (02.02.05 23:26) [142]
достаточно параметром в стартуемый удаленный трэд передать адрес т.входа в ф-цию kernel32.GetProcAddress (этот адрес неизменен и актуален для всех прикл.процессов в системе).. можно, конечно, передать еще и kernel32 Imagebase (он же будет являться хэндлом модуля kernel32 в целевом процессе), но это уже - на вкус и цвет, ибо удаленный трэд сразу после старта в состоянии сам найти kernel32 Imagebase
← →
Piter © (2005-02-03 15:34) [145]Kerk © (03.02.05 6:24) [143]
а зачем она мне когда я уже внедрился? :)
а как ты собираешься править таблицы импорта?
Digitman © (03.02.05 9:44) [144]
этот адрес неизменен и актуален для всех прикл.процессов в системе
а это 100% для всех версий windows при любых настройках?
← →
Kerk © (2005-02-03 15:35) [146]Piter © (03.02.05 15:34) [145]
а как ты собираешься править таблицы импорта?
буду править "снаружи", т.е. не внедренным кодом, а из своего процесса.
> а это 100% для всех версий windows при любых
> настройках?
абсолютный факт.
← →
Piter © (2005-02-03 15:46) [147]Kerk © (03.02.05 15:35) [146]
буду править "снаружи", т.е. не внедренным кодом, а из своего процесса
а как ты узнаешь нужные адреса для правки извне?
← →
Digitman © (2005-02-03 15:50) [148]
> Piter © (03.02.05 15:46) [147]
> как ты узнаешь нужные адреса для правки извне?
да точно так же как и при правке "изнутри".
← →
Piter © (2005-02-03 16:40) [149]Digitman © (03.02.05 15:50) [148]
да точно так же как и при правке "изнутри".
хм... вероятно, это расчитано на то, что ImageDirectoryEntryToData будет выполняться одинаково, что в нашем процессе, что в удаленном?
Но тогда такой метод перехвата подходит только для библиотек, которые обязательно грузятся по своему предпочтительному базовому адресу?
А если я хочу перехватить функцию из, например, USER32? Или он тоже грузится всегда по своему предпочтительному адресу?
В любом случае, метод не такой универсальный - так не перехватишь функции из любых библиотек...
← →
Kerk © (2005-02-03 16:44) [150]Piter © (03.02.05 16:40) [149]
если я хочу перехватить функцию из, например, USER32? Или он тоже грузится всегда по своему предпочтительному адресу?
А какая разница? Мы же IAT правим.
← →
Eraser © (2005-02-03 17:27) [151]Piter ©
При этом кстати в разных версиях видов адрес отличается...
← →
Digitman © (2005-02-03 17:43) [152]
> Eraser © (03.02.05 17:27) [151]
ты же оба процесса имеешь не в разных версиях, а в одной и той же)
Страницы: 1 2 3 4 вся ветка
Форум: "WinAPI";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];
Память: 0.8 MB
Время: 0.045 c