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

Вниз

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

 
Игорь Шевченко ©   (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.58 MB
Время: 0.04 c
1-1102691955
Аня
2004-12-10 18:19
2004.12.26
конвертирование отчетов Rave


10-1074095414
Kavi
2004-01-14 18:50
2004.12.26
COM технология


1-1103098241
vik_b
2004-12-15 11:10
2004.12.26
BringToFront или SetActiveWindow


1-1102544760
Regards
2004-12-09 01:26
2004.12.26
Я могу получить в Imagelist виндосовские иконки, как теперь


6-1097731224
Дмитрий Ботвин
2004-10-14 09:20
2004.12.26
FTP-клиент





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский