Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.08.2014, 10:14   #11
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Давай не будем все полулегальные способы называть хуками. В боксе есть и иные красивозвучащие термины. Например апперкот
А легальных и не существует.
К вашему сведенью хук API так и ставится. Адрес базовой функции заменяется вашей функцией, а ваша функция должна вызвать базовую функцию...
Хотя вроде это один из возможных способов. Динамический импорт из DLL так не ловится.
Если знаете другие способы, просвятите меня

Кажется на хабре видел большую статью на тему перехвата API.
Человек_Борща вне форума Ответить с цитированием
Старый 19.08.2014, 17:10   #12
FEDDEF
 
Регистрация: 18.08.2014
Сообщений: 7
По умолчанию

Большое спасибо за ответы!

Т.е. если подытожить:

1.Берём приложение с ListBox
2.Ищем адрес на функцию TextOut(как это сделать ума не приложу, совершенно не знаю что это такое, полагаю нужны знания asm)
3.Изменяем его на адрес процедуры TextOut из своей DLL( )
4.Запускаем приложение с ListBox и приложение перехватчик
5.Рисуем текст, перехватываем, считываем параметр
6.Вызываем оригинальную процедуру TextOut из gdi32.dll (вроде бы она там)

Конечно очень непростое мероприятие(для меня)
FEDDEF вне форума Ответить с цитированием
Старый 19.08.2014, 17:24   #13
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Цитата:
Сообщение от FEDDEF Посмотреть сообщение
2.Ищем адрес на функцию TextOut(как это сделать ума не приложу, совершенно не знаю что это такое, полагаю нужны знания asm)
Для этого собственно, я так полагаю, и нужен CreateRemoteThread, чтобы внедрится в адресное пространство другого процесса.
А тогда адрес узнать - это просто: @TextOut. Дальше возня с правами на запись, байтиками, указателями и прочий гемор.
http://xakep.ru/articles/22263/

И да. Спасибо Человек_Борща.
Sibedir вне форума Ответить с цитированием
Старый 19.08.2014, 17:36   #14
FEDDEF
 
Регистрация: 18.08.2014
Сообщений: 7
По умолчанию

Sibedir, спасибо за ссылку!

Сейчас почитаю, попробую, отпишусь.
FEDDEF вне форума Ответить с цитированием
Старый 20.08.2014, 03:20   #15
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
А легальных и не существует.
К вашему сведенью хук API так и ставится. Адрес базовой функции заменяется вашей функцией, а ваша функция должна вызвать базовую функцию...
Хотя вроде это один из возможных способов. Динамический импорт из DLL так не ловится.
Если знаете другие способы, просвятите меня

Кажется на хабре видел большую статью на тему перехвата API.
Я только о терминологии. Не надо все эти способы называть хуками. Хук в ОС Windows это что ставится процедурой SetWindowsHook(Ex). Это 3/4 легальный способ.

Но CreateRemoteThread - это другой с точки зрения ОСWindows способ.

P.S.
Это уже просто офтоп.
"Просвятить" тебя у меня нет никаких прав ни от всевышнего, ни от господа бога и т.д. и т.п.
northener вне форума Ответить с цитированием
Старый 20.08.2014, 10:08   #16
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
"Просвятить" тебя у меня нет никаких прав ни от всевышнего, ни от господа бога и т.д. и т.п.
Юморист
Человек_Борща вне форума Ответить с цитированием
Старый 28.08.2014, 20:18   #17
FEDDEF
 
Регистрация: 18.08.2014
Сообщений: 7
По умолчанию

В общем пытаюсь, не получается.

Допустим в библиотеке простой код
begin
ShowMessage('Message');
end.

запускаю приложение, на кнопке которого обработчик - найти процесс по наименованию exe(другое приложение), и создать в его адресном пространстве поток, который собственно загружает библиотеку. Библиотека загружается, и код срабатывает, но сообщение привязано (модальное окно) к первому приложению, второе вообще можно закрыть, а сообщение висит. Почему так?
FEDDEF вне форума Ответить с цитированием
Старый 28.08.2014, 20:37   #18
FEDDEF
 
Регистрация: 18.08.2014
Сообщений: 7
По умолчанию

Помогите кто знает
FEDDEF вне форума Ответить с цитированием
Старый 30.11.2014, 16:29   #19
FEDDEF
 
Регистрация: 18.08.2014
Сообщений: 7
По умолчанию

Сделал!
Помогли примеры из интернета.

Всем спасибо!
FEDDEF вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перехват значений параметров POST запросов alumium Работа с сетью в Delphi 2 03.12.2012 00:45
Перехват спецссылок и чтение параметров из них TWebBrowser The SCS Компоненты Delphi 3 20.02.2012 21:10
TextOut и шрифт Lemon2009 Общие вопросы Delphi 10 01.09.2010 12:41
canvas и TextOut Lokos Общие вопросы Delphi 1 27.08.2010 08:03
TextOut xzDelphi Помощь студентам 9 23.10.2007 12:29