Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: WinAPI и системное программирование > проблемы с advApiHook или Hands.dll...


Автор: MetalFan 23.4.2007, 20:54
Делаю перехват с помощью advApiHook.
все вроде бы "по правилам".
подгружаю dll в другие процессы с пом.стандартного хука.
при "подгрузке" перехватываю ZwQuerySystemInformation. все работало до какого-то момента, который я никак не поймаю(
все вроде бы ничего, но некоторых машинах валит или explorer или taskmgr((((
http://img263.imageshack.us/my.php?image=taskmgrfallda7.png
в аттаче тестовый проект...
помогите выпрямить мой hands.dll))))
с уважением...

Автор: Yanis 23.4.2007, 21:52
Атач мощный. Что говорить, я сам чуть не свалился.

Добавлено через 1 минуту и 43 секунды
Надо бы провести статистику на каких системах рушится всё.
Наверняка между «нерабочими» системами есть что то общее.

Автор: MetalFan 23.4.2007, 21:58
Yanis, сорь) отвалился аттач чтото) прилепил обратно)
а статистику собрать... да просто в коде какой-то косяк, и замыленым взглядом я его не вижу(

Автор: Yanis 23.4.2007, 22:25
Не знаю зачем, но скачал smile
Странно, но первое на что напоролся компилятор так это:
Код
PFILE_FULL_EA_INFORMATION = ^PFILE_FULL_EA_INFORMATION;
FILE_FULL_EA_INFORMATION = packed record
       NextEntryOffset: dword;
       Flags: byte;
       EaNameLength: byte;
       EaValueLength: word;
       EaName: array [0..0] of Char;
      end;

Странное объявление. Местическое такое ;)

Автор: MetalFan 23.4.2007, 22:35
Yanis, а всеравно не используется) да уж, объявление и правда мистическое)

Автор: bartram 23.4.2007, 22:40
MetalFan, попробуй версию AdvApi Hook 1.1 ;)

Добавлено @ 22:44
Проект не смотрел ещё, посмотрю завтра на работе. Отпишусь

правильно так будет:
Код

PFILE_FULL_EA_INFORMATION = ^FILE_FULL_EA_INFORMATION;
FILE_FULL_EA_INFORMATION = packed record
       NextEntryOffset: dword;
       Flags: byte;
       EaNameLength: byte;
       EaValueLength: word;
       EaName: array [0..0] of Char;
      end;

 smile 

Автор: MetalFan 23.4.2007, 23:15
bartram, ПАСИБ) а можно еще файлик LDasm.pas? а то без него не собирается(

Автор: Yanis 24.4.2007, 06:35
smile

Добавлено через 1 минуту и 11 секунд
Собсно это тоже от ms-rem-а. На wasm.ru можно найти. Ну или в атаче )

Добавлено через 2 минуты и 45 секунд
Цитата(bartram @  23.4.2007,  23:40 Найти цитируемый пост)
правильно так будет:

smile

Автор: MetalFan 24.4.2007, 08:08
не помогло((( умирает таскманагер хоть ты тресни

Автор: bartram 24.4.2007, 20:07
MetalFan, у меня не выявлено никаких глюков smile Тестил на XP Sp2

Автор: MetalFan 24.4.2007, 20:39
bartram, на 3х!!! машинах WinXPSP2 все ок. только на одной проблемы(((

Автор: Yanis 24.4.2007, 21:18
Цитата(MetalFan @  24.4.2007,  21:39 Найти цитируемый пост)
только на одной проблемы(((

У меня тоже всё нормально. Что за машина? Что то в ней не так как у всех.

Автор: MetalFan 24.4.2007, 21:38
Yanis, даж не знаю... набор софта примерно одинаков(
разве что все последние заплатки стоят на виндах...

Автор: bartram 25.4.2007, 08:49
Цитата(MetalFan @  24.4.2007,  23:38 Найти цитируемый пост)
разве что все последние заплатки стоят на виндах... 

Хм, а вот это уже интересно.....
Кинь мне свою ntdll.dll

Автор: W4FhLF 25.4.2007, 12:04
Цитата(bartram @  25.4.2007,  08:49 Найти цитируемый пост)
Хм, а вот это уже интересно.....
Кинь мне свою ntdll.dll


Думаешь 0day найти?  smile 

Вот так тупо гадать абсолютно никакого смысла нет, достаточно запустить таскманагер под отладчиком и внедрить туда DLL, после краха тормознёшься на инструкции, которая послужила этому причиной, далее уже анализируй предсмертный процесс. Что тут ещё посоветуешь?

Автор: MetalFan 25.4.2007, 16:46
W4FhLF, спасиб) да только я в асме не силен, чтоб отлаживать так глубоко...
моя http://www.rapidshare.ru/261033

Автор: bartram 25.4.2007, 19:34
Цитата(W4FhLF @  25.4.2007,  14:04 Найти цитируемый пост)
Вот так тупо гадать абсолютно никакого смысла нет, достаточно запустить таскманагер под отладчиком и внедрить туда DLL, после краха тормознёшься на инструкции, которая послужила этому причиной, далее уже анализируй предсмертный процесс. Что тут ещё посоветуешь?

Зачем так? Тем более человек не силен в асме.
MetalFan, делаешь следующее.
Компилишь свою dll далее 
1.Запускаешь такскменеджер 
2. В Delphi, Run > Attach to Process > Выбираешь в списке процессов таск менеджер > убираешь галку Pause After Attach > Attach
3. Если падает, срабатывает отладочное исключение
4. Смотришь код на котором упало
5. Кидаешь сюда код , будем разбираться smile

Автор: MetalFan 25.4.2007, 21:31
хм... ну вот что получилось)
<CUT>
з.ы. неиформативный код выложил.
сорь)

Автор: bartram 27.4.2007, 23:22
MetalFan, код позже посмотрю, ок? Замотался совсем, времени нет :(. Отпишусь

Автор: W4FhLF 28.4.2007, 12:01
MetalFan, ну и какой код ты дал?smile Дебри kernel32, он ни о чём сказать не может.

Автор: MetalFan 28.4.2007, 12:04
Цитата(bartram @  25.4.2007,  19:34 Найти цитируемый пост)
4. Смотришь код на котором упало
5. Кидаешь сюда код , будем разбираться smile 

W4FhLF, а какой код нужен?  smile 
на чем виснет то и дал)
вот

Автор: W4FhLF 28.4.2007, 14:53
MetalFan, да я же говорю анализировать надо, стек вызовов смотреть, смотреть какой вызов был последним в твоей библиотеке. 

Автор: MetalFan 28.4.2007, 14:58
мысль и претензии понял! действительно выложеный мной код ни о чем не говорит)
ок, посмотрю поточнее, спасиб!

Автор: bartram 28.4.2007, 20:38
MetalFan, проверил твой код на машине WinXpSp2 + все новые обновления. Таск менеджер падать не хочет :(
Может у тебя софт какой стоит который тоже ставит хуки? Может WindowsBlinds, какие-нибудь кейлогеры? Просто не должен он падать, а падает почему то, странно. Мне самому уже интересно стало.

Автор: MetalFan 28.4.2007, 20:54
вот что первое показывает D6 после Attach To Process

Автор: W4FhLF 29.4.2007, 06:22
MetalFan, да это понятно, это системный поток, он тебе вообще ненужен. 

PS Когда уже люди в таких задачах научаться применять нормальные средства отладки? 

Автор: bartram 29.4.2007, 10:41
Цитата(W4FhLF @  29.4.2007,  08:22 Найти цитируемый пост)
PS Когда уже люди в таких задачах научаться применять нормальные средства отладки?  

А что тогда посоветуешь? OllyDbg?

Автор: W4FhLF 29.4.2007, 11:03
bartram, в области UserMode у OllyDBG в прицнипе конкурентов не существует, это неофициально признанный стандарт. 

Автор: Yanis 1.5.2007, 22:01
Цитата(W4FhLF @  29.4.2007,  12:03 Найти цитируемый пост)
bartram, в области UserMode у OllyDBG в прицнипе конкурентов не существует, это неофициально признанный стандарт.  

Ну а как же мой любимый интерактивный дизассемблер? Да ты и сам наверное пользуешься ;)

Автор: dumb 2.5.2007, 03:22
Цитата(Yanis @  1.5.2007,  22:01 Найти цитируемый пост)
Ну а как же мой любимый интерактивный дизассемблер? Да ты и сам наверное пользуешься

угу. только не для отладки. smile отладчик там какой-то... его можно использовать, конечно, для "разметки" по ходу... но конкретно меня он как-то не вдохновил.

Автор: MetalFan 3.5.2007, 19:25
ушол учить асм

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)