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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.08.2014, 17:32   #1
FEDDEF
 
Регистрация: 18.08.2014
Сообщений: 7
По умолчанию Перехват параметров TextOut

Добрый день!

Помогите пожалуйста кто знает, как можно перехватить(может можно и без перехвата) функцию TextOut из чужого окна, конкретно - интересует перехват 4-го параметра функции - "lpString".

код:

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    ListBox1: TListBox;
    Button2: TButton;
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  DC:HDC;

implementation

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
var
s:string;
begin
s:='Какой-то текст';
DC:=GetDc(Form1.ListBox1.Handle);
TextOut(DC,0,0,PChar(s),Length(s));
end;

end.
Скрин во вложении

Можно из другого приложения выцарапать текст при срабатывании данной ф-ии???!!!
Изображения
Тип файла: jpg TextOut.jpg (20.0 Кб, 68 просмотров)

Последний раз редактировалось FEDDEF; 18.08.2014 в 17:41.
FEDDEF вне форума Ответить с цитированием
Старый 18.08.2014, 18:22   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Можно. Используя RemoteThread, внедряете DLL, переопределяете указатель TextOut в таблице импорта exe на функцию из внедренной DLL и ловите параметры TextOut, а затем сами вызываете системную TextOut и возвращаете её результат вызывающей программе.
Человек_Борща вне форума Ответить с цитированием
Старый 18.08.2014, 19:15   #3
FEDDEF
 
Регистрация: 18.08.2014
Сообщений: 7
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Можно. Используя RemoteThread, внедряете DLL, переопределяете указатель TextOut в таблице импорта exe на функцию из внедренной DLL и ловите параметры TextOut, а затем сами вызываете системную TextOut и возвращаете её результат вызывающей программе.
Спасибо!
А есть более короткий путь? Через hook?
FEDDEF вне форума Ответить с цитированием
Старый 18.08.2014, 19:57   #4
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Цитата:
Сообщение от FEDDEF Посмотреть сообщение
Спасибо!
А есть более короткий путь? Через hook?
Чет я покопал и не нашел на что в данном случае ставить хук. Ведь рисует система из-под себя самой. Наверное действительно,как и говорит Человек_Борща, проще перехватить обращение к процедуре подменой адреса.

Последний раз редактировалось Sibedir; 18.08.2014 в 20:04.
Sibedir вне форума Ответить с цитированием
Старый 18.08.2014, 20:24   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
Спасибо!
А есть более короткий путь? Через hook?
Это он и есть. Ты ставишь свой аналогичный метод на мето оригинального, а оригинал вызываешь внутри себя.

Цитата:
Человек_Борща, проще перехватить обращение к процедуре подменой адреса.
Опять это это оно и есть. В таблице импорта целевого процесса указывается адрес своего метода.
Человек_Борща вне форума Ответить с цитированием
Старый 18.08.2014, 20:42   #6
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

то есть как бы тот же веник, только в другой руке?
Sibedir вне форума Ответить с цитированием
Старый 18.08.2014, 21:39   #7
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
то есть как бы тот же веник, только в другой руке?
Рука моя просто на пару локтей длиннее.
Человек_Борща вне форума Ответить с цитированием
Старый 19.08.2014, 02:19   #8
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Это он и есть. Ты ставишь свой аналогичный метод на мето оригинального, а оригинал вызываешь внутри себя.
Давай не будем все полулегальные способы называть хуками. В боксе есть и иные красивозвучащие термины. Например апперкот
northener вне форума Ответить с цитированием
Старый 19.08.2014, 02:51   #9
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Ну и хотелось бы увидеть пример кода.
northener вне форума Ответить с цитированием
Старый 19.08.2014, 06:01   #10
Sibedir
Тот ещё
Старожил
 
Аватар для Sibedir
 
Регистрация: 14.11.2007
Сообщений: 2,242
По умолчанию

Так в таком случае дело не в самом коде, а в способе переопределения указателя. Видимо нужно изучать работу с RemoteThread.
Sibedir вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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