Сейчас на форуме: asfa (+5 невидимых) |
![]() |
eXeL@B —› Вопросы новичков —› В поисках ShowMessage |
Посл.ответ | Сообщение |
|
Создано: 19 апреля 2010 11:34 · Поправил: ZLOvar · Личное сообщение · #1 Не секрет, что многие программисты на Делфи, используют для оповещения пользователя о зареганости\незареганости программы API функцию ShowMessage( MessageText : String ); а не MessageBox. Так вот, как поставить бряк на эту функцию? ShowWindow, естественно, не подходит. Всем заранее огромное спасибо. (и заранее сорри, если задал нубовский вопрос). ![]() |
|
Создано: 19 апреля 2010 11:52 · Личное сообщение · #2 |
|
Создано: 19 апреля 2010 12:11 · Личное сообщение · #3 |
|
Создано: 19 апреля 2010 12:19 · Поправил: ZLOvar · Личное сообщение · #4 BoRoV Ой сорри - не заметил ,что ответ не мне адресован NikolayD bpx ShowMessage не срабатывает. bp ShowMessage - commandBar выдаёт ,что мол "Inkognitov Idefenter" (неизвестный индификатор) ЗЫ Я заранее извинился за нубовский вопрос! ![]() |
|
Создано: 19 апреля 2010 12:19 · Поправил: NikolayD · Личное сообщение · #5 |
|
Создано: 19 апреля 2010 12:24 · Личное сообщение · #6 |
|
Создано: 19 апреля 2010 12:24 · Поправил: BoRoV · Личное сообщение · #7 |
|
Создано: 19 апреля 2010 12:27 · Личное сообщение · #8 |
|
Создано: 19 апреля 2010 12:27 · Личное сообщение · #9 NikolayD пишет: Среда программирования Делфи 7 есть? Создай новый проект, процедуру Button1Click и туда пропиши:ShowMessage('Это ф-ия Делфи - ShowMessage!');затем скомпилируй и попробуй это забрейкпоинтовить ))~~~~~~~~~~~~~~~~~ P.S На каком языке программишь? нету и не будет, сделай как говоришь и залей если не впадлу. Пытаюсь под с и асм. ![]() |
|
Создано: 19 апреля 2010 12:28 · Поправил: ZLOvar · Личное сообщение · #10 |
|
Создано: 19 апреля 2010 12:47 · Личное сообщение · #11 ZLOvar пишет: Я так понимаю меня ждёт msdn и google? msdn здесь не сильно поможет, а в гугл ты не пойжешь :D ну как я понял у тя это месага о результате проверки, значит должна быть кнопка которая вызывает эту проверку, или там например событие изменения текста в поле, что-то типо такого, но какое-то событие точно же вызывает проверку, возьми IDR, декомпильни в нем, найди событие которое вызывает проверку, поставь на его начало бряк, потом вызови это событие, когда остановится на бряке отпусти по Ctrl+F8 до появления месаги, когда месага появится ничего не делай только открой окно ольки и поставь паузу на отладке, ты будешь гдето в недрах системы, потом потрасируй по Ф8 пока не выйдешь в делфи код, там ты и найжешь свое ShowMessage. а еще лучше после того как отдекомпилил так как я сказал, сохрани MAP файл, а потом с помощь плагина mapimp(!) всунь этот мап в ольку, и увидишь много интересного ![]() ----- Лучше быть одиноким, но свободным © $me ![]() |
|
Создано: 19 апреля 2010 12:51 · Личное сообщение · #12 |
|
Создано: 19 апреля 2010 12:54 · Поправил: ZLOvar · Личное сообщение · #13 |
|
Создано: 19 апреля 2010 13:16 · Личное сообщение · #14 |
|
Создано: 19 апреля 2010 13:17 · Поправил: Coderess · Личное сообщение · #15 Давай эксперемент проведем, создам сейчас приложение на Delphi выводящее ShowMessage() Code:
Грузим в олю, ставим bp ShowWindow -> F9 Всплывает оля при выполнение ShowWindow Code:
Идем долго до такого места, цикл сообщений в котором прорисовывается ShowMessage Code:
Сам цикл с 0044DA89 по 0044DAC9, далее вызовы SendMessage и GetActiveWindow идем до retn еще чуть спускаемся и находим Code:
Незнаю на сколько удобно и просто, но я так нахожу ![]() ----- Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes ![]() |
|
Создано: 19 апреля 2010 13:58 · Личное сообщение · #16 |
|
Создано: 19 апреля 2010 15:29 · Личное сообщение · #17 |
|
Создано: 19 апреля 2010 15:55 · Личное сообщение · #18 |
|
Создано: 20 апреля 2010 12:26 · Поправил: ZLOvar · Личное сообщение · #19 MasterSoft, Coderess Можно и так, но я вчера нашёл способ похлеще. Значит так, ф-ия ShowMessage вызывает ф-ию ShowMessagePos, та вызывает ф-ию ShowMessagePosHelp, а она уже в свою очередь, как BoRoV сказал, вызывает CreateMessageDlg. Последняя состоит в основном из делфиского кода, но я нашёл в ней вызов нескольких апишек, вот они: 1. DrawTextA/W - самая крутая ,т.к по ней можно не только забрякать сам ShowMessage но и посмотреть, что за текст там выводится, и найти его в дампе. 2. SetTextColor - Немного похуже, но тоже подходит. там ещё и 3 и 4 было, но я пока дела пока что, позабывал... ~~~~~~~~~~~~~~~~~~~~~~~~~~~ Единственный минус всех апишек, они сначала вызываются при показе самого окна, а потом уже месяги. Поетому там ещё нужно поизвращятся с размерами окна олли, ну и после всего этого, смотрим в стеке на АПИ ф-ию, там в одном из параметров, должен передаться текст месяги. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~` Потом ещё немного трассировочки, выходим из всяких там ShowMessagePos/Help и оказываемся непосредственно у строчки с вызовом ShowMessage. ![]() P.S. SVLab, у кракера может и не быть вообще никакого IDR. P.P.S. BoRoV, Спасибо ![]() ![]() |
|
Создано: 20 апреля 2010 13:53 · Поправил: Coderess · Личное сообщение · #20 1. SetTextA/W - самая крутая ,т.к по ней можно не только забрякать сам ShowMessage но и посмотреть, что за текст там выводится .и найди его в дампе. Наверное она называется SetWindowText(A,W) ЗЫ: Наверное тему стоит переименовать в "В поисках ShowMessage" ----- Gutta cavat lapidem. Feci, quod potui. Faciant meliora potentes ![]() |
|
Создано: 21 апреля 2010 11:46 · Поправил: ZLOvar · Личное сообщение · #21 Coderess Нет, именно DrawTextA/W. Потому что она отвечает за текст в сообщении. А насчёт SetWindowText(A,W) ,если память не изменяет, то вот: ~~~~~~~~~~~~~~~~~~~~~~~ Используется эта функция для изменения заголовка своего\чужого окна. В принципе, в поиске ShowMessage может помочь, но я не проверял. Вот описание ф-и: SetWindowText( Wnd : HWND, // Идентификатор окна, у которого будем изменять заголовок. Str : PChar // Собственно, сама строка. ); Можно попробывать поймать месагу, просто поставить bp или bpx SetWindowTextA\W. + Можно поставить BMP ON AССESS на строку, но она может быть и зашифрована. ~~~~~~~~~~~~~~~~~~~~~~~ Кто хочет, можете попробывать все варианты, описанные здесь для поиска коварного ShowMessage. О результатах отпишитесь. Coderess пишет: Наверное тему стоит переименовать в "В поисках ShowMessage" Неплохая идея! Модератор, организуй, если можно ![]() P.S Пишу так досканально, потому что нас читают новички, и могут просто не понять о чём речь ![]() P.P.S Я думаю, после всего описанного здесь, ShowMessage точно не уйдёт от точки останова! ![]() P.P.P.S 22-04-2010: Было исправлено несколько сообщений, потому что там были написаны неверные имена АПИ функций. ![]() |
![]() |
eXeL@B —› Вопросы новичков —› В поисках ShowMessage |