Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[Win32 hack] Ну, да конечно!!! 19.08.02 03:18 Число просмотров: 3777
Автор: Biasha <Бяша> Статус: Member
|
Сразу: у меня ХР про ру.
> Долго я голову ломал над этом багом, и вот что надумал. Не > надо никаких интерактивных сервисов, наша цель - > winlogon'овое окно "NetDDE Agent" (по крайней мере, в w2k), > находящееся в десктопе default.
Хе. Действительно :)
Это гораздо веселее. Хотя и интерактивных сервисов хватает с головой.
У меня сейчас (не просто интерактивных, а с окнами, запущены - всё как надо): PGP, NU2002, AtGuard. Наверняка и антивирусы грешат, у меня онлайнового не стоит, так что не знаю. Могу прогу дать свою, которая выдаёт грешников, если кому интересно.
> 1. WM_COPYDATA копирует туда что хочешь.
Да, я никак не мог вспомнить название сообщения. Мне казалось WM_DATA..., я даже решил, что глючу.
Сообщение замечательное, но, к сожалению, память после его обработки очищается... :(
If the receiving application must access the data after SendMessage returns, it must copy the data into a local buffer.
> Эмпирически (айсом > ;) узнавал, куда, и
У меня:
Если данных не много (1Кб ещё немного) - в стеке. Если много (16Кб - уже много) - специально отдельно выделяется регион, освобождается после обработки :(.
> бомбил winlogon коллами на ту страницу > с интервалами в 10б.
10б?!!! Не Кб? Чё так мелко то?
> Однако вылетает.
Как натыкается на валидный код, который в конце приводит к ExitProcess - так и вылетает. Правда не ясно, где ты его в стеке нашёл... Наверное натыкался на jmp в код.
> 2. WM_GETTEXT на caption почему-то не пашет, хотя в > качестве адреса я что только не ставил...
И не будет. У меня выдаёт "сообщение должно использоваться с функциями синхронизации". А ты ведь его PostMessage'ом туда ставишь, передавая адрес не в своём адресном пространстве. Это и правильно, иначе это был бы способ писать в чужой процесс :)
> 3. Я заметил, что по адресу, равному хэндлу окна (у моего > winlogon'а - 1001c, у csrss или какого-то его друга - 20040 > или что-то в этом роде) страница всегда > проинициализирована.
У них может и всегда, а вообще не всегда. Причём не ясно когда, иногда на ней R стоит только - ничего не попишешь, иногда вообще не выделена, как мне показалось.
Кстати, а кто-то знает, что по адресу хэндела окна?
> Это есть гут, так как куча функций
Да, хоть что-то приятное :)
> первым параметром получает адрес, в который что-то пишет.
Только вот редкая функция посчитает нормальным 113h вторым :(
Ох, как оно мешает. Ну нафига оно им было нужно - в TimerProc передавать WM_TIMER?.. :)
> 4. Есть кульная функция GetCursorPos, с одним параметром, в > который она пишет 2 небольших числа
Я вот сейчас думаю, а реально ли увеличить допустимые положения мыши? Сейчас кажется, за экран нельзя вылазить :(
Или может кто знает ещё одну такую кульную функцию?
> (и трет, тем самым, 8 > байт). Если я поставлю курсор у себя, скажем, так: > call SetCursorPos,'\',0 > то GetCursorPos, будучи исполненным таким макаром: > call PostMessage,winlogon_wnd,WM_TIMER,0,getcurpos_addr > напишет по адресу winlogon_wnd '\',0,0,0,0,0,0,0
Учти, что этим ты оставил в стеке 3 DWORD'а. И одной винде известно, что она там с ними сделает... Хорошо, если SEH нас спасёт всегда, но может же и не повезти, мало ли что там у них.
> 5. Есть кульная функция SetCurrentDirectoryA/W, коия, > будучи исполненная точно таким же способом (в winlogon'е) > после GetCursorPos, установит его куррент директори на > корневуху %systemroot% диска. Это тоже есть гут. > > Теперь кульминация: при релогоне winlogon любит грузить > либыбез_указания_пути_к_ним!! > В частности, этим балуется msgina.dll. > То есть мы делаем так: пишем в корневуху нашу либу, > обзываем ее так, как больше нравится msgina, переставляем > текущий какталог у winlogon'а и делаем релогон. Телемаркет > ;))) наша либа в винлогоне.
Славно.
> Все это конечно, хорошо, но пока я дизазмил\трейсил > winlogon (w2k), я обнаружил преинтереснейшую вещь: msgina >самапри логоне ставит curdir winlogon'а на '\', и после
> делает LoadLibraryW на es.dll без указания пути. То есть > просто пишем es.dll в корень системного диска и > релогинимся...
Ещё лучше :) Не ошибка привела к обнаружению ошибки :)
> Ух, как по ламерски, но ведь работает... Или это только у > меня? В любом случае, с переброской каталога - это эксплоит > еще тот. Но защититься просто - залочить писанину в корень > системы и все ;)
А так ведь обычно и есть :( Редко кто даст гостю писать в C:\
> wbr, 90210//HI-TECH
Что-то столько новых идей ты написал, а я ни одну применить не смог :( Всегда чуть-чуть не хватает.
Но уже лучше - есть куда писать (будем считать hWnd нормальным указателем:). Осталось найти способ писать.
Пойду искать кульную функцию...
|
|
|