![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| RideX |
|
||||||||
|
Шустрый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 94 Регистрация: 8.9.2004 Репутация: 4 Всего: 7 |
Посмотреть экспортируемую функцию любого загруженного модуля можно без лишних извратов и левых тулз, а только средствами Delphi, например, так:
Или через родной дизассемблер Delphi путём вызова интересующей ф-ции, например:
Поставив breakpoint и остановившись на нём, жмём Ctr+Alt+C, чтобы попасть в окно CPU встроенного отладчика:
Далее просто трассируем по F7, пока не попадем в системную библиотеку:
|
||||||||
|
|||||||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 13 Всего: 158 |
||||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
Все избавился , от этого зверя , с танцами и бубнами,
и в безопасном режиме + коммандная строка, удалось залезть в реестр и все поправить Тема закрыта -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| RideX |
|
||||||
|
Шустрый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 94 Регистрация: 8.9.2004 Репутация: 4 Всего: 7 |
Ты ошибаешься, я увижу то, что захочу увидеть
Понятно что всё можно автоматизировать и усовершенствовать, это для наглядности, выведет информацию в таком виде:
Это сообщение отредактировал(а) RideX - 4.9.2006, 22:46 |
||||||
|
|||||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
RideX, а в чужом процессе можно ли как то поменять адресса вызовов ф-ций?
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| RideX |
|
|||
|
Шустрый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 94 Регистрация: 8.9.2004 Репутация: 4 Всего: 7 |
Вызов одной API заменить на другую? В принципе можно изменить абсолютно всё, даже константы (пример кода недавно давал), только делать это нужно внимательно, так при подмене API функции не забывать передавать ей "новые", правильные параметры, помнить о типе возвращаемого значения, если оно используется, следить чтобы код "не поломался", т.е. чтобы, например, "старая", но нужная инструкция процессора не "разорвалась". |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
это понятно , я имел ввиду, есть хукнутая ф-ция, как мне взяв ее реальный адресс из файла , и поменять на реальный , а не хукнутый? допустим в regedit
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 13 Всего: 158 |
RideX,
- можно взять клещи или гвоздодер и выдернуть гвоздь. - изврат, левые тулзы! можно взять микроскоп и в лучшем виде рассмотреть гвоздь! - пардон, но... - вы ошибаетесь! возму вот микроскоп, скую мини-девайс для извлечения гвоздей. и вообще, я все могу.
время, потраченное на анализ такого рода ситуации с помощью подручных средств, отличается от времени, потраченного на разработку какого-либо своего средства, на порядки. а если сдампить захочу по ходу, подебажить, пофиксить? а сэмпл добротный. |
|||
|
||||
| dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 13 Всего: 158 |
в данном случае отличаются не адреса(Romikgy - реальный программер! только почему тогда с одной "д"? ;)) а содержимое функций: в начало "правильной" функции вписывается переход на "подставную". т.е. чтобы убрать хук, достаточно заменить код перехода на считанные из файла оригинальные байтики. так как адресные пространства процессов изолированы, сие действо нужно совершать "изнутри" каждого процесса. проще всего, наверное, будет поставить глобальный хук(например WH_CBT) и реализовать код "восстановления" в dll нашего хука. к тому же получаем бонус в виде возможности довольно часто проверять наши восстановленные функции(лучше после CallNextHookEx, на случай если "зараза" тоже восстанавливается при вызове WH_CBT). кстати, если уж так залезли в эту тему, интересно - как именно реализована подгрузка у этой "заразы". просто есть подозрение, что в режиме командной строки регедит остался бы нетронутым... |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
Я имел ввиду адреса прыжков на ф-ции -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| dumb |
|
||||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 13 Всего: 158 |
Romikgy, пример:
было:
стало:
тут не нужно менять адрес перехода(jmp), надо сам переход заменять на то, что было. |
||||
|
|||||
| RideX |
|
||||
|
Шустрый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 94 Регистрация: 8.9.2004 Репутация: 4 Всего: 7 |
Всё, сдаюсь!
Да, возможно, скорее всего ловит процесс через создание окна, хуком на HSHELL_WINDOWCREATED, и в реализации не сложно. dumb, не видел что ты только что уже написал Это сообщение отредактировал(а) RideX - 5.9.2006, 12:10 |
||||
|
|||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 26 Всего: 146 |
это после хука такое? Это сообщение отредактировал(а) Romikgy - 5.9.2006, 13:11 -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| RideX |
|
||||||
|
Шустрый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 94 Регистрация: 8.9.2004 Репутация: 4 Всего: 7 |
Да, именно, хотя возможен вариант с push/ret
Вот, к примеру, похуканый MessageBox может выглядеть так:
Как видишь первые шесть байт кода в памяти, отличаются от того что в файле, т.е. ,без дизассемблера понятно, что фактически в памяти имеем переход "куда-то там..." по адресу 00B136BCh
P.S. Вообще чтобы не перекомпилить каждый раз код, который я приводил, кинь на форму два TEdit, один для имени DLL, второй для имени ф-ции, конечно если ты уже не сделал TMemo/TStringList с целым списком функций для проверки |
||||||
|
|||||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |