Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2004.12.26;
Скачать: [xml.tar.bz2];

Вниз

А каким хуком можно внедриться в консольное приложение?   Найти похожие ветки 

 
Piter ©   (2004-11-22 00:46) [0]

Ну собственно, сабж. Интересует тип хука...


 
Palladin ©   (2004-11-22 00:53) [1]

Хуки вообще в приложения не внедряются.


 
Юрий Зотов ©   (2004-11-22 01:25) [2]

> Piter ©   (22.11.04 00:46)

Вообще говоря, любым. Ведь консольное приложение может и с сообщениями работать.


 
Игорь Шевченко ©   (2004-11-22 01:26) [3]

Я сильно сомневаюсь, что csrss позволит внедряться в его вотчину. Впрочем, я могу ошибаться. Даже через AppInit_DLLs нельзя внедриться в WinLogon и в CSRSS.


 
Piter ©   (2004-11-22 01:59) [4]

Юрий Зотов ©   (22.11.04 1:25) [2]
Ведь консольное приложение может и с сообщениями работать.


а если не работает? Если там нет цикла выборки сообщений?

Никак что ли?


 
Digitman ©   (2004-11-22 08:45) [5]


> Piter ©   (22.11.04 01:59) [4]
> а если не работает? Если там нет цикла выборки сообщений?
> Никак что ли?


а на кой шут тогда хук ? если процесс не использует механизм оконных сообщений ?

если тебе хук нужен лишь для внедрения своего кода в целевое АП, то хук - не единственный и не универсальный способ сделать это.


 
Xaker ©   (2004-11-22 11:09) [6]

Игорь Шевченко ©   (22.11.04 1:26) [3]

> Я сильно сомневаюсь, что csrss позволит внедряться в
> его вотчину. Впрочем, я могу ошибаться. Даже через
> AppInit_DLLs нельзя внедриться в WinLogon и в CSRSS.

кому как, а я легко внедрялся и в WinLogon и в CSRSS (WriteProcessMemory) - не забыв про SeDebugPrivilege :)))


 
Xaker ©   (2004-11-22 11:09) [7]

Digitman ©   (22.11.04 8:45) [5]
я за CreateRemoteThread


 
Игорь Шевченко ©   (2004-11-22 11:10) [8]

Xaker ©   (22.11.04 11:09) [6]

Именно внедрялся ?


 
Xaker ©   (2004-11-22 11:13) [9]

Игорь Шевченко ©   (22.11.04 11:10) [8]
ага, длл подгружал туда и делал что хотел


 
Piter ©   (2004-11-22 15:42) [10]

Digitman ©   (22.11.04 8:45) [5]
если тебе хук нужен лишь для внедрения своего кода в целевое АП


да

хук - не единственный и не универсальный способ сделать это

тогда подскажи другие, плиз. Нужна универсальность, чтобы пахало на линейке win9x и NT


 
Игорь Шевченко ©   (2004-11-22 15:47) [11]

Piter ©   (22.11.04 15:42) [10]

А смысл ?


 
Digitman ©   (2004-11-22 15:50) [12]


> Piter ©   (22.11.04 15:42) [10]


вот именно... смысл ? он всегда должен иметь место быть ...


 
Piter ©   (2004-11-22 17:25) [13]

Игорь Шевченко ©   (22.11.04 15:47) [11]
А смысл ?


чтобы внедрить свою DLL.

вот именно... смысл ?

см. выше. Ты говорил:


> - не единственный и не универсальный способ сделать это


из данной фразы я понимаю, что есть другой способ, универсальный. Подскажи какой?


 
Xaker ©   (2004-11-22 17:26) [14]

Piter ©   (22.11.04 17:25) [13]
CreateRemoteThread
на NT на 9х забей


 
Игорь Шевченко ©   (2004-11-22 17:40) [15]

Piter ©   (22.11.04 17:25) [13]


> чтобы внедрить свою DLL.


А смысл ?


 
Piter ©   (2004-11-22 23:35) [16]

Побочный вопрос - DLL, которая установила хук, грузится в ВАП процесса только на время срабатывания ловушки, а потом выгружается что ли?


 
Piter ©   (2004-11-22 23:36) [17]

Игорь Шевченко ©   (22.11.04 17:40) [15]
А смысл ?


Блин, ну хочется. Любопытно ведь! Пошушукать там в чужом ВАП...


 
Piter ©   (2004-11-22 23:36) [18]

Вы или скажите способы универсальные, если знаете. Или уж не говорите :)


 
OneFragLeft   (2004-11-22 23:48) [19]

>Piter ©  
Magic Forum - рулит!!!


 
Piter ©   (2004-11-23 00:17) [20]

OneFragLeft   (22.11.04 23:48) [19]

я знаю... но при чем здесь это?


 
Xaker ©   (2004-11-23 08:46) [21]

Piter ©   (22.11.04 23:36) [18]
хук, потом CreateThread - и всё, тебя никто не выгрузит


 
Игорь Шевченко ©   (2004-11-23 10:42) [22]


> Блин, ну хочется. Любопытно ведь! Пошушукать там в чужом
> ВАП...


ццц.хакер.ру ?


 
Piter ne doma   (2004-11-23 13:24) [23]

>ццц.хакер.ру ?

нет.

Вы знаете как это сделать? Digitman знает? Наверное, вы на ццц.хакер.ру были?

Игонь, мне просто интересно стало изучение внутреннего пространства процессов, вот я и разбираюсь.

А трояна я и при текущих знаниях написать могу. В общем, неплохого трояна. И давно бы написал, если хотел


 
Piter ne doma   (2004-11-23 13:25) [24]

Удалено модератором
Примечание: Дубль


 
Piter ©   (2004-11-23 23:26) [25]

Блин, не через клиента одни дубли...


 
Piter ©   (2004-11-24 17:59) [26]

Никто не хочет помочь, поделиться информацией?


 
Игорь Шевченко ©   (2004-11-24 18:10) [27]

Piter ©   (24.11.04 17:59) [26]

Гугль хочет помочь, обычно.


 
Kerk ©   (2004-11-24 18:30) [28]


> Xaker ©   (22.11.04 17:26) [14]
> Piter ©   (22.11.04 17:25) [13]
> CreateRemoteThread
> на NT на 9х забей

В 9x можно добавить поток через WriteProcessMemory


 
Xaker ©   (2004-11-24 18:58) [29]

Piter ne doma   (23.11.04 13:25) [24]

> А трояна я и при текущих знаниях написать могу. В
> общем, неплохого трояна. И давно бы написал, если хотел

-только не намекай, что в будующей версии MF он будет ;) (шутка)

один мой знакомый писал троя, даже не зная не одной апи, только умея Beep()и Halt ;)

-смотря какого уровня троян ;)))


 
Piter ©   (2004-11-24 19:49) [30]

Игорь Шевченко ©   (24.11.04 18:10) [27]
Гугль хочет помочь, обычно


спасибо.

Я вот какую фразу вижу:

Digitman ©   (22.11.04 8:45) [5]
хук - не единственный и не универсальный способ сделать это.


А какие универсальные способы есть?!
И НЕ НАДО меня отсылать к поисковым машинам? Что искать? Внедрение в процессы? В 99% случаев будут попадаться примеры, передерганные из Рихтера. А Рихтер у меня и так есть.
Как будто блин сами не знаете.

Сначала говорят, что способы есть (и судя по всему знают какие). А потом отсылают в гугль. Очень интересно, знания такие секретные, что аж прям поделиться нельзя?


 
vertal ©   (2004-11-24 20:45) [31]

Если важен результат, но не принципиально наличие исходников, то на http://www.madshi.net есть библиотека в виде набора dcu, где в числе прочих есть функции InjectLibrary и UnInjectLibrary. Я проверял, библиотека действительно грузится в АП консольных приложений - причем и в Win98, и в Win2000. Внутренне это реализовано вроде бы через функцию CreateRemoteThread, которая в Win9x хоть и не экспортируется, но все-таки где-то определена.


 
Xaker ©   (2004-11-24 21:03) [32]

vertal ©   (24.11.04 20:45) [31]

> Внутренне это реализовано вроде бы через функцию
> CreateRemoteThread, которая в Win9x хоть и не
> экспортируется, но все-таки где-то определена.

да, странно, что в 9х CreateRemoteThread вроде есть, но не работает ..


 
Piter ©   (2004-11-24 21:05) [33]

