|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Июл 21, 2004 17:46:33 Такой вопрос: как закрыть хендл в чужом процессе? Версия 1: только внедрясь в этот процес, повесить ddl-ку например. Версия 2: через DuplicateHandle а затем CloseHandle. А еще, как это делает Руссинович в ProcessExplorer? Я покопаю, подскажите куда лучше копать? |
|
|
Дата: Июл 21, 2004 18:39:06 через DuplicateHandle а затем CloseHandle нифига невыйдет (насколько я знаю) поскольку это будет что то вроде копии и ты закроеш только копию.Можно попробовать перехватить хэндл хуком при работе процеса и закрыть его.Если глубже копануть то у каждого процеса есть своя база данных handle_database.ищи там |
|
|
Дата: Июл 21, 2004 20:50:37 Если речь идет о Windows NT / 2k / XP / Server 2003 (т.е. о тех ОС, где реализован CreateRemoteThread), внедрение DLL необязательно. Достаточно передать адрес API CloseHandle (в процессе-"жертве") как стартовый адрес потока и хэндл как параметр. |
|
|
Дата: Июл 21, 2004 22:03:24 ч/з DuplicateHandle не выдеть. При этой ф-ии в таблице объектов для target-процесса создается новый объект с почти такими же св-ми, измененными отчасти (например access) и дл янего увеличивается ReferenceCount. При закрытии этого хэндла кол-во ссылок==0 и этот эбъект удалаяется, но никак не исходный, а именно дубликат. |
|
|
Дата: Июл 22, 2004 00:04:25 VOOrDOOluck и PavPS, вы заблуждаетесь. Anatoliy, ProcessExplorer закрывает чужие хендлы именно через DuplicateHandle. На сайте лежит WinObjEx. Если запустить его с ключом -s (запуск с правами Local System), то он закроет хендл в любом процессе. Делает он это примерно так: hProcess = OpenProcess( PROCESS_DUP_HANDLE, FALSE, uProcessId );
if ( hProcess != NULL ) {
if ( FALSE != DuplicateHandle(hProcess, (HANDLE) h, NtCurrentProcess(),
&hObject, 0, FALSE, DUPLICATE_CLOSE_SOURCE) ) {
// Close duplicated handle
CloseHandle(hObject);
}
CloseHandle(hProcess);
}
PavPS, дубликат хендла создается именно в процессе, вызвавшем DuplicateHandle. В процессе-жертве никаких новых хендлов не появляется, а тот, на который натравлена DuplicateHandle закрывается. |
|
|
Дата: Июл 22, 2004 00:09:57 · Поправил: PavPS Очччень извиняюсь... лоханулся... :( Перепутал малость :) |
|
|
Дата: Июл 22, 2004 10:24:34 Спасибо всем за советы. Уже начинаю пробовать. :) |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.088 |