Сейчас на форуме: _MBK_, ut2004, vsv1 (+7 невидимых)

 eXeL@B —› Вопросы новичков —› Перехват параметров функции месаджа
Посл.ответ Сообщение

Ранг: 8.4 (гость)
Активность: 0.020
Статус: Участник

Создано: 03 января 2007 03:53
· Личное сообщение · #1

Есть делфийсая программа выводящая TMessageForm. Как написать код на делфи который бы перехватывал параметры (текст) передаваемые в это message.




Ранг: 240.5 (наставник)
Активность: 0.190
Статус: Участник
Author of ACKiller

Создано: 03 января 2007 05:58
· Личное сообщение · #2

Как обычный апи шпион - подгружаем свою библу, она ищет адрес TMessageForm.Show (или что тебе нужно), подменяет первые байты на jmp myHookProc, которая анализирует параметры и возвращает управление на оригинал.

Или почитай Перехват API функций в Windows NT (часть 1). Основы перехвата. http://wasm.ru/article.php?article=apihook_1 by Ms-Rem



Ранг: 8.4 (гость)
Активность: 0.020
Статус: Участник

Создано: 03 января 2007 06:16 · Поправил: Cracker Free
· Личное сообщение · #3

мдя невесело а как нить через hook?



Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 03 января 2007 08:04
· Личное сообщение · #4

Cracker Free пишет:
как нить через hook?

Увы Борланд не сделал готовых хуков. Их делает только наш любимый МС



Ранг: 8.4 (гость)
Активность: 0.020
Статус: Участник

Создано: 03 января 2007 08:17
· Личное сообщение · #5

MC - это MS Visual C++? На 6.0 как реально?



Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 04 января 2007 02:46
· Личное сообщение · #6

Cracker Free пишет:
MC - это MS Visual C++? На 6.0 как реально?

МС - это Микрософт. В ОС Виндовс есть готовый аппарат хуков для Windows API. А свои хуки можно писать на чем угодно, хоть хекс-редактором. Я тогда не понял твой вопрос. На Дельфи без ассемблерных вставок проблематично(для новичка) написать программу ставящую хук- все остальное спокойно на Дельфи пишется, если понимаешь что такое передача параметров. Нужные JMP можно поставить и хекс-редактором и через Олли - тут уж дело вкуса и умения.



Ранг: 8.4 (гость)
Активность: 0.020
Статус: Участник

Создано: 04 января 2007 03:02
· Личное сообщение · #7

мои ламерские вопросы наверное никто не понимает. мне не совсем хук нужен. По моему мне нужна WinAPI ф-я. Есть же на delphi такая фигня:
ShowMessage('Месага');
Т.в. чужая программа (т.е. не моя) выводит такое сообщение. Как мне теперь уже из своей программы получить текст 'Месага'. пытался так
var
txtLength : integer;
buffer: string;
meswindow:hwnd;
begin
TxtLength := SendMessage(meswindow, WM_GETTEXTLENGTH, 0, 0);
txtlength := txtlength + 1;
setlength (buffer, txtlength);
sendmessage (meswindow,wm_gettext, txtlength, longint(@buffer[1]));
result := buffer;
Но в итоге получаю заголовок месаджа, а не его содержание.
В общем Как получить текст который вывелся в месадж?



Ранг: 213.5 (наставник)
Активность: 0.120
Статус: Участник
забанен

Создано: 04 января 2007 03:30
· Личное сообщение · #8

Cracker Free пишет:
мои ламерские вопросы наверное никто не понимает

Кто тебе сказал, что не понимают…
Вот тема, которую ты раньше создавал, ты ее читал?
http://exelab.ru/f/action=vthread&topic=7250&forum=5&page= -1

вот тема где это обсуждалось уже, читай ее до конца!
Там именно ответ на твой вопрос, если конечно поймешь, о чем там речь
http://exelab.ru/f/action=vthread&forum=5&topic=5730&page= 0

чтобы рассказать, как это делать нужно будет делать тутор не меньше 4-5 страниц
не спорю, может и найдется человек, который тебе объяснит, как это делается, но я сильно сомневаюсь…

-----
ЗЫ: истЕна где-то рядом, Welcome@Google.com




Ранг: 310.8 (мудрец), 29thx
Активность: 0.430
Статус: Участник

Создано: 05 января 2007 02:09
· Личное сообщение · #9

Cracker Free
www.netcode.ru/cpp/?artID=3844
Ты просто не тому элементу послал сообщение. Для окна получишь его заголовок. Ты должен по дереву окошек( кнопки и статические тексты, тоже ими являются) найти текст и послать сообщение ему - тогда ты его получишь. По дереву можно лазить через утилиту spy++(из Visual Studio) или InqSoft




Ранг: 240.5 (наставник)
Активность: 0.190
Статус: Участник
Author of ACKiller

Создано: 05 января 2007 02:17
· Личное сообщение · #10

tundra37 пишет:
Ты просто не тому элементу послал сообщение. Для окна получишь его заголовок. Ты должен по дереву окошек( кнопки и статические тексты, тоже ими являются) найти текст и послать сообщение ему - тогда ты его получишь.

Дело в том, что текст - это рисунок, который малюется при создании окна, в 1-й теме я об этом уже написал. Так что легкими GetWindowText здесь не обойтись.


 eXeL@B —› Вопросы новичков —› Перехват параметров функции месаджа
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати