Форум: "Прочее";
Текущий архив: 2006.10.22;
Скачать: [xml.tar.bz2];
Вниз
ничего не понимаю... %-( Найти похожие ветки
← →
Ketmar © (2006-09-28 04:35) [0]перехватываю CreateProcessW() (путём внедрения DLL и подмены первых байтиков на переход). запускаю таким макаром taskmgr.exe. подлый таск менеджер падает с обращением к адресу 0x1 (угу %-). причём падает где-то у себя в ливере. к перехваченым мной функциям за это вермя он ни разу не обращался.
не перехватываю эту функцию -- всё равботает.
помимо этой перехватчик хватает ещё и кучу других функций, конечно. с ними никаких проблем нет. с перехватом CreateProcessW() в других процессах проблем тоже нет. мистика.
может, кто-то хоть краем уха слышал о подобной фигне или натыкался сам? система Win2K Server, SP4. код, к сожалению, показать не могу, но на наводящие вопросы постараюсь ответить. %-)
зыж для тех, кто меня знает плохо: нет, это не вредоносный код. %-)
← →
Ketmar © (2006-09-28 04:43) [1]вдогон.
бьюсь вторые сутки. в тестовых программах и в других процессах всё работает. в taskmgr -- хоть тресни. а оставлять его без присмотра нельзя. запретить вызов тоже нельзя. надо именно перехватить. %-(
да, я в курсе, что CreateProcess() вызывает много других интересных функций (в том числе CreateProcessInternal(). но CreateProcessInternal() имеет разные параметры в разных системах, да и охота поянть, в чём именно баг. а то вылезет ещё где...
← →
Ketmar © (2006-09-28 08:16) [2]как я красиво туплю. поспать, что ли? конечно, без перехвата CreateProcessW() taskmgr не падает -- потому что в него нишиша не внедряют. %-)
так что проблема, похоже, ещё веселее. и не звучит ли она, часом, так: "как побороть защиту от перехвата api в taskmgr?" эли это, всё-таки, у меня в DNA баг? но ведь с десяток других тестовых софтин работает...
← →
DeadMeat © (2006-09-28 08:20) [3]DEP..?
Вот только не помню, есть ли он в Win2kServer.
Тестировал на WinXP_SP2.?
← →
Alx_ © (2006-09-28 09:06) [4]Было подобное. WinXP SP2. Тоже были проблемы именно с taskmgr.
Вылечил тем, что убрал из внедряемой DLL
все Unit - ы, кроме Windows и вызовы всех функций, которые "могут
подгружать DLL - ки"
← →
Elen © (2006-09-28 09:24) [5]
> Ketmar
А в какой момент ты внедряешся? когда винда загружена? в каком кольце?
← →
Ketmar © (2006-09-28 09:41) [6]>[3] DeadMeat(c) 28-Sep-2006, 08:20
>DEP..?
хм. не понял...
>[4] Alx_(c) 28-Sep-2006, 09:06
>Вылечил тем, что убрал из внедряемой DLL
>все Unit - ы, кроме Windows и вызовы всех
>функций, которые "могут подгружать DLL - ки"
бр-р-р. нафига мне скелет внедрять? %-) к сожалению, такой вариант может и заработает, но совершенно меня не устраивает -- в перехватчиках достаточно сложная логика... %-((
>[5] Elen(c) 28-Sep-2006, 09:24
>А в какой момент ты внедряешся?
в теперешнем варианте -- в момент отрабатывания NtResumeThread(). раньше было -- CreateProcessXXX(). т.е. винда создаёт процесс, тут я радостно запускаю вместо основного потока программы свой (он подгружает DLL и делает много интересного), потом запускаю основной поток программы.
и тут-то долбанутый taskmgr и валится. причём валится где-то в ливере, который создаёт окна и занимается прочими абсолютно мне неинтересными вещами.
>в каком кольце?
натурально, в третьем. %-) драйвер ваять лениво.
есть-таки подозрение, что ему не нравится идея подгружения всяких дополнительных DLL... %-( сейчас попробую повыкидывать все, оставить только скелетик.
← →
Elen © (2006-09-28 09:50) [7]
> Ketmar
Ты подумай - может быть Win2k специально блокирует запись в память для него? где-то мне такая блокировка попадалась. если не изменяет память это обнаружили случайно софт айсом...
← →
Ketmar © (2006-09-28 09:53) [8]>[7] Elen(c) 28-Sep-2006, 09:50
>Ты подумай - может быть Win2k специально
>блокирует запись в память для него?
не блокирует. проверено. в том-то всё и дело, что внедрение проходит нормально, после чего taskmgr мистически рушится. то ли он что-то хитрое проверяет, то ли там действительно конфликт каких-то DLL. фишка в том, что под user-mode отладчиком эта скотина вполне стартует. правда толку...
>такая блокировка попадалась.
неа, никакого "осбого статуса" у этой тварюки нет. %-)
← →
Elen © (2006-09-28 09:56) [9]
> Ketmar
А он когда рушится какой нибудь error выдает? проверь чего там по этому адресу сидит.
← →
Ketmar © (2006-09-28 09:59) [10]>[9] Elen(c) 28-Sep-2006, 09:56
>А он когда рушится какой нибудь error выдает?
>проверь чего там по этому адресу сидит.
AV, естественно. причём из своего личного ливера. а в этом адресе сидит, как и следовало ожидать, разыменование. исследования "на скорую руку" показали какой-то совершенно бредовый код до этого. например, call, поле которого jmp, а потом продолжение процедуры. продираться дебаггером через весь taskmgr... увольте. это выше моих сил -- у меня психика слабая. %-) точнее, времени нет.
← →
Elen © (2006-09-28 10:03) [11]
> Ketmar
А ты не пробовал патчить эти команды разименовывания? Может ты DLL приатачиваеш прямо в блок комманд работы со стеком или тебя треады имеют...
← →
ZeroDivide © (2006-09-28 10:04) [12]А что ты пытаешься сделать? Если запретить запуск процессов из taskmgr, то это можно сделать и грамотным, документированным образом.
← →
Ketmar © (2006-09-28 10:07) [13]>[11] Elen(c) 28-Sep-2006, 10:03
>А ты не пробовал патчить эти команды
>разименовывания?
это ещё более жестоко, нежели просто не позволять запускать taskmgr. %-)
>Может ты DLL приатачиваеш прямо
>в блок комманд работы со стеком или тебя треады
>имеют...
не может. винда не позволит такого сделать. %-)
>[12] ZeroDivide(c) 28-Sep-2006, 10:04
>А что ты пытаешься сделать? Если запретить запуск
>процессов из taskmgr, то это можно сделать и
>грамотным, документированным образом.
я в курсе. если бы делал для себя, то настроил бы политики -- и адью. но в данном случае особого выбора нет. к тому же перехватчик делает намного больше, нежели просто что-то запрещает и разрешает.
← →
Elen © (2006-09-28 10:10) [14]
> Ketmar
А это только на Win2k проблема?
← →
Ketmar © (2006-09-28 10:13) [15]>[14] Elen(c) 28-Sep-2006, 10:10
>А это только на Win2k проблема?
я на других системах не проверял в силу их отсутствия. но это и не важно -- есл не работает на Win2K, то дальше проверять смысла нет. ибо должно пахать как минимум на 2K/XP. а на одной из них уже кирдык.
← →
Elen © (2006-09-28 10:16) [16]
> Ketmar
Может тебе оставить этот менеджер в покое? чего такого нужно от него что заставляет радикально писать свой SP? Что другого перехват не подойдет?
← →
Ketmar © (2006-09-28 10:19) [17]>[16] Elen(c) 28-Sep-2006, 10:16
>Может тебе оставить этот менеджер в покое?
видишь ли... дело в том, что я пишу system-wide перехватчик. %-)
мало толку будет от такого перехвата, если он будет рушить процессы. всё должно быть прозрачно и красиво. я-бы оставил в покое, но ведь обязательно найдётся юзер, который этот taskmgr запустит. тут и будет удивительно. %-)
← →
Игорь Шевченко © (2006-09-28 10:20) [18]Мы код увидим или будем гадать на кофейной гуще, почему твой кривой перехват падает ?
← →
Elen © (2006-09-28 10:24) [19]
> я пишу system-wide
Проведи ЛикБез - че такое system-wide?
← →
BiN © (2006-09-28 10:26) [20]
> Ketmar © (28.09.06 10:19) [17]
> видишь ли... дело в том, что я пишу system-wide перехватчик.
> %-)
Делать это в юзер-моде, да еще путем правки пролога (существование которого в функциях не гарантированно) - зарабатывать прогрессирующий гемор. имо.
← →
Ketmar © (2006-09-28 10:35) [21]>[18] Игорь Шевченко(c) 28-Sep-2006, 10:20
>Мы код увидим или будем гадать на кофейной гуще,
>почему твой кривой перехват падает ?
не увидите, потому что код принадлежит не мне. %-( к сожалению. потому я и сказал, что готов описать алгоритмы, но не могу показать код. я понимаю, что после этого наиболее логично послать меня в сад. %-) собственно, такого посылания я ожидаю. но мало ли... %-)
>[19] Elen(c) 28-Sep-2006, 10:24
>Проведи ЛикБез - че такое system-wide?
перехват API во всех запущеных процессах. ну, почти во всех -- csrss я не трогаю. %-)
>[20] BiN(c) 28-Sep-2006, 10:26
>Делать это в юзер-моде, да еще путем правки
увы. драйвер, конечно, был бы лучше, но его я точно и за пол-года не сделаю. а сроки жмут. %-(
>пролога (существование которого в функциях не
>гарантированно) - зарабатывать прогрессирующий
>гемор. имо.
6 байтиков у меня есть всегда. а больше и не надо. %-)
← →
Elen © (2006-09-28 10:38) [22]
> Ketmar
Но чем же тебе менеджер понадобился? не лови его... Почему нельзя обойтись без него
← →
Ketmar © (2006-09-28 10:42) [23]>[22] Elen(c) 28-Sep-2006, 10:38
>Но чем же тебе менеджер понадобился? не лови
>его... Почему нельзя обойтись без него
потому что он, падло, умеет делать NtTerminateProcess() и CreateProcess(). %-)
← →
Elen © (2006-09-28 10:43) [24]
> Ketmar
Ну не только он... есть еще много способов...
← →
Ketmar © (2006-09-28 11:30) [25]>[24] Elen(c) 28-Sep-2006, 10:43
>Ну не только он... есть еще много способов...
конечно, не только он. %-) но и он в том числе -- пожтому оставить его в покое я не могу. %-)
← →
Игорь Шевченко © (2006-09-28 11:32) [26]Ketmar © (28.09.06 10:35) [21]
> перехват API во всех запущеных процессах.
Найди книжку Гэри Неббета, он там приводит хороший пример перехвата, по принципу, как отладчики работают. Не найдешь, зайди в чат.
← →
Ketmar © (2006-09-28 11:44) [27]>[26] Игорь Шевченко(c) 28-Sep-2006, 11:32
>хороший пример перехвата, по принципу, как
>отладчики работают. Не найдешь, зайди в чат.
при помощи навешаного отладчика я тоже могу. не подходит. %-)
но книгу поищу, благодарю.
← →
Elen © (2006-09-28 11:46) [28]
> Ketmar
А если запретить его вызов в реестре?
← →
Игорь Шевченко © (2006-09-28 11:47) [29]Ketmar © (28.09.06 11:44) [27]
"По принципу" и "при помощи" для тебя имеет разницу ? :)
← →
Ketmar © (2006-09-28 11:54) [30]>[29] Игорь Шевченко(c) 28-Sep-2006, 11:47
>"По принципу" и "при помощи" для тебя имеет
>разницу ? :)
имеет, потому я и ищу книгу, вместо того, чтобы тупо сказать "да знаю я эту вашу йогу, превзошёл нечуйственно". %-)
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2006.10.22;
Скачать: [xml.tar.bz2];
Память: 0.53 MB
Время: 0.053 c