![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
ldr12 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 9.2.2007 Репутация: 1 Всего: 1 |
Доброго времени суток.
Проблема такова: получаю список хендлов процесса с помощью NtQuerySystemInformation. Выбираю из них файловые, а из них - сокеты. Делаю это, проверяя имя, ассоциированное с хендлом на соответствие строке \Device\Afd. Но! Когда я хочу скопировать каждый из этих сокетов в свой процесс, то какой бы я хендл не выбрал - DuplicateHandle() возвращает всегда дескриптор на последнее открытое процессом подключение (тестировал на mirc.exe). Как решить эту проблему? Или, быть может, есть более красивый способ получения сокетов процесса?
|
|||
|
||||
bartram |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1606 Регистрация: 22.2.2004 Где: Russia, Samara Репутация: 3 Всего: 29 |
А хендл у тебя вообще правильно копируется? Попробуй для примера сравнить исходный хендл с тем хендлом который ты уже скопировал
Добавлено @ 10:01 приведи более полный код, попробую у себя проверить |
|||
|
||||
ldr12 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 9.2.2007 Репутация: 1 Всего: 1 |
В том-то и дело, что неправильно
![]() А код вот он: Обнаружил удивительное свойство - если убрать CloseHandle(), то выводиться будет все правильно. Интересно, отчего? Memo1, Button1, Edit1
Это сообщение отредактировал(а) ldr12 - 16.2.2007, 22:49 |
|||
|
||||
bartram |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1606 Регистрация: 22.2.2004 Где: Russia, Samara Репутация: 3 Всего: 29 |
ldr12, странно....
Первый раз запускаю - показывает Второй раз запускаю без CloseHandle - показывает (тоже самое что и в первый раз) И показывает все время локальный ip 127.0.0.1, хотя я в этот момент был подключен к инету.... Странно....посмотрю в чем проблема ![]() Добавлено @ 13:13 если без CloseHandle(DstHandle); то все показывает, только убивает подключение с инетом у приложения на котором проверку проходит, но ip по прежнему локальный.... |
|||
|
||||
ldr12 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 9.2.2007 Репутация: 1 Всего: 1 |
Ага, убивает, все верно
![]() Насчет локального ипа - еще интересней даже ![]() У меня просто показывало последнее подключение вместо всех (т.е. 6 раз 65.54.11.234, допустим) Windows 2000 SP4 |
|||
|
||||
bartram |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1606 Регистрация: 22.2.2004 Где: Russia, Samara Репутация: 3 Всего: 29 |
У меня показывает локальный ip хотя я в инете сижу и у меня есть два разных ip один внешний, другой внутренний. Странно. Посмотрю ещё твой код более детально Тестил на WinXp Sp2. Это сообщение отредактировал(а) bartram - 18.2.2007, 19:53 |
|||
|
||||
ldr12 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 9.2.2007 Репутация: 1 Всего: 1 |
Чтобы убедить себя в том, что исходные хендлы для копирования правильны (а я бы на твоем месте уже засомневался), попробуй заменить DUPLICATE_SAME_ACCESS на DUPLICATE_CLOSE_SOURCE и позапускать
![]() |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |