Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> СТОИТ ЛИ ПАРИТЬСЯ ? 
:(
    Опции темы
Chingachguk
Дата 14.10.2004, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Нет. В стек попадает тот адрес, куда нужно вернуться после выполнения подпрограммы - команда, следующая за call.


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
cardinal
Дата 14.10.2004, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: нет
Всего: 99



Цитата(Chingachguk @ 14.10.2004, 13:57)
Нет. В стек попадает тот адрес, куда нужно вернуться после выполнения подпрограммы - команда, следующая за call.

Я это и имел в виду... smile.gif

Так вот вопрос: константа, не константа... В чем преимущество? Что можно сделать с call, что нельзя сделать так как я сделал?


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Chingachguk
Дата 14.10.2004, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



БЛИН ! Представь себе, что твой код выполняется в ПРОИЗВОЛЬНОЙ области памяти. Ты не можешь привязываться к тому, что программа начала выполнение с такого-то адреса и т.п.


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
Girder
Дата 14.10.2004, 21:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: нет
Всего: 155



Chingachguk не кипятись, тут надо на примере...

cardinal к примеру возмем какую-нить функцию(и твой случай smile.gif ), ну не знаю... например некий счетчик:
Код
0000: lea ebx,@IncFunc :т.е. ebx присваивается 000Eh
0006:  push [ebx]
0008:  pop eax
0009:  inc eax
000A:  push eax
000B:  pop [ebx]
000D:  ret
@IncFunc:
000E:  DD 0

Т.в. к примеру тебе потребовалось размножить этот счетчик, т.е. несколько счетчиков под разные задачи... под каждую задачу свой уникальный счетчик!
Память выделяется динамически... к примеру под второй выделение по адрессу: 8130h
Т.о. второй код будет выглядит так: :
Код
8130: lea ebx,@IncFunc :т.е. ebx опять будет присваивается 000Eh!!!!!! - а должно быть 813E!!!!!!
8136:  push [ebx]
8138:  pop eax
8139:  inc eax
813A:  push eax
813B:  pop [ebx]
813D:  ret
813E:  DD 0

Итог: без корекции адресов и та и другая(и т.д.) будут всегда изменять значение по адрессу 000Eh(работать с этим адрессом) - т.е. счетчики не уникальные и в принципи все копии счетчика не нужны.
PS: А теперь представь что вторая копия вообще нужно забросить в другой процесс!
А когда ты будеш писать независящий код от его место выполнения, то... .... далее сам smile.gif .

Это сообщение отредактировал(а) Girder - 14.10.2004, 21:48


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
cardinal
Дата 15.10.2004, 00:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: нет
Всего: 99



Girder, спасибо...

Ладно. Понял я. Но вот кто мне объяснит: зачем такие вещи писать на асме? Я то думал о том, что речь идет о том, что мы хотим "прыгнуть" по определеннуму адресу в программе и все. Для этого можно хоть так, хоть так поступить. Я даже не думал о динамическом выделении памяти, не о самокопирующимся коде и т.д. Для этого помоему можно с таким же успехом использовать Си.
Для меня asm является возможностью ускорить процесс, а push, pop и похожее я стараюсь не использовать вообще (пока такое возможно конечно), т.к. тут я проигрываю (тому же компилятору Си)... Динамическое выделение памяти и ассемблер вместе я пока не разу не использовал, а тем более влезание в другие процессы... Не было необходимости. Я занимался пока больше embedded systems, а там каждый чих может дорого обойтись. Вместо динамического выделения памяти гораздо лучше бывает просто сделать буффер побольше и им пользоваться, а о нескольких процессах и речи быть иногда не может. Переключение между ними занимает слишком долго...

Chingachguk, вообще это интересный ход (в котором я не вижу пока никакого преимущества в сравнении с другими языками; то есть не вижу возможности исплоьзовать), с которым я еще с удовольствием на практике поиграюсь. Спасибо за терпение. Не обижайся! Если честно я твои сообщения всегда с интересом читаю... Прославился ты своими уроками у нас на форуме thumbs-up.gif


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Girder
Дата 15.10.2004, 09:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: нет
Всего: 155



Цитата
Но вот кто мне объяснит: зачем такие вещи писать на асме?
А на чем еще такие вещи писать? Ну ладно попробуй... взять из любого своего приложения несколько функции(процедур) и перебросить в другое место памяти и передать им управление... и проверь сколько из них будут работать? Тем более: работает у тебя какая нить функция без проблем в любом участке памяти... ты её начал использовать... Через некоторое время сменился компилятор и хлоп... она уже может не работать, а от её работы будет зависять что-то очень для тебя нужное smile.gif . Короче: в языке высоко уровня у тебя будут связанны руки!

Ну а для чего это нужно:
1)Защита (в том числе разпакеры smile.gif );
2)Обход защиты (когда ни зя, а очень хочется smile.gif );
3)Атака (Имхо: 2 и 3 за частую одно и тоже);
4)Показать себя smile.gif


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
cardinal
Дата 15.10.2004, 09:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

Репутация: нет
Всего: 99



Цитата(Girder @ 15.10.2004, 08:03)
Ну ладно попробуй... взять из любого своего приложения несколько функции(процедур) и перебросить в другое место памяти и передать им управление... и проверь сколько из них будут работать?

Я не очень понял. То есть если сделать как я и перебросить процедуры в другое место в памяти, то они перестанут работать? Ты о том, что значение регистра может уползти?


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
oleg1973
Дата 15.10.2004, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: 1
Всего: 34



в некоторых случаях асм незаменим smile.gif
к примеру для борьбы с отладкой
простой и всем известный пример для дебугеров пользовательского уровня работающих на int3
Код

...
        mov al,[met]
met:
        nop
        cmp al,0x90
        jne настрассируют
...

всем известно что данные трасировшики втыкают int3 после обрабатываемой команды, в данном случае после mov al,[met]
там у нас стоит NOP (код 0х90)
ну а далше делаем проверку и все такое smile.gif



--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
Girder
Дата 15.10.2004, 10:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: нет
Всего: 155



Цитата(cardinal @ 15.10.2004, 10:49)
Цитата(Girder @ 15.10.2004, 08:03)
Ну ладно попробуй... взять из любого своего приложения несколько функции(процедур) и перебросить в другое место памяти и передать им управление... и проверь сколько из них будут работать?

Я не очень понял. То есть если сделать как я и перебросить процедуры в другое место в памяти, то они перестанут работать? Ты о том, что значение регистра может уползти?

Не совсем... Смотри к примеру пример oleg1973 - в твоем случаи при переносе кода и передачи управления в новое место AL=90h, т.е. защита не сработает smile.gif


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
oleg1973
Дата 15.10.2004, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: 1
Всего: 34



Girder biggrin.gif wink.gif
Код

...
    call met
met:
    pop esi
    mov al,[esi+4]
    nop
    cmp al,0x90
    jne нассноватрассирют





--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
Girder
Дата 15.10.2004, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лентяй 2
***


Профиль
Группа: Участник Клуба
Сообщений: 1993
Регистрация: 12.5.2004

Репутация: нет
Всего: 155



oleg1973 кто б спорил... Как раз именно это и пытаемся объяснить cardinal-у. О преимуществах и областях применения подобного кода(что ты привел выше) и ассемблера по сравнению с языками высокого уровня :) . Короче... читай выше топики :)

Это сообщение отредактировал(а) Girder - 16.10.2004, 21:09


--------------------
Как слышим, так и пишим.
Истина где-то там...
PM   Вверх
bagira
Дата 16.10.2004, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2858
Регистрация: 25.10.2003
Где: в тайге Уральских гор

Репутация: нет
Всего: 123



rolleyes.gif Мне ассемблер нужен только когда надо напрямую к портам подключать приборы разные rolleyes.gif Для этого в Дельфи я делаю небольшие ассемблерные вставки.


--------------------
Сегодня ты не бродил, не искал, не любил - можно сказать - и не жил...
Ф.Х. Дагларджа (Турция)
http://zveriolginovour.ru/
https://vmeste.yandex.ru/zveriolginovour 
PM MAIL WWW ICQ   Вверх
Chingachguk
Дата 16.10.2004, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



Цитата
Chingachguk, вообще это интересный ход (в котором я не вижу пока никакого преимущества в сравнении с другими языками; то есть не вижу возможности исплоьзовать), с которым я еще с удовольствием на практике поиграюсь. Спасибо за терпение. Не обижайся!


1. Я не обижался ;)
2. Преимущества тебе объяснили ! Есть задачи, в которых без таких трюков тяжеловато; я бы еще упомянул "полезные" приложения типа монитра реестровых функций, сетевого обмена, антивирусы всякие - почитай, как делается перехват апи-функций и т.п., еще бы я про анализ аварийных дампов добавил. Или вот еще: на васме.ru недавно человек пост сделал: так он с целью повышения быстродействия на ходу перестраивает выполнимый код наиболее оптимальным способом.


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
oleg1973
Дата 16.10.2004, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


asm fanat
****


Профиль
Группа: Экс. модератор
Сообщений: 3283
Регистрация: 16.7.2003
Где: Italy

Репутация: 1
Всего: 34



Chingachguk
не вполне по "правилам" на лету код перестраивать biggrin.gif biggrin.gif biggrin.gif
код должен быть лехкочитаемым biggrin.gif biggrin.gif biggrin.gif
последний раз я такое на z80 делал biggrin.gif


--------------------
SST 465555
icq 200-512-712
PM MAIL WWW ICQ   Вверх
Chingachguk
Дата 17.10.2004, 00:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1232
Регистрация: 25.3.2002
Где: Москва

Репутация: нет
Всего: 18



oleg1973

Цитата

Правило одно - никаких правил.


Для асма ;)


--------------------
I don't like the drugs (but the drugs like me). M.Manson.
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.1376 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.