vertal ©   (24.11.04 20:45) [31]
которая в Win9x хоть и не экспортируется, но все-таки где-то определена


ничего не понял. Насколько я знаю, в win9x этой функции просто нету. Или она не реализована...


 
Xaker ©   (2004-11-24 21:06) [34]

Piter ©   (24.11.04 21:05) [33]
вроде есть, но нереализована ..
("неимплементирована") - имхо ...


 
Piter ©   (2004-11-24 21:09) [35]

Xaker ©   (24.11.04 21:03) [32]
да, странно, что в 9х CreateRemoteThread вроде есть, но не работает ..


а-а-а. Ну значит она объявлена, но не реализована. В win9x таких функций полно...


 
Игорь Шевченко ©   (2004-11-24 22:48) [36]


> А какие универсальные способы есть?!


А универсальные способы описаны у Рихтера, как ни странно. Целая глава, если не ошибаюсь.


 
Piter ©   (2004-11-24 23:58) [37]

Игорь Шевченко ©   (24.11.04 22:48) [36]
А универсальные способы описаны у Рихтера,


универсальнее хука там ничего нету. Остальные применимы только в определенной версии Windows.

Есть еще CreateProcess - но тогда процесс должен быть порожден моим процессом, а это не универсальность.

Если бы я нашел универсальные способы у Рихтера - не спрашивал бы.


 
Игорь Шевченко ©   (2004-11-25 00:00) [38]

Piter ©   (24.11.04 23:58) [37]

Серебряной пули нет.


 
Piter ©   (2004-11-25 22:06) [39]

Игорь Шевченко ©   (25.11.04 0:00) [38]
Серебряной пули нет.


честно говоря не знаю такого выражения. Понимаю это так, что универсального способа нету.

Просто вроде Digitman намекнул, что такой способ есть.

Так все таки - как можно внедриться в консольное приложение? Кроме CreateRemoteThread?


 
Игорь Шевченко ©   (2004-11-25 22:50) [40]

Piter ©   (25.11.04 22:06) [39]

1) Что ты подразумеваешь под словом внедриться ?
2) Перечисли способы внедрения, которые ты прочитал у Рихтера и объясни, чем каждый из них тебе не подходит.


 
Style ©   (2004-11-25 22:56) [41]

Да, просто не понятна цель этого внедрения. Ты вообще чего хочешь добиться? Перехватить входы, выходы консоли? Или еще чего??


 
GrayFace ©   (2004-11-26 12:43) [42]

Piter ©   (23.11.04 0:17) [20]
я знаю... но при чем здесь это?

А куда делось обсуждение MF? Новая версия появилась?

А если использовать два способа - один для 9x, другой - NT?
Xaker ©   (22.11.04 17:26) [14]
CreateRemoteThread
на NT на 9х забей

Kerk ©   (24.11.04 18:30) [28]
В 9x можно добавить поток через WriteProcessMemory


 
GrayFace ©   (2004-11-26 12:45) [43]

О! Нашел обсуждение. И версия есть.


 
Piter ©   (2004-11-26 19:30) [44]

Игорь Шевченко ©   (25.11.04 22:50) [40]
Что ты подразумеваешь под словом внедриться ?


иметь возможность выполнять свой код в контексте потока удаленного процесса

2) Перечисли способы внедрения, которые ты прочитал у Рихтера и объясни, чем каждый из них тебе не подходит.

хорошо

1) AppInit_DLLs - не работает в win9x. К тому же - в консольнои приложении происходит обязательная загрузка User32.dll? Если нет - то таким способом не внедришься в консольное приложение (именно это тема топика)

2) ловушка - нельзя внедриться в чисто консольное приложение

3) CreateRemoteThread - не реализована в win9x

4) подмена DLL и переадресация к реальной DLL - как-то по троянски. К тому же, мне кажется так не получится перехватить системные библиотеки, который грузятся в каждый процесс по умолчанию

5) внедрение DLL как отладчика - вероятно, это достаточно нетривиально. Ну и главный недостаток исходит из названия - отладка. Например, процесс завершится как только снять его с отладки

6) внедрение через проецируемый файл - работает только для win9x. К тому же встает проблема, решение которой Рихтен не знает. Я тоже.

7) через CreateProcess - приложение должно быть запущено мной, а это далеко не всегда выполнимо

не понимаю только - зачем я это писал? Время потратил на комментарии, а толку? Игорь, неужели вы не поверили, что я действительно просмотрел способы внедрения в Рихтере?


 
Игорь Шевченко ©   (2004-11-26 22:36) [45]


> К тому же - в консольнои приложении происходит обязательная
> загрузка User32.dll? Если нет - то таким способом не внедришься
> в консольное приложение (именно это тема топика)


Process Explorer - рулез фарева.

По Win9x я тебе ничего не скажу. Про NT - существуют способы, упомянутые тобой. Серебряной пули все равно нет. И какого-то таинственного способа, известного только мне и Digitman"у тоже нету. Либо описанные тобой, либо их комбинация.


 
Piter ©   (2004-11-27 00:22) [46]

Игорь Шевченко ©   (26.11.04 22:36) [45]
Про NT - существуют способы, упомянутые тобой


вы наверное хотели сказать НЕ упомянутые мной?
А какие - можно поподробнее?

Серебряной пули все равно нет

ясно. Я ведь и не утверждал, что есть. На то, что есть универсальный способ, меня натолкнули слова Digitman"а, но он к сожалению в этой ветке уже не участвует и не пояснил, что имел в виду


 
Игорь Шевченко ©   (2004-11-27 01:19) [47]

Piter ©   (27.11.04 00:22) [46]


> вы наверное хотели сказать НЕ упомянутые мной?
> А какие - можно поподробнее?


Да нет, я все верно сказал. Именно перечисленные тобой способы гарантировано работают в Windows NT.

Впрочем, если хочется странного, найди на SourceForge исходники Back Orifice, люди умные писали, много интересного.


 
Piter ©   (2004-11-29 23:44) [48]

Piter ©   (27.11.04 0:22) [46]
А какие - можно поподробнее?


 
Piter ©   (2004-12-02 23:13) [49]

Ну вот, нашел способ внедрения в консольное приложение. Неужели вы не знали? А если знали - сложно было что ли подсказать?

В общем, ставим обычный хук на на WH_GETMESSAGE, а потом с помощью PostThreadMessage посылаем какое-нибудь сообщение главному потоку приложения! И все...


 
jack128 ©   (2004-12-02 23:24) [50]

Так ведь для этого хука нужна очередь обработки сообщений. Так что он не универсальный ;-)


 
Piter ©   (2004-12-02 23:36) [51]

jack128 ©   (02.12.04 23:24) [50]
Так ведь для этого хука нужна очередь обработки сообщений


в смысле? А разве по умолчанию не у каждого потока есть очередь сообщений?


 
jack128 ©   (2004-12-02 23:41) [52]

нет, не у каждого.

У того Рихтера, если не ошибаюсь описаны случаи когда создаётся очередь.


 
Piter ©   (2004-12-02 23:45) [53]

jack128 ©   (02.12.04 23:41) [52]
У того Рихтера, если не ошибаюсь описаны случаи когда создаётся очередь


что значит создается? То есть, если я создам поток при помощи CreateThread - у него не будет очереди сообщений?!

P.S. Первый раз о таком слышу...


 
jack128 ©   (2004-12-02 23:52) [54]

Piter ©   (02.12.04 23:45) [53]
То есть, если я создам поток при помощи CreateThread - у него не будет очереди сообщений?!

нет, не будет.
Если сомневаешься, то вот те цитата из PostThreadMessage

If the function fails, the return value is zero. To get extended error information, call GetLastError. GetLastError returns ERROR_INVALID_THREAD_ID if idThread is not a valid thread identifier, or if the thread specified by idThread does not have a message queue.


 
Игорь Шевченко ©   (2004-12-02 23:58) [55]


> То есть, если я создам поток при помощи CreateThread - у
> него не будет очереди сообщений?!


Не будет. Более того, для того, чтобы сработал хук WH_GETMESSAGE, необходимо, чтобы консольное приложение занималось выборкой этих сообщений. Для примера попробуй внедриться в консольный архиватор.


 
Piter ©   (2004-12-03 20:27) [56]

jack128 ©   (02.12.04 23:52) [54]
нет, не будет


а как тогда прикрутить потоку эту очередь?

Игорь Шевченко ©   (02.12.04 23:58) [55]
того, чтобы сработал хук WH_GETMESSAGE, необходимо, чтобы консольное приложение занималось выборкой этих сообщений


точно? В хелпе вот что написано:

"Installs a hook procedure that monitors messages posted to a message queue"

Я это понимаю как при постинге сообщения, а не при его выборке


 
Игорь Шевченко ©   (2004-12-03 20:51) [57]

Piter ©   (03.12.04 20:27) [56]


> точно?


Точно.


> Я это понимаю как при постинге сообщения, а не при его выборке


В таком случае хук бы действовал в контексте отправителя сообщения, не так ли ?

Тебе слово "GetMessage" в типе хука совсем-совсем ничего не говорит ?


 
Игорь Шевченко ©   (2004-12-03 20:53) [58]

"The system calls this function whenever the GetMessage or PeekMessage function has retrieved a message from an application message queue. Before returning the retrieved message to the caller, the system passes the message to the hook procedure"

Отвечал: http://msdn.microsoft.com


 
Piter ©   (2004-12-04 20:53) [59]

Игорь Шевченко ©   (03.12.04 20:51) [57]
В таком случае хук бы действовал в контексте отправителя сообщения, не так ли ?


ну почему же. Можно же там придумать как-нибудь... при вызове какой-нибудь API функции. Или еще что-нибудь, откуда мне знать...

Тебе слово "GetMessage" в типе хука совсем-совсем ничего не говорит ?

Игорь, не надо, пожалуйста. Если ориентироваться на название - то получится, что типа при PeekMessageхук не внедрится, а будет внедряться только при GetMessage.

"The system calls this function whenever the GetMessage or PeekMessage function has retrieved a message from an application message queue. Before returning the retrieved message to the caller, the system passes the message to the hook procedure"

спасибо. Но ведь я тоже не просто так придумал, я уже цитировал:


> "Installs a hook procedure that monitors messages
> posted to a message queue"


Игорь Шевченко ©   (03.12.04 20:53) [58]
Отвечал: http://msdn.microsoft.com


что, так задело?

Игорь, и можно еще маленькую просьбу? Я знаю, что я хреновый программист. И я знаю, что у меня очень мало опыта и что я постоянно ошибаюсь. Но, пожалуйста, не надо при исправлении моих ощибок это делать таким тоном, как будто я дурак. Заранее спасибо.


 
jack128 ©   (2004-12-04 21:02) [60]

Piter ©   (03.12.04 20:27) [56]

> а как тогда прикрутить потоку эту очередь?

она создается автоматически при вызове определённых функций. По моему все функции  из User32.dll приводят к  созданию очереди. Но это подсказывает моя память, а она - ненадежный источник информации ;-) Повторюсь, Рихтер затрагивал этот вопрос, поищи у него..


 
Игорь Шевченко ©   (2004-12-04 21:27) [61]

Piter ©   (04.12.04 20:53) [59]

У меня тоже совет будет, если не трудно, читай пожалуйста справку внимательнее.


> что, так задело?


Нет, это напоминание о том, куда надо смотреть, прежде чем задавать вопросы.


> Игорь, не надо, пожалуйста. Если ориентироваться на название
> - то получится, что типа при PeekMessageхук не внедрится,
> а будет внедряться только при GetMessage.


Надо. GetMessage и PeekMessage с точки зрения выборки сообщений из очереди ничем не отличаются.


> Игорь, и можно еще маленькую просьбу?


Можно.


 
Piter ©   (2004-12-04 23:54) [62]

спасибо



Страницы: 1 2 вся ветка

Форум: "Потрепаться";
Текущий архив: 2004.12.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.62 MB
Время: 0.036 c
3-1101486505
Chery
2004-11-26 19:28
2004.12.26
формат DateTime в MySQL5 и в Delphi5.5.


14-1102233425
Gero
2004-12-05 10:57
2004.12.26
Доступ к HKEY_CURRENT_USER другого пользователя


1-1101809255
JohnS
2004-11-30 13:07
2004.12.26
Cron формат


3-1101736060
Fedor
2004-11-29 16:47
2004.12.26
MasterSourse в IBDATASET


6-1097349683
Ralf
2004-10-09 23:21
2004.12.26
Поиск компьютеров





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский