![]() |
Модераторы: LSD |
![]() ![]() ![]() |
|
Chingachguk |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
Нет. В стек попадает тот адрес, куда нужно вернуться после выполнения подпрограммы - команда, следующая за call.
-------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: нет Всего: 99 |
Я это и имел в виду... ![]() Так вот вопрос: константа, не константа... В чем преимущество? Что можно сделать с call, что нельзя сделать так как я сделал? -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
Chingachguk |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
БЛИН ! Представь себе, что твой код выполняется в ПРОИЗВОЛЬНОЙ области памяти. Ты не можешь привязываться к тому, что программа начала выполнение с такого-то адреса и т.п.
-------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
Girder |
|
||||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: нет Всего: 155 |
Chingachguk не кипятись, тут надо на примере...
cardinal к примеру возмем какую-нить функцию(и твой случай ![]()
Т.в. к примеру тебе потребовалось размножить этот счетчик, т.е. несколько счетчиков под разные задачи... под каждую задачу свой уникальный счетчик! Память выделяется динамически... к примеру под второй выделение по адрессу: 8130h Т.о. второй код будет выглядит так: :
Итог: без корекции адресов и та и другая(и т.д.) будут всегда изменять значение по адрессу 000Eh(работать с этим адрессом) - т.е. счетчики не уникальные и в принципи все копии счетчика не нужны. PS: А теперь представь что вторая копия вообще нужно забросить в другой процесс! А когда ты будеш писать независящий код от его место выполнения, то... .... далее сам ![]() Это сообщение отредактировал(а) Girder - 14.10.2004, 21:48 -------------------- Как слышим, так и пишим. Истина где-то там... |
||||
|
|||||
cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: нет Всего: 99 |
Girder, спасибо...
Ладно. Понял я. Но вот кто мне объяснит: зачем такие вещи писать на асме? Я то думал о том, что речь идет о том, что мы хотим "прыгнуть" по определеннуму адресу в программе и все. Для этого можно хоть так, хоть так поступить. Я даже не думал о динамическом выделении памяти, не о самокопирующимся коде и т.д. Для этого помоему можно с таким же успехом использовать Си. Для меня asm является возможностью ускорить процесс, а push, pop и похожее я стараюсь не использовать вообще (пока такое возможно конечно), т.к. тут я проигрываю (тому же компилятору Си)... Динамическое выделение памяти и ассемблер вместе я пока не разу не использовал, а тем более влезание в другие процессы... Не было необходимости. Я занимался пока больше embedded systems, а там каждый чих может дорого обойтись. Вместо динамического выделения памяти гораздо лучше бывает просто сделать буффер побольше и им пользоваться, а о нескольких процессах и речи быть иногда не может. Переключение между ними занимает слишком долго... Chingachguk, вообще это интересный ход (в котором я не вижу пока никакого преимущества в сравнении с другими языками; то есть не вижу возможности исплоьзовать), с которым я еще с удовольствием на практике поиграюсь. Спасибо за терпение. Не обижайся! Если честно я твои сообщения всегда с интересом читаю... Прославился ты своими уроками у нас на форуме ![]() -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
Girder |
|
|||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: нет Всего: 155 |
![]() Ну а для чего это нужно: 1)Защита (в том числе разпакеры ![]() 2)Обход защиты (когда ни зя, а очень хочется ![]() 3)Атака (Имхо: 2 и 3 за частую одно и тоже); 4)Показать себя ![]() -------------------- Как слышим, так и пишим. Истина где-то там... |
|||
|
||||
cardinal |
|
|||
![]() Инженер ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 6003 Регистрация: 26.3.2002 Где: Германия Репутация: нет Всего: 99 |
Я не очень понял. То есть если сделать как я и перебросить процедуры в другое место в памяти, то они перестанут работать? Ты о том, что значение регистра может уползти? -------------------- Немецкая оппозиция потребовала упростить натурализацию иммигрантов В моем блоге: Разные истории из жизни в Германии "Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино". А. и Б. Стругацкие |
|||
|
||||
oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 1 Всего: 34 |
в некоторых случаях асм незаменим
![]() к примеру для борьбы с отладкой простой и всем известный пример для дебугеров пользовательского уровня работающих на int3
всем известно что данные трасировшики втыкают int3 после обрабатываемой команды, в данном случае после mov al,[met] там у нас стоит NOP (код 0х90) ну а далше делаем проверку и все такое ![]() -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
Girder |
|
||||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: нет Всего: 155 |
Не совсем... Смотри к примеру пример oleg1973 - в твоем случаи при переносе кода и передачи управления в новое место AL=90h, т.е. защита не сработает ![]() -------------------- Как слышим, так и пишим. Истина где-то там... |
||||
|
|||||
oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 1 Всего: 34 |
Girder
![]() ![]()
-------------------- SST 465555 icq 200-512-712 |
|||
|
||||
Girder |
|
|||
![]() Лентяй 2 ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1993 Регистрация: 12.5.2004 Репутация: нет Всего: 155 |
oleg1973 кто б спорил... Как раз именно это и пытаемся объяснить cardinal-у. О преимуществах и областях применения подобного кода(что ты привел выше) и ассемблера по сравнению с языками высокого уровня
![]() ![]() Это сообщение отредактировал(а) Girder - 16.10.2004, 21:09 -------------------- Как слышим, так и пишим. Истина где-то там... |
|||
|
||||
bagira |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2858 Регистрация: 25.10.2003 Где: в тайге Уральских гор Репутация: нет Всего: 123 |
![]() ![]() -------------------- Сегодня ты не бродил, не искал, не любил - можно сказать - и не жил... Ф.Х. Дагларджа (Турция) http://zveriolginovour.ru/ https://vmeste.yandex.ru/zveriolginovour |
|||
|
||||
Chingachguk |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
1. Я не обижался ;) 2. Преимущества тебе объяснили ! Есть задачи, в которых без таких трюков тяжеловато; я бы еще упомянул "полезные" приложения типа монитра реестровых функций, сетевого обмена, антивирусы всякие - почитай, как делается перехват апи-функций и т.п., еще бы я про анализ аварийных дампов добавил. Или вот еще: на васме.ru недавно человек пост сделал: так он с целью повышения быстродействия на ходу перестраивает выполнимый код наиболее оптимальным способом. -------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 1 Всего: 34 |
Chingachguk
не вполне по "правилам" на лету код перестраивать ![]() ![]() ![]() код должен быть лехкочитаемым ![]() ![]() ![]() последний раз я такое на z80 делал ![]() -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
Chingachguk |
|
|||
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1232 Регистрация: 25.3.2002 Где: Москва Репутация: нет Всего: 18 |
oleg1973
Для асма ;) -------------------- I don't like the drugs (but the drugs like me). M.Manson. |
|||
|
||||
![]() ![]() ![]() |
Правила ведения Религиозных войн | |
|
1. Уважайте собеседника 2. Собеседник != враг 3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez" С уважением, Smartov. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Религиозные войны | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |