Как запретить чужой программе закрыться?

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Re: Как запретить чужой программе закрыться?

Сообщение Twister » 12.01.2011 (Ср) 13:11

А ты уверен, что поток в замороженном состоянии съест APC?
На сто процентов. Лови аттач. :)
Имеем самый лёгкий, короткий и на сто процентов документированный способ ;)

Правда есть одно НО.
Мы не освобождаем выделенную под строку память, т.к. не знаем когда выполнится APC. По хорошему нужно просто найти в АП процесса свободный кусок и писать строку туда.

А теперь сюрприз: делая DLL-лку на VB, у нас нет привилегии объявить свою DllMain-функцию
Да нафиг вообще с этим мучиться? Только если в академических целях. Если хочется бейсика, то можно заюзать PowerBasic или иже с ним.
Вложения
InjectDLL_APC.rar
(164.54 Кб) Скачиваний: 46
А я все практикую лечение травами...

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Как запретить чужой программе закрыться?

Сообщение Хакер » 12.01.2011 (Ср) 13:17

Twister писал(а):Да нафиг вообще с этим мучиться? Только если в академических целях. Если хочется бейсика, то можно заюзать PowerBasic или иже с ним.

Лол.

Ну как бы весь разговор строится на том базисе, что хоть другие языки и техники и могут быть применены, конкретно топик-стартер интересуется реализацией задуманного на VB без всяких выкрутасов. Я такую реализацию предложил.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Re: Как запретить чужой программе закрыться?

Сообщение Twister » 12.01.2011 (Ср) 13:22

Выбор языка должен опираться на специфику задачи. Если на VB это сделать сложнее чем на Delphi, то писать надо на Delphi. Всё остальное, как я уже говорил - академика. Впрочем, я сам иногда делаю что-нибудь только в академических целях, поэтому рвение Артура реализовать это на VB могу лишь похвалить.
А я все практикую лечение травами...

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Как запретить чужой программе закрыться?

Сообщение Хакер » 12.01.2011 (Ср) 13:24

Ждём, что скажет виновник торжества.

З.Ы.
Если на VB это сделать сложнее чем на Delphi, то писать надо на Delphi.

При наличии модуля, на VB таки оказывается проще.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Re: Как запретить чужой программе закрыться?

Сообщение Twister » 12.01.2011 (Ср) 13:28

При наличии модуля, на VB таки оказывается проще.

Не хочу раздувать холивар, но с удовольствием бы услышал а ЧЕМ ПРОЩЕ-ТО? :roll:
А я все практикую лечение травами...

NashRus
Постоялец
Постоялец
 
Сообщения: 388
Зарегистрирован: 18.03.2006 (Сб) 1:16

Re: Как запретить чужой программе закрыться?

Сообщение NashRus » 12.01.2011 (Ср) 23:00

Т.е. спустя 12 лет так и нет отлаженного способа сабклассить окно чужого процесса?
Я думал в кирпичах что-то такое лежало межпроцессорное. И в буржунете.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Как запретить чужой программе закрыться?

Сообщение Antonariy » 12.01.2011 (Ср) 23:10

А мне за 12 лет это ни разу не понадобилось. Может я чем-то не тем занимаюсь?
Лучший способ понять что-то самому — объяснить это другому.

NashRus
Постоялец
Постоялец
 
Сообщения: 388
Зарегистрирован: 18.03.2006 (Сб) 1:16

Re: Как запретить чужой программе закрыться?

Сообщение NashRus » 12.01.2011 (Ср) 23:34

2Antonariy, аналогично, но это оффтопик.
Понятно, что эту задачу надо "по идее" решить в общем случае для движения вперед нашего любимого VB6.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Как запретить чужой программе закрыться?

Сообщение Antonariy » 12.01.2011 (Ср) 23:49

движения вперед
Смешно. Думаешь, кого-то устаревшая технология заинтересует только потому, что титаническим извратом на ней можно сделать то, для чего она не предназначена?
Лучший способ понять что-то самому — объяснить это другому.

NashRus
Постоялец
Постоялец
 
Сообщения: 388
Зарегистрирован: 18.03.2006 (Сб) 1:16

Re: Как запретить чужой программе закрыться?

Сообщение NashRus » 13.01.2011 (Чт) 0:36

Я вообще не понимаю про что ты говоришь.

Ты тоже работаешь на устаревшей технологии? Все устраивает или есть что подправить?
Или вообще ничего нельзя подправить, но зачем ты здесь?

А может быть встать над полем битвы и подготовиться к будущим, а не прошлым сражениям, если мы такие продвинутые ?

PS: ладно, конечно понимаю, про что ты говоришь. но я, например, имею достаточно практические цели в педалировании данной темы/технологии.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Как запретить чужой программе закрыться?

Сообщение Antonariy » 13.01.2011 (Чт) 1:06

Ты тоже работаешь на устаревшей технологии?
Нет, я перешел на .net. Именно потому, что не устраивала устаревшая технология. Я работаю с большим приложением (не моим изначально), которое стало натыкаться, например, на физические ограничения на объем кода в модуле. А после рефакторинга (получилось под две сотни модулей) и ужатия стало периодически необъяснимо валиться, утаскивая за собой веб-сервер (это iis dll). После тупой конвертации мастером и исправления его ошибок все заработало как по маслу. И быстрее почему-то, несмотря на рассуждения Хакера о концептуальной ущербности дотнета.
Лучший способ понять что-то самому — объяснить это другому.

NashRus
Постоялец
Постоялец
 
Сообщения: 388
Зарегистрирован: 18.03.2006 (Сб) 1:16

Re: Как запретить чужой программе закрыться?

Сообщение NashRus » 13.01.2011 (Чт) 1:21

А с чего конвертировали две сотни модулей? Если Вб6, то это вопрос дизайна?

и с какого проекта парадигмы спрыгнули как по маслу?

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Как запретить чужой программе закрыться?

Сообщение Хакер » 13.01.2011 (Чт) 3:07

NashRus писал(а):Т.е. спустя 12 лет так и нет отлаженного способа сабклассить окно чужого процесса?

В смысле, нет?

Вообще, ничего сложного нет: внедрились и сабклассим (как делает Spy++). Если внедрятель на VB, а внедряемый — на чём-то похитрее, проблем нет. Если внедряемый на VB, то это либо кусочек кода из нашего модуля, либо целиком чужой модуль. Если первое — надо как-то обеспечить, чтобы код хорошо себя чувствовал в чужом окружении. Технически это нисколько не сложно, просто много кода. Если второе — надо найти либо способ разместить код в DllMain (FNDLL решает этот вопрос), либо способ занести процедуру в экспорты (FNDLL решает этот вопрос), либо придумать ещё какой-то свой (например, основанный на поиске по сигнатуре) способ найти нужную функцию в чужом модуле.

Иногда, для того, чтобы «обеспечить, чтобы код хорошо себя чувствовал в чужом окружении» вообще ничего предпринимать не нужно.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Как запретить чужой программе закрыться?

Сообщение Antonariy » 13.01.2011 (Чт) 15:10

NashRus писал(а):А с чего конвертировали две сотни модулей? Если Вб6, то это вопрос дизайна?

и с какого проекта парадигмы спрыгнули как по маслу?

С чего, в смысле сфига ли? Какого дизайна? Какой парадигмы?
Честно, смысла вопросов вообще не понял.
Лучший способ понять что-то самому — объяснить это другому.

NashRus
Постоялец
Постоялец
 
Сообщения: 388
Зарегистрирован: 18.03.2006 (Сб) 1:16

Re: Как запретить чужой программе закрыться?

Сообщение NashRus » 13.01.2011 (Чт) 17:13

Antonariy писал(а):
NashRus писал(а):А с чего конвертировали две сотни модулей? Если Вб6, то это вопрос дизайна?

и с какого проекта парадигмы спрыгнули как по маслу?

С чего, в смысле сфига ли? Какого дизайна? Какой парадигмы?
Честно, смысла вопросов вообще не понял.


Я имел в виду следующие вопросы:
- какой язык был изначально (А с чего конвертировали две сотни модулей?),
- может быть была возможность изменить архитектуру проекта таким образом, чтобы были относительно самодостаточные бинарные единицы / единицы компиляции, которые легче поддерживать, чем один большой монолитный бинарник (Если Вб6, то это вопрос дизайна?),
- какой тип проекта (в терминах студии/IDE) был и какого направления (десктоп/веб/многозвенка и т.д.) и на что именно перешли, что прошло все так гладко (и с какого проекта парадигмы спрыгнули как по маслу?)

NashRus
Постоялец
Постоялец
 
Сообщения: 388
Зарегистрирован: 18.03.2006 (Сб) 1:16

Re: Как запретить чужой программе закрыться?

Сообщение NashRus » 13.01.2011 (Чт) 17:32

Antonariy писал(а):И быстрее почему-то, несмотря на рассуждения Хакера о концептуальной ущербности дотнета.


У меня тоже такие ощущения с ASP были. Как-то долго этот VBScript интерпретируется/работает. Не спасает ситуацию даже компиляция в проект VB6 COM DLL c инкапсуляцией вообще практически всего в этот проект, т.е. ASP страница - это CreateObject и obj.Run и все.

К примеру, недавно делал Full Text Search проект на базе Ms SQL. Сначала сделал макет на VB6 и под Win 2008 IIS x64 его, а потом честный ASP.NET 4.0 Win 2008 IIS x64.
Понятно, что MsSQL одинаково работает, но вот с поисковой выдачей еще много действий производится.
Так вот даже на глаз dot.net проект был шустрее. Хотя, конечно, COM Dll была х86 и выполнялась во всяких режимах и контейнерах совместимости.
А ведь есть еще нагрузочное тестирование и реальный проект в инете с посещаемостью 70K-100K уников в день.

Лет 10 назад делал на VC++ ISAPI фильтры и расширения - вот была реальная скорость, но это было давно и ущербно.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Re: Как запретить чужой программе закрыться?

Сообщение Antonariy » 13.01.2011 (Чт) 18:01

- какой язык был изначально (А с чего конвертировали две сотни модулей?),
С VB6, объем исходников 7мб, большая часть кода в 4 модулях, всего было 25.
- может быть была возможность изменить архитектуру проекта таким образом, чтобы были относительно самодостаточные бинарные единицы / единицы компиляции, которые легче поддерживать, чем один большой монолитный бинарник (Если Вб6, то это вопрос дизайна?),
Между смысловыми единицами слишком много зависимостей, чтобы разносить по разным библиотекам. Поэтому пришлось ограничиться классами. Впрочем, удалось выскрести движок с парсером в отдельную библиотеку, но 95% кода это бизнес-логика.
- какой тип проекта (в терминах студии/IDE) был и какого направления (десктоп/веб/многозвенка и т.д.) и на что именно перешли, что прошло все так гладко
Было ActiveX dll, используемая под IIS. Стала .net dll, подключенная к простенькому aspx-файлу. Гладко прошло потому что программу писал человек, знающий VB довольно средненько, дальше структурного программирования не продвинувшийся, даже ни одной api не было использовано.
Лучший способ понять что-то самому — объяснить это другому.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Re: Как запретить чужой программе закрыться?

Сообщение Хакер » 13.01.2011 (Чт) 19:20

Stop offtop.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

Пред.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 89

    TopList