Сейчас на форуме: Slinger (+6 невидимых) |
![]() |
eXeL@B —› Основной форум —› Как убить окно? |
Посл.ответ | Сообщение |
|
Создано: 03 февраля 2007 05:05 · Личное сообщение · #1 Собственно есть прога на delphi. Перед запуском появляется окно с кнопкой ОК. Я хочу избавиться от этого окна, чтобы при запуске прога миновало окно и сразу запускалась главная форма. Насколько я правильно понимаю softice работает непосредственно с памятью. Что мне нужно сделать? Найти адрес, по которому выскакивает окно и пропатчить exe-шник по этому адресу? Или что вообще нужно проделать? P.S. Патч буду писать скорее всего на delphi. ![]() |
|
Создано: 03 февраля 2007 05:09 · Личное сообщение · #2 |
|
Создано: 03 февраля 2007 05:10 · Личное сообщение · #3 Osmosis_Johnes В софт айсе ставиш бряк на MessageBoxA ловиш это окно, затем выписываеш адресс вызова этого окна на бумажечку, в HIEW загружаеш прогу и ищеш вызов этого мессагебокса, затем все зависит от твоей фантазии, можеш занопить этот участок кода, можеш перед ним написать JMP и т.д. и т.п. была бы фантазия. ![]() |
|
Создано: 03 февраля 2007 05:16 · Личное сообщение · #4 |
|
Создано: 03 февраля 2007 05:17 · Личное сообщение · #5 |
|
Создано: 03 февраля 2007 05:34 · Личное сообщение · #6 |
|
Создано: 03 февраля 2007 05:37 · Личное сообщение · #7 |
|
Создано: 03 февраля 2007 05:57 · Личное сообщение · #8 |
|
Создано: 03 февраля 2007 06:25 · Личное сообщение · #9 |
|
Создано: 03 февраля 2007 10:27 · Личное сообщение · #10 |
|
Создано: 03 февраля 2007 10:38 · Личное сообщение · #11 |
|
Создано: 04 февраля 2007 05:24 · Личное сообщение · #12 |
|
Создано: 04 февраля 2007 05:28 · Личное сообщение · #13 |
|
Создано: 04 февраля 2007 15:29 · Личное сообщение · #14 |
|
Создано: 06 февраля 2007 04:58 · Личное сообщение · #15 MessageBoxA - не помогает. У меня не окно типа MessageBox, а небольшая формочка с кнопкой ОК, по нажатию на которую окно исчезает и появляется другое окно. Мне необходимо поставить бряк на первое окно с кнопкой ОК и в последствии избавиться от него. Какое имя брекпоинта на обычное окно-форму (написана на delphi)??? ![]() |
|
Создано: 06 февраля 2007 05:04 · Личное сообщение · #16 |
|
Создано: 06 февраля 2007 05:20 · Личное сообщение · #17 |
|
Создано: 06 февраля 2007 10:14 · Личное сообщение · #18 Osmosis_Johnes конечно, это не тот способ к которому ты стремился, Но не придётся даже ничего NOP ить ![]() Не крутой способ, но работает частенько. Открываешь программу в Resource Hacker'е Ищешь окошко со своей кнопкой "Ок" Вот пример: object btnOK: TBitBtn <-(Наша кнопка ![]() Left = 13 Top = 244 Width = 98 Height = 24 Caption = 'Ок' Font.Charset = RUSSIAN_CHARSET Font.Color = clWindowText Font.Height = -12 Font.Name = 'MS Sans Serif' Font.Style = [] ParentFont = False TabOrder = 5 OnClick = btnOKClick <-(Действие которое происходит по нажатию кнопки "Ок") Kind = bkOK end Подписываешь в конец всего на данной форме вот это таймер object TmОк: TTimer Enabled = True Interval = 1 Left = 10 Top = 10 OnTimer = btnOKClick <-(Действие которое происходит по нажатию кнопки "Ок") end И получится что окно открывается и по истечению данного интервала Interval = 1 будет происходить то же самое если бы ты сам нажал кнопку ![]() ![]() |
|
Создано: 09 февраля 2007 09:52 · Личное сообщение · #19 Да, это конечно способ хороший, но resource hacker вообще не показал мне свойства именно этого окна. Softice-ом я поймал на showwindow это окно: 004589DE CALL USER32! ShowWindow Теперь подскажите пожалуйста что с помощью HIEW прописать в exe-шнике по этому адресу? и в каком лучше виде редактировать (т.е. битовый? word? dword?) ![]() |
|
Создано: 10 февраля 2007 01:17 · Поправил: Gambit · Личное сообщение · #20 |
|
Создано: 10 февраля 2007 23:21 · Личное сообщение · #21 |
|
Создано: 11 февраля 2007 06:40 · Поправил: n1kto · Личное сообщение · #22 Osmosis_Johnes пишет: Softice-ом я поймал на showwindow это окно: 004589DE CALL USER32! ShowWindow если прога на дельфи, это тебе практически ничего не даст. тебе надо отловив showwindow подняться вверх по стеку до кода который обращается к объекту формы (наследнику TForm); получить адрес конкретной формы (где лежит указатель на нее) а затем отловить TForm.create (скорее всего первая запись по этому адресу) и плясать уже отсюда. далее ищутся обращения к этой форме и они уже нопятся. идея, думаю, ясна. ![]() |
![]() |
eXeL@B —› Основной форум —› Как убить окно? |