| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > VB6 > VB + asm |
| Автор: oleg1973 4.4.2004, 02:02 |
| был тут флейм по поводу сабжа был даже прикол по поводу вот я тоже решил подумать (я в VB баран бараном так что если че не так поправьте, это теоретические предпосылки к реализации) кароче нада делать так делаем некий массив с нашим откомпилированым кодом типа char[] так далее дальше нам нужна внешняя либа которая собственно и запустит код тоесть прога на ВБ вызывает эту либу и передает ей в качестве параметра адрес массива либа в свою очередь делает виртуал протект для того сегмента в котором массив ( сто пудово дата сегмент и не имеет атрибута ехе) и устанавливает ему окромя реад-врите еще и ехе флажок, ну и делает jmp туда все чики поки |
| Автор: cardinal 4.4.2004, 13:27 | ||||
Тут не уверен. Было предположение, что она отдельный поток вызывает с этой процедурой. Просто кто-то сказал если я не ошибаюсь, что также можно хуки ставить. Не проверял и не обдумывал, пока не до того...
И к чему это? Конечно будет запущен p.s. как ты понял тоже самое можно провернуть и в любом другом языке, который разрешает вызовы API |
| Автор: oleg1973 4.4.2004, 13:34 |
| cardinal да я это давно понял тода уж нада упростить все в теории нада обработчик исключений на адрес массива переставить потом ченить на ноль к примеру поделить |
| Автор: cardinal 4.4.2004, 14:40 |
| Если честно: я ни хрена не понял |
| Автор: oleg1973 4.4.2004, 16:56 |
| cardinal ну что происходит когда на ноль делиш к примеру? или ud2 делаеш? вылазит окошко о том что прога выполнила ..... и так далее, тоесть срабатывает вындосовский обработчик если к примеру адрес этого самого обработчика перенести на адрес массива с нашим кодом то полсе тогоже самого деления на ноль будет выполнен наш код |
| Автор: cardinal 4.4.2004, 17:20 | ||||||||
вылазит ошибка... (это я думаю про себя)...
не знаю, что такое ud2...
в смысле выполнила ошибку?
Ииииии что это нам даст? p.s. извини если сильно торможу - у меня от pn переходов сейчас голова пухнет |
| Автор: bom 4.4.2004, 19:48 |
| Есть прекрасные исходники по этой теме, кто интересуется - http://databack4u.com/snc/vbasic.html#5 |
| Автор: cardinal 4.4.2004, 21:18 |
| Это я изучал, когда писал свою собственную статейку на этот счет. Можешь посмотреть: http://forum.vingrad.ru/index.php?showtopic=15962 А вообще на том сайте, который ты указал, есть еще пара интересных вещей... Надо будет почитать. |
| Автор: oleg1973 5.4.2004, 02:39 | ||
| bom ну и мы про то же
а это просто изумительная фраза |
| Автор: bom 5.4.2004, 09:15 | ||
oleg1973
Для справки. Юзанье API функций в VB довольно геморойное дело по сравнению с теми же Дельфями. |
| Автор: oleg1973 5.4.2004, 15:19 | ||
| bom для справки
API не язык програмирования |
| Автор: p0s0l 5.4.2004, 15:35 | ||||
И чем это дело-то уростит ? Пару ненужных лишних параметров не придется передавать ?
Как раз то и делается в примере, внешняя либа - это user32.dll, вызывает CallWindowProcA, и в качестве параметра передаёт адрес массива, а также и доп. параметры, которые могут понадобится в функции... Добавлено @ 15:39 Насчет виртуал протекта - можно 1 раз вначале проги это сделать на все данные и всё. Но раз Cardinal ничего не делал, значит и так доступно для исполнения... Добавлено @ 15:43 Или же, Олег, я тебя не понял ? |
| Автор: cardinal 5.4.2004, 15:43 |
| oleg1973, ну хватит тут прикалываться |
| Автор: p0s0l 5.4.2004, 16:04 | ||
| cardinal, он имеет в виду, что надо поставить обработчик исключений. Например, поделил ты на 0 - и управление передастся этому обработчику. А в обработчике, например, сидит твоя асм-функция, или же происходит её вызов. В Delphi это выглядит так:
Только не знаю, насколько это дело упростит, по-моему, даже усложнит, т.к. Васик может и сам время от времени ставить свои обработчики Exception'ов... |
| Автор: Mephisto 5.4.2004, 17:26 | ||||||
Если это так, то я не пойму зачем. Чем не устраивает:
Лично я так юзаю. Меня вполне устраивает. Даже больше. P.s. Обработчик ошибок в барсике
Че-то я даже http://forum.vingrad.ru/index.php?showtopic=20511 ничего не понял по поводу UD2! |
| Автор: oleg1973 5.4.2004, 20:25 |
| согласен господа что путей передачи управления асм коду многа но с ехцепшином прикольней Mephisto ud2 эт команда есть такая в асме которая нихрена не делает кроме вызова исключения (ошибку генерит) |
| Автор: cardinal 6.4.2004, 00:31 | ||||||
ну я понимаю, что он хочет его поставить, но ЗАЧЕМ? Объясните мне тупому, зачем енто тут надо делать? На примере с LShift если можно. Вы хотите сдвигать число влево если происходит ошибка?
Если ошибка, то управление передается asm коду, а он что делает? ud2? Зачем? Mephisto:
Уже стырил и пользуешься |
| Автор: oleg1973 6.4.2004, 00:42 |
| cardinal ну просто пример с ексцепшином как один из вариантов активации кода на асме и все |
| Автор: p0s0l 6.4.2004, 09:49 |
| Зато так можно набацать прогу в VB так, что потом если кто-то посмотрит на неё, то ничо не поймёт какие-то char'ы, деления на нуль и т.п. - как это работает ? Чисто для прикола новичков пугать... |
| Автор: cardinal 6.4.2004, 12:14 | ||
| Ну так бы сразу и сказали Чисто для прикола можно было много чего написать см. например здесь: http://forum.vingrad.ru/index.php?showtopic=16186 Ту функцию GetFileName можно также переписать так:
|
| Автор: Mephisto 13.4.2004, 16:46 | ||
А шо поделаешь, уж очень к серцу припало. |