![]() |
eXeL@B —› Вопросы новичков —› Перехват параметров функции месаджа |
Посл.ответ | Сообщение |
|
Создано: 03 января 2007 03:53 · Личное сообщение · #1 |
|
Создано: 03 января 2007 05:58 · Личное сообщение · #2 Как обычный апи шпион - подгружаем свою библу, она ищет адрес TMessageForm.Show (или что тебе нужно), подменяет первые байты на jmp myHookProc, которая анализирует параметры и возвращает управление на оригинал. Или почитай Перехват API функций в Windows NT (часть 1). Основы перехвата. http://wasm.ru/article.php?article=apihook_1 by Ms-Rem ![]() |
|
Создано: 03 января 2007 06:16 · Поправил: Cracker Free · Личное сообщение · #3 |
|
Создано: 03 января 2007 08:04 · Личное сообщение · #4 |
|
Создано: 03 января 2007 08:17 · Личное сообщение · #5 |
|
Создано: 04 января 2007 02:46 · Личное сообщение · #6 Cracker Free пишет: MC - это MS Visual C++? На 6.0 как реально? МС - это Микрософт. В ОС Виндовс есть готовый аппарат хуков для Windows API. А свои хуки можно писать на чем угодно, хоть хекс-редактором. Я тогда не понял твой вопрос. На Дельфи без ассемблерных вставок проблематично(для новичка) написать программу ставящую хук- все остальное спокойно на Дельфи пишется, если понимаешь что такое передача параметров. Нужные JMP можно поставить и хекс-редактором и через Олли - тут уж дело вкуса и умения. ![]() |
|
Создано: 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; Но в итоге получаю заголовок месаджа, а не его содержание. В общем Как получить текст который вывелся в месадж? ![]() |
|
Создано: 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 ![]() |
|
Создано: 05 января 2007 02:09 · Личное сообщение · #9 Cracker Free www.netcode.ru/cpp/?artID=3844 Ты просто не тому элементу послал сообщение. Для окна получишь его заголовок. Ты должен по дереву окошек( кнопки и статические тексты, тоже ими являются) найти текст и послать сообщение ему - тогда ты его получишь. По дереву можно лазить через утилиту spy++(из Visual Studio) или InqSoft ![]() |
|
Создано: 05 января 2007 02:17 · Личное сообщение · #10 tundra37 пишет: Ты просто не тому элементу послал сообщение. Для окна получишь его заголовок. Ты должен по дереву окошек( кнопки и статические тексты, тоже ими являются) найти текст и послать сообщение ему - тогда ты его получишь. Дело в том, что текст - это рисунок, который малюется при создании окна, в 1-й теме я об этом уже написал. Так что легкими GetWindowText здесь не обойтись. ![]() |
![]() |
eXeL@B —› Вопросы новичков —› Перехват параметров функции месаджа |