Сейчас на форуме: jinoweb, bartolomeo (+5 невидимых) |
eXeL@B —› Программирование —› API - функция для VB |
Посл.ответ | Сообщение |
|
Создано: 23 октября 2016 17:06 · Личное сообщение · #1 |
|
Создано: 23 октября 2016 17:17 · Поправил: mysterio · Личное сообщение · #2 не понравится на русском upd: у __vbaNew2 5 параметров. ----- Don_t hate the cracker - hate the code. |
|
Создано: 23 октября 2016 17:58 · Личное сообщение · #3 |
|
Создано: 24 октября 2016 21:09 · Личное сообщение · #4 |
|
Создано: 25 октября 2016 10:40 · Личное сообщение · #5 |
|
Создано: 26 октября 2016 17:25 · Личное сообщение · #6 |
|
Создано: 26 октября 2016 17:48 · Поправил: GPcH · Личное сообщение · #7 Isaev пишет: GPcH у тебя на сайте раньше вроде где-то дока была по этой теме, потом потерялась из виду убрал ссылку или переместилось куда? Ничего никуда не удалялось. Только у сайта редизайн был. Все тут: К слову в плане VB6 я писал только по декомпиляции форм и декомпиляции P-Code в уме. ----- Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе! | Сообщение посчитали полезным: ksol, Isaev |
|
Создано: 26 октября 2016 18:01 · Личное сообщение · #8 |
|
Создано: 26 октября 2016 18:37 · Личное сообщение · #9 |
|
Создано: 26 октября 2016 20:50 · Личное сообщение · #10 |
|
Создано: 27 октября 2016 11:05 · Личное сообщение · #11 Показ формы в VB6 обычно производится так: Создается копия объекта 00401364 Code:
Получаем адрес виртуальной таблицы адресов пропертей и методов Code:
Вызываем Property/Method формы. В данном случае 2B0 - это Show Code:
Весь натив код VB6 - это сплошное COM/OLE. Логика анализа нужна немного другая. ----- Никогда не делай то, что возможно. Стремись сделать то что невозможно впринципе! | Сообщение посчитали полезным: DenCoder |
|
Создано: 27 октября 2016 17:56 · Личное сообщение · #12 GPcH - Спасибо за обстоятельное разъяснение! Собственно вопрос о __vbaNew2 стал ясен. Но возникли другие: Show - это открыть форму, а можно ли как-то задать в коде закрыть уже открытую форму, или задать в её свойствах значение что-то типа Visible=false, чтобы она не открывалась совсем; и другой вопрос - на другой форме стоит скрытый таймер, который через 10с её закрывает. Похоже эти 10с заданы в свойствах формы. Не подскажете как их найти, чтобы заменить на 0. |
|
Создано: 27 октября 2016 18:46 · Поправил: DenCoder · Личное сообщение · #13 ksol Поделюсь своими соображениями ksol пишет: Show - это открыть форму, а можно ли как-то задать в коде закрыть уже открытую форм По идее, когда получена инфа где находится и как устроена таблица, либо реверсом найти, либо как-то отловить SendMessage(hWnd, WM_CLOSE, NULL, NULL) и дальше по кросс-рефам выйти на искомый адрес в этой таблице. ksol пишет: или задать в её свойствах значение что-то типа Visible=false Если метод Show показывает форму, то он должен вызывать api ShowWindow(hWnd, SW_SHOW) // SW_SHOW = 5 Чтобы найти метод Hide должно быть достаточно найти аналогичный код с вызовом ShowWindow(hWnd, SW_HIDE) // SW_HIDE = 0 Получение/Установка что дельфишных, что барсиковых свойств вызывает соответствующие методы get или set, насколько помню, в которых и будут вызовы соответствующих апи-функций. .... ksol пишет: Похоже эти 10с заданы в свойствах формы. Скорее в коде при инициализации формы или после вызова Show инициализируется таймер с периодом в 10с. Это делается функцией SetTimer(), но необязательно, может быть и по-другому реализовано. ----- IZ.RU | Сообщение посчитали полезным: ksol |
|
Создано: 28 октября 2016 17:35 · Личное сообщение · #14 DenCoder - Спасибо, много всякого сказали! - есть что посмотреть! Скорее всего устанавливать в отладчике ВР прямо на API SendMessage(), ShowWindow() не возможно будет, если они вызываются из бейсиковских типа get(), set(). Это вы хорошо, предусмотрительно показали значения SW_SHOW и SW_HIDE - если найду апи, вставлю! |
|
Создано: 28 октября 2016 17:49 · Личное сообщение · #15 ksol В гуе фактически можно выделить три типа функционала, это если обобщить фундаментально разные механизмы. Их необходимо понимать, если вы начали дебажить шадов(гуй). 1. Есть непосредственно вызов ядерного сервиса, который выполняет задачу. 2. Есть теневой вызов из ядра при исполнении сервиса для юзер нотифи(apfn-dispatch). Так доставляются любые сообщения и выполняется механизм хуков. 3. Существует gdi batching", пакетная обработка запроса в ядро при выполнении любого сервиса. Так например можно отрисовать текст через сервис, который генерит звук ----- vx |
|
Создано: 29 октября 2016 12:13 · Личное сообщение · #16 ksol пишет: Скорее всего устанавливать в отладчике ВР прямо на API SendMessage(), ShowWindow() не возможно будет, если они вызываются из бейсиковских типа get(), set(). Почему невозможно? user32.dll никто не отменял! И SendMessage и ShowWindow там. Упомянутые difexacaw сервисы вызываются оттуда для этих апи. Только бряк SendMessage() если только условный ставить, а то их много вызовов... ----- IZ.RU |
|
Создано: 29 октября 2016 17:59 · Личное сообщение · #17 |
|
Создано: 29 октября 2016 21:14 · Личное сообщение · #18 ksol пишет: а обращение к SendMessage не находит совсем. Я предположил, что для закрытия формы посылается WM_CLOSE. Вероятно, форма не разрушается, а просто прячется. Так что та же ShowWindow() должна срабатывать. ksol пишет: BP ShowWindow срабатывает! Больше ничего с ней пока не проверял Дальше по стеку смотрите, кто её вызывает, и выйдете на метод из таблицы формы. Добавлено спустя 2 минуты Может быть несколько "прокладок" между ShowWindow() и методом формы. ----- IZ.RU | Сообщение посчитали полезным: ksol |
|
Создано: 30 октября 2016 17:45 · Личное сообщение · #19 |
eXeL@B —› Программирование —› API - функция для VB |
Эта тема закрыта. Ответы больше не принимаются. |