Перехватить запросы командной строки.

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
The trick
Постоялец
Постоялец
 
Сообщения: 781
Зарегистрирован: 26.06.2010 (Сб) 23:08

Re: Перехватить запросы командной строки.

Сообщение The trick » 16.02.2014 (Вс) 23:03

TrueTrue писал(а):Я так понимаю, это для файла, а что касается памяти? Как в памяти найти нужные байты?
Если ты хочешь делать это методом, который описал я (он будет обламывать все вызовы к ShellExecute(EX)(A/W)), то у тебя есть несколько вариантов. Например ты можешь внедрить код, который получит адрес функции ShellExecuteExW и перепишет ее содержимое, также ты можешь узнать адрес функции непосредственно из своего процесса в чужом процессе. Если ты хочешь убрать только вызов определенной команды, то можно перехватить вызов, и сразу смотреть на стек, наверху будет адрес возврата, проходишь по нему и попадаешь на следующую команду после вызова, соответственно NOPишь предыдущий Call с 1 PUSH'ем перед ним (здесь может на сработать если вызов был не по Call). Но ИМХО заниматься этим в VB6 - куда большее извращение чем открыть отладчик, тот же OllyDbg, поставить бряк на ShellExecuteExW, проследить стек вызовов и заNOPить злополучный Call и PUSH или вместо Call поставить POP если есть место. Там же можно сразу сохранить в EXE.
UA6527P

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

Re: Перехватить запросы командной строки.

Сообщение Хакер » 16.02.2014 (Вс) 23:12

Кривоус Анатолий писал(а):Если ты хочешь делать это методом, который описал я (он будет обламывать все вызовы к ShellExecute(EX)(A/W)),

Чтобы ползоваться методом, который описал ты, он всё равно должен использовать дизассемблер чтобы убедиться, что страница вызывается именно при помощи ShellExecute.

Так что каким бы ни был способ из множества доступных вариантов, первый шаг в любом случае — изучение обстановки дизассемблером и/или отладчиком.

Хотя вру, есть ещё способ: называется действовать наугад.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

The trick
Постоялец
Постоялец
 
Сообщения: 781
Зарегистрирован: 26.06.2010 (Сб) 23:08

Re: Перехватить запросы командной строки.

Сообщение The trick » 16.02.2014 (Вс) 23:16

Чтобы ползоваться методом, который описал ты, он всё равно должен использовать дизассемблер чтобы убедиться, что страница вызывается именно при помощи ShellExecute.
Да, совершенно с Вами согласен, я изначально написал что это лучше делать в отладчике сразу. Но 99% что страница вызывается через ShellExecute.
UA6527P

Mikle
Изобретатель велосипедов
Изобретатель велосипедов
Аватара пользователя
 
Сообщения: 4148
Зарегистрирован: 25.03.2003 (Вт) 14:02
Откуда: Туапсе

Re: Перехватить запросы командной строки.

Сообщение Mikle » 17.02.2014 (Пн) 8:34

А мы даже ещё не выяснили, вдруг ломаемая программа на .NET или чём-то подобном, да хоть на VB6 в P-Code, или упакована каким-нибудь UPX. Весело её будет в дизассемблере разглядывать.

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

Re: Перехватить запросы командной строки.

Сообщение Хакер » 17.02.2014 (Пн) 15:18

Mikle писал(а):А мы даже ещё не выяснили, вдруг ломаемая программа на .NET или чём-то подобном, да хоть на VB6 в P-Code, или упакована каким-нибудь UPX. Весело её будет в дизассемблере разглядывать.

Вот для того, чтобы всё это выяснить, и нужен опять же дизассемблер.

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

FireFenix
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1640
Зарегистрирован: 25.05.2007 (Пт) 10:24
Откуда: Mugen no Sora

Re: Перехватить запросы командной строки.

Сообщение FireFenix » 17.02.2014 (Пн) 20:53

Я просмотрел все посты и до сих пор не понимаю как тема связана с VB (и почему он нужен в этой задачи вообще) и почему она ещё в этом разделе :)

А самое странное, что до сих пор, ни кто не указал ТСу на надпись в красной рамке в верху!
Птицей Гермеса меня называют, свои крылья пожирая... сам себя я укрощаю
私はヘルメスの鳥 私は自らの羽根を喰らい 飼い慣らされる

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 18.02.2014 (Вт) 0:42

Хм.. Я бы написал программу и поставил её дефаултным браузером. А из неё вызывал бы дольше браузер при необходимости. Ну это на случай, если вызывается дефаултный браузер. А то некоторые додумываются до непосредственного вызова IE - жутко бесит :(

На самом деле, я уже некоторое время собираюсь её написать, но никак не доберусь. Только кроме блокирования определённых адресов, я от неё хочу ещё распределение адресов по браузерам. И запрос, на то, какой браузер использовать, если уже есть открытый, а основной (или нужный) не открыт.

PS: А редактирование байтов как правило противоречит лицензионному соглашению ;)
Но я с удовольствием почитаю, как именно это делается :)

TrueTrue
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 167
Зарегистрирован: 20.05.2009 (Ср) 23:18

Re: Перехватить запросы командной строки.

Сообщение TrueTrue » 18.02.2014 (Вт) 23:53

FireFenix писал(а):Я просмотрел все посты и до сих пор не понимаю как тема связана с VB (и почему он нужен в этой задачи вообще) и почему она ещё в этом разделе :)

А самое странное, что до сих пор, ни кто не указал ТСу на надпись в красной рамке в верху!

В любом случае, всем спасибо за ответы и за советы. Если разберусь с дизассемблером, попробую вариант пропатчиванием exe, если нет, напишу подмену браузера.

О каком нарушении речь идёт, я так и не понял.
Нарушений никаких я за собой не наблюдаю, написал в форум по VB6 так как, предполагал, что мой вопрос возможно решить средствами VB. Тему, на усмотритение Админов, можно либо закрыть, либо удалить. Впрочем, если возможно, что бы она повисела, то будет хорошо, там есть парочка постов с ассемблером.

neit95
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 14
Зарегистрирован: 10.03.2013 (Вс) 22:05
Откуда: Калининград

Re: Перехватить запросы командной строки.

Сообщение neit95 » 10.03.2014 (Пн) 1:34

Автор темы вроде уже решил свою проблему, но всё же хотелось добавить ещё один вариант (хоть он и хуже предложенного Хакером): а что, если не "на корню" убивать? Т.е. мы позволим запуститься ие, а потом найдём его в списке окон и убьём процесс?

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Перехватить запросы командной строки.

Сообщение iGrok » 10.03.2014 (Пн) 1:58

neit95 писал(а):Автор темы вроде уже решил свою проблему, но всё же хотелось добавить ещё один вариант (хоть он и хуже предложенного Хакером): а что, если не "на корню" убивать? Т.е. мы позволим запуститься ие, а потом найдём его в списке окон и убьём процесс?

Гениально. А что если запущен ИЕ с другой открытой страницей/кучей вкладок? Прибиваем всё подряд не глядя? :)
label:
cli
jmp label

neit95
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 14
Зарегистрирован: 10.03.2013 (Вс) 22:05
Откуда: Калининград

Re: Перехватить запросы командной строки.

Сообщение neit95 » 10.03.2014 (Пн) 10:15

iGrok писал(а):
neit95 писал(а):Автор темы вроде уже решил свою проблему, но всё же хотелось добавить ещё один вариант (хоть он и хуже предложенного Хакером): а что, если не "на корню" убивать? Т.е. мы позволим запуститься ие, а потом найдём его в списке окон и убьём процесс?

Гениально. А что если запущен ИЕ с другой открытой страницей/кучей вкладок? Прибиваем всё подряд не глядя? :)

Ай, точно. У меня просто до сих пор 6-ой стоит :D

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 11.03.2014 (Вт) 1:41

iGrok писал(а):Гениально. А что если запущен ИЕ с другой открытой страницей/кучей вкладок? Прибиваем всё подряд не глядя?

Эм.. Вроде как IE не single instance и не хромиум, так что если запущен ещё один, то он себе отдельно и живёт. Хотя, могу и ошибаться.
Если имелось в виду, как отличить от других, то по переданной в параметрах командной строки ссылке.

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Re: Перехватить запросы командной строки.

Сообщение iGrok » 11.03.2014 (Вт) 5:19

Qwertiy писал(а):Если имелось в виду, как отличить от других, то по переданной в параметрах командной строки ссылке.

А ты вот попробуй сначала. :)
label:
cli
jmp label

Qwertiy
Доктор VB наук
Доктор VB наук
 
Сообщения: 2753
Зарегистрирован: 26.06.2011 (Вс) 21:26

Сообщение Qwertiy » 11.03.2014 (Вт) 12:37

iGrok писал(а):А ты вот попробуй сначала.

Посмотрел. Процессов действительно несколько, но их как-то странно несколько... Да и сами процессы похоже не те :)

Пред.

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

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

Сейчас этот форум просматривают: Google-бот и гости: 51

    TopList