![]() |
Модераторы: Snowy, bartram, MetalFan, bems, Poseidon, Riply |
![]() ![]() ![]() |
|
Hacker |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 21.3.2006 Репутация: нет Всего: нет |
Внедряю свою ДЛЛ-ку в explorer, проблема в том что почему-то под Win2000 код не работает, я не понял, или он не туда внедряется, или проблема в перехвате функций...
Вот Injector - часть кода из EXE
А вот ДЛЛ-ка, она должна выводить мессаги, когда проводник запускает какую-нибудь прогу
Код ДЛЛ-ки гдето тут на форуме взял, не могу теперь найти где... ![]() Либо инжектится она не в експлорер, либо хуки не работают, не понимаю... под XP SP2 Prof всё летает на ура, под SP1 вроде тоже не работает... Есть ли универсальный инжект, для любой винды (ну 98 можно не учитывать ![]() p.s. Сейчас проверил - инжектится туда куда надо, значит проблема с хуками... |
||||
|
|||||
Hacker |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 21.3.2006 Репутация: нет Всего: нет |
Вот кое что накопал... выходит здесь:
Неужели никто не в курсе??? Вот я нашёл одну вешь из-за которой это может быть:
Взято ОТСЮДА Вот только там всё на сях, ничерта не понял... ![]() |
||||
|
|||||
Rouse_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 18 Всего: 29 |
Лови демку, если не разберешся как пользоваться - зови.
Краткое описание: данная библиотека выполненна в виде расширения оболочки и реализует дополнительную закладку при открытии свойств любого исполняемого файла. В закладке отображаются все экспортируюмые и импортируемые функции выбранного объекта... Чуток сырая, под 2000 не затачивал, нет времени, но по идее должна работать... Коментариев пока мало... нет времени... Присоединённый файл ( Кол-во скачиваний: 85 ) ![]() |
|||
|
||||
Rouse_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 18 Всего: 29 |
Да, чуть не забыл для чего выложил демку
![]() Обрати внимание на следующий код в модуле DumpUtils.pas
Дело в том что по стандарту таблица должна быть расположена во смещению Image^.Union.OriginalFirstThunk (она же Image^.Union.Characteristics) а также ее дубликат должен храниться в Image^.FirstThunk. НО!!! По стандарту ссылки на функции получают через Image^.FirstThunk, поэтому Борланд просто вырезала OriginalFirstThunk, для которой пишется большинство примеров (а они обычно под С++, где данная таблица заполнена), поэтому данные примеры, не обращая внимания на стандарт обращаются для перечисления к OriginalFirstThunk (что есть не верно) и на программах, написанных на Дельфи, попросту не работают... |
|||
|
||||
Hacker |
|
||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 21.3.2006 Репутация: нет Всего: нет |
Посмотрел коды... немного даже понял... спасибо!
Сегодня опять весь день мучился с этими хуками... вот что вышло: Ставит хук, но при запуске любого процесса Explorer'ом выдаётся ошибка... то есть на место той функции что-то записывается, но что-то не то... Вот код:
Устанавливаю так:
Функция - перехватчик:
Объясните пожалуйста что я делаю не так??? ![]() |
||||||
|
|||||||
Rouse_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 18 Всего: 29 |
Уважаемый Hacker, вам как в пустой колодец лить...
Только обьяснил как второй раз на грабли не наступить, так Вы опять за старое... Приведенный код читали? Если читали, то хоть поделитесь тем что вы из него не поняли? Объясню... Это сообщение отредактировал(а) Rouse_ - 4.6.2006, 13:03 |
|||
|
||||
Hacker |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 21.3.2006 Репутация: нет Всего: нет |
Интересует естественно функция GetImportTable и её переделка под запись в память процесса... Чтобы можно было параметрами ей передать указатели на TargetFunction и NewFunction и указатель на процесс в памяти...
![]() |
|||
|
||||
Rouse_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 18 Всего: 29 |
Вот это твой вариант
![]() А вот это мой вариант: FuncAddr := PChar('0x' + IntToHex(DWORD(Thunk^.AddressOfData), 8)); Найди два различия ![]() Потом, где проверка на (DWORD(Thunk^.Function_) and IMAGE_ORDINAL_FLAG) = IMAGE_ORDINAL_FLAG В третьих обради внимание на GetDelayImportTable |
|||
|
||||
Hacker |
|
||||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 21.3.2006 Репутация: нет Всего: нет |
Так?
в C++ эта строка вообще была:
А вот это вообще тёмный лес ![]() Вот на C++ этот код - что-то я криво перевёл...
|
||||||||
|
|||||||||
Rouse_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 18 Всего: 29 |
Посмотри вот тут http://forum.vingrad.ru/index.php?showtopi...st&p=721643
|
|||
|
||||
Hacker |
|
||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 21.3.2006 Репутация: нет Всего: нет |
Странно, но работает на всём кроме Explorer'a... ![]() Посмотри сам... Причём все действия нужные выполняет - заходит в эту ветку:
пишет 'доступ разрешён!' Накатал на дельфи подопытную прогу, на ней нормально работает... но мне то нужно именно для проводника... ![]() PS: Можно небольшой вопросик не по теме... А как пользоваться твоей либой (PropertySheet), чёт я не допёр... а то лежит на диске такая нужная вещь, а я ей не пользуюсь ![]() |
||||
|
|||||
Rouse_ |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 18 Всего: 29 |
Хм, антивирей не стоит случаем? они могут тушить такие попытки...
Собираешь библиотеку, потом делаешь
Чтобы деинсталировать:
|
||||||
|
|||||||
Hacker |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 52 Регистрация: 21.3.2006 Репутация: нет Всего: нет |
||||
|
||||
Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 13 Всего: 111 |
Rouse_ Привет. Извиняюсь за оффтоп, но .... . Всё таки на delphimaster ты меня так и не послушал и, как мне показалось, проигнорировал. А я говорил, что при просмотре закладки "импорта/экспорта", падает Explorer при перерисовке Label "Импорт". Если всё таки стало интересно, то напиши пожалуйста в PM и стукни в ICQ. Добавлено @ 17:59 Поправочка. Label "Экспорт". |
|||
|
||||
Rouse_ |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 18 Всего: 29 |
Я не проигнорировал ![]() Хотя может дело в том, что при отсутствии экспорта данный элемент скрывается... Ммм, не знаю, если не в этом, то тут явно что-то глубже. Кстати, ты под какой системой проверял? Добавлено @ 19:30
Как появиться время, попробую поэксперементировать что там не работает у тебя... Добавлено @ 19:43 Yanis, проверь вот такой вариант:
Кстати, тут нехилая утечка памяти на GetStockObject, его вызов нужно вынести в WM_INITDIALOG и сохранить в внешней переменной, а по WM_DESTROY разрушить через DeleteObject... Говорю же, сыровато чуть... Нет времени дорасти до полноценной демки ![]() |
||||
|
|||||
Yanis |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 13 Всего: 111 |
WinXP sp2 английская версия с руссификатором, но язык тут роли не играет. Стили оформления включены.
Странно уже, то что этот случай не единичный и повторился именно у меня ![]()
из модуля PropSheet, то всё работает нормально ![]() |
||||
|
|||||
Rouse_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 18 Всего: 29 |
Хм, системы у нас одинаковые, только у меня чистая без всяких русификаторов... Попробуй изменить код, как я показал...
|
|||
|
||||
Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 13 Всего: 111 |
Веришь или нет так ещё хуже =) Даже не знаю, ты наверное думаешь, что у меня руки кривые но так или иначе поиграв с окошком я могу добиться критической ошибки
![]() P. S. С изменённым, как ты показал, кодом улучшений замечено небыло. Незнаю чем тебе помочь, видео что ли записать.... |
|||
|
||||
Rouse_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 18 Всего: 29 |
Ммм, видео конечно не надо... Как приеду с Киева - сварганю демку с выводом логов и свяжусь с тобой - будем искать где руки выпрямить
![]() |
|||
|
||||
Rouse_ |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 469 Регистрация: 23.4.2005 Репутация: 18 Всего: 29 |
Разобрались мы с Yanis-ом в причинах глюка. Данная ошибка проявиться при включенной проверке на выход за пределы диапазона. Потому, кто будет в дальнейшем собирать в начале кода объявите директиву {$R-}...
|
|||
|
||||
Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 13 Всего: 111 |
Итак...
Отдельно. Rouse_ Спасибо за разборку. В общем благодаря Rouse_'у мы вяснили суть проблемы, которая меня (странно, что меня одного) мучала. Достаточно было отключить в опциях компилятора проверку выходов за границу (Project -> Options -> закладка Compiler -> Опция Range Checking) как всё сразу заработало по задуманному варианту ![]() |
|||
|
||||
supersonic |
|
|||
Новичок Профиль Группа: Участник Сообщений: 22 Регистрация: 21.6.2006 Репутация: нет Всего: нет |
А у меня проблема с инжектом длл в explorer.exe когда моя dll детачится сразу же после аттача
|
|||
|
||||
Firster |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 16.8.2007 Где: Ukraine Репутация: нет Всего: нет |
Ребята, помогите пожалуйста. Нужна консультация в таком вопросе. Поставлена задача определить запуск приложения в Винде. Вариант использования таймера, пожалуйста, не предлагать. Я обходил множество форумов в поиске решения. Предлагают сделать перехват CsrClientCallServer в файле csrss.exe. Есть еще вариант внедрения во все запущенные процессы CreateProcess. Перелопал кучу кода. Голова уже забита всякой ерундой. Если кто-нибуть сталкивался с этим НАПРАВЬТЕ НА ПУТЬ истинный. Заранее ОГРОМНОЕ СПАСИБО.
|
|||
|
||||
ne0n |
|
|||
PlayBoy ![]() ![]() Профиль Группа: Участник Сообщений: 733 Регистрация: 5.8.2005 Где: Н.Новгород Репутация: 4 Всего: 11 |
Firster, во первых зачем поднимать старую тему, которой уже почти год(не поленился бы создать свою)...а во вторых
это че такое??? может быть перехват CreateProcess?! господи в сети полно примеров перехвата!!! Блин пораб линки на статьи мс-рема куданибудь в шапку внести.... вот тебе чтиво:http://www.wasm.ru/article.php?article=apihook_1 |
|||
|
||||
Firster |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 16.8.2007 Где: Ukraine Репутация: нет Всего: нет |
спасибо за помощь...
|
|||
|
||||
Firster |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 16.8.2007 Где: Ukraine Репутация: нет Всего: нет |
ne0n, дружище просвети меня еще раз, пожалуйста. Взял исходник у Ms-Rem. Вставил в него обработку
CreateProcess. Так вот. перехват происходит, но далее вылетает ошибка. Может подскажешь что-нить. Любые мысли по этому поводу приветствуются. Заранее спасибо.
|
|||
|
||||
Firster |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 16.8.2007 Где: Ukraine Репутация: нет Всего: нет |
Если еще кто-нить столкнется с такой проблемой, посоветую перехватывать ZwCreateThread. Т.е. в вышеприведенном коде нужно заменить ZwCreateProcess на ZwCreateThread и все будет ОК. Спасибо ne0n за напутствие.
|
|||
|
||||
ne0n |
|
|||
PlayBoy ![]() ![]() Профиль Группа: Участник Сообщений: 733 Регистрация: 5.8.2005 Где: Н.Новгород Репутация: 4 Всего: 11 |
Firster, всегда рад помоч!
|
|||
|
||||
Firster |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 16.8.2007 Где: Ukraine Репутация: нет Всего: нет |
Опять проблема ne0n. Не могу прилепить ДЛЛ к эксплореру. Ко всем другим процессам в системе Инжект происходит нормально. А вот к ЭКСПЛОРЕРу не хочет. Может опять на тропинку поставишь....Заранее спасибо
|
|||
|
||||
ne0n |
|
|||
PlayBoy ![]() ![]() Профиль Группа: Участник Сообщений: 733 Регистрация: 5.8.2005 Где: Н.Новгород Репутация: 4 Всего: 11 |
Firster, а ты как библиотеку инжектишь?!
|
|||
|
||||
Firster |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 16.8.2007 Где: Ukraine Репутация: нет Всего: нет |
Библиотеку инжекчу из ЕХЕ-файла.
|
|||
|
||||
ne0n |
|
|||
PlayBoy ![]() ![]() Профиль Группа: Участник Сообщений: 733 Регистрация: 5.8.2005 Где: Н.Новгород Репутация: 4 Всего: 11 |
hProc значение проверял...не нулевое?!
Это сообщение отредактировал(а) ne0n - 25.8.2007, 22:54 |
|||
|
||||
Firster |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 16.8.2007 Где: Ukraine Репутация: нет Всего: нет |
Вот процедура, которая при загрузке приложения по OnCreate вызывается.
Добавлено через 2 минуты и 46 секунд Пишет, что вроде бы ИНЖЕКТ установлен нормально, но реально НЕТ. Например, если ВинКомандер запущен, то ДЛЛ отлавливает запуск из него ЕХЕшников. А ЭКСПЛОРЕР молчит.... |
|||
|
||||
ne0n |
|
|||
PlayBoy ![]() ![]() Профиль Группа: Участник Сообщений: 733 Регистрация: 5.8.2005 Где: Н.Новгород Репутация: 4 Всего: 11 |
попробуй InjectDllAlt...а вообще лучше внедрять через ловушки!
|
|||
|
||||
Firster |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 16.8.2007 Где: Ukraine Репутация: нет Всего: нет |
зависает
Добавлено через 15 секунд буду пробовать через ДЛЛ |
|||
|
||||
ne0n |
|
|||
PlayBoy ![]() ![]() Профиль Группа: Участник Сообщений: 733 Регистрация: 5.8.2005 Где: Н.Новгород Репутация: 4 Всего: 11 |
Firster, так библеотека внедрена или нет?!
(а вообще внедряться во все подряд нельзя...система может рухнуть) Это сообщение отредактировал(а) ne0n - 25.8.2007, 23:13 |
|||
|
||||
Firster |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 16.8.2007 Где: Ukraine Репутация: нет Всего: нет |
Библиотека внедряется через InjectDll(hProc, 'HookLib.dll'). В ней заложены функции перехвата АПИ функций.
Добавлено через 1 минуту и 21 секунду и при перехвате вызова АПИ-функции она отправляет сообщение проге. Вот так я узнаю, что в системе запущен очередной процесс (программа) |
|||
|
||||
Firster |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 16.8.2007 Где: Ukraine Репутация: нет Всего: нет |
neOn, ты не поверишь, но получилось!!! Все согласно старой мудрости: "Если ничего не получается начни сначала...вернись к истокам!". И вот вернулся вначало
а вот этот код у меня заработал:
хуки работаю как часики.... Спасибо Hacker за исток и neOn за поддержку! |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: WinAPI и системное программирование" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, bartram, MetalFan, bems, Poseidon, Rrader, Riply. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: WinAPI и системное программирование | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |