Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Ассемблер? Это просто! Учимся программировать


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler (Ассемблер)

Выпуск № 684
от 16.02.2007, 13:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 368, Экспертов: 28
В номере:Вопросов: 4, Ответов: 10


Вопрос № 75067: Помогоите плж. решить такие задачи (на Си с ассемблерными вставками): 1) вводится массив, далее необходимо 1 и последний элемент поменять местами; 2)ввводится строка надо в ПОСЛЕДНЕМ слове переписать члены этого слова в обратном порядке. ...
Вопрос № 75105: Здравствуйте, уважаемые эксперты! Я снова нуждаюсь в вашей помощи. Вопросы следующие: 1) Разрешено ли писать что-либо в сегмент (или страницу) памяти, определённую пользовательской программой в Win XP другим программам, то есть предо...
Вопрос № 75177: Здравствуйте уважаемые. Когда-то надыбал с 10 рук одну книженцию по асму, вся замусоленная такая была, но это была моя первая книга очень сложная правда, так что заниматься по ней не смог, но прочитал. и в главе про оьработчики прерывания было сказан...
Вопрос № 75198: Здравствуйте уважаемые эксперты, я начинаю изучать ассемблер под Windows и столкнулся с проблемой ассемблирование данных программ. Не подскажите ли вы чем их можно ассемблировать и где достать достать эти ассемблеры? Есть ли среды разработки для ассе...

Вопрос № 75.067
Помогоите плж. решить такие задачи (на Си с ассемблерными вставками):
1) вводится массив, далее необходимо 1 и последний элемент поменять местами;
2)ввводится строка надо в ПОСЛЕДНЕМ слове переписать члены этого слова в обратном порядке.
Зарнее спасибо!
Отправлен: 10.02.2007, 13:07
Вопрос задал: G44 (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Зенченко Константин Николаевич
Здравствуйте, G44!

в приложении асм-вставки заменн.
Удачи!

Приложение:

Ответ отправил: Зенченко Константин Николаевич (статус: 4-ый класс)
Ответ отправлен: 10.02.2007, 18:16


Вопрос № 75.105
Здравствуйте, уважаемые эксперты! Я снова нуждаюсь в вашей
помощи. Вопросы следующие:

1) Разрешено ли писать что-либо в сегмент (или страницу) памяти,
определённую пользовательской программой в Win XP другим программам, то есть предоставляет ли защищённый режим какую-либо
защиту от случайной или умышленной потери информации, находящейся в ОЗУ, в результате действий др. программ?

2) Тот же самый вопрос - но насчёт данных, не находящихся в заранее
определённых (при написании кода программы) сегментах
(это наиболее важный для меня вопрос - т.к. я не знаю
заранее с каким объёмом памяти вынуждена будет работать моя софтина)?

3) Как можно повысить защиту находящейся в ОЗУ инфы (программа расчитана на Win XP)?
Отправлен: 10.02.2007, 19:11
Вопрос задал: Amateur (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: ramok
Здравствуйте, Amateur!

1. предоставляет. все сегменты имеют поле с правами на чтение/запись/запуск.
другой вопрос что если у программы достаточно прав, то с помощью системных вызовов и как нибуть по другому(хотя бы через самописный драйвер) можно изменить эти права и делать что хочется

2. данные находится в каком нибуть сегменте так или иначе. если вы выделяете их с помощью malloc()/new() или как нибуть еще то считайте что права будут как в сегменте данных.

3. смотря чего вы хотите достичь. защита от случайного повреждения данных или намеренного доступа от программ у которых нет прав на компьютере - есть. вам ненужно прилагать для этого усилий, это встроенная фича Ж:-)

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

так же как существуют техники затрудняющие подобные фокусы (например полная шифровка данных и расшифровка части данных на лету в процессе работы). гарантировать нельзя. но можно ооочень затруднить Ж:-) в общем как всегда борьба меча и щита

Ответ отправил: ramok (статус: Практикант)
Ответ отправлен: 10.02.2007, 19:48
Оценка за ответ: 4

Отвечает: Лысков Игорь Витальевич
Здравствуйте, Amateur!
Полностью согласен с экспертом ramok.
Только хочу чуть-чуть дополнить.
Защиту предоставляет не ОС, как таковая, а сам процессор. ОС только пользуется этой возможностью, и то - только наполовину.
(Есть четыре кольца защиты, а Windows использует только 2 - пользовательский (3) и системный (0).
Все, что работает в 0 кольце, имеет доступ ко всему.
Все пользовательские программы работают в 3 кольце, и имеют доступ только к той памяти, которая им выделена.
Если,...не получат доступ с помощью указанных предыдущим экспертом методов...
А это возможно, хотя и трудно.
Единственно, можно еще больше затруднить.
К шифровке можно добавить - не давать прав администратора другим пользователям.
Потому что вышеописанные действия (например, отладка программы) без соответствующих прав невозможны.
Поэтому сначала надо будет получить права админа, а это тоже непростая задача...

Ответ на вопрос в мини-форуме.
Если программа запущена от имени администратора, то это еще ничего не значит.
Она все равно работает в том же 3 кольце защиты.
Права админа дают только ВОЗМОЖНОСТЬ в принципе что-то там дополнительно делать. Как минимум, надо еще знать, как получить права 0 кольца...
(т.е. как обойти защиту процессора)
---------
Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: Практикант)
Ответ отправлен: 11.02.2007, 15:07
Оценка за ответ: 5
Комментарий оценки:
Всё так доходчиво и понятно, что вопрос полностью исчерпан. Сразу видно, что человек настоящий профи (хотя бы в этой теме).

Отвечает: Зенченко Константин Николаевич
Здравствуйте, Amateur!
Посмотрите статью:

http://www.wasm.ru/article.php?article=vgw05

поняв как это делается,
придумать как недопустить.
Удачи!
Ответ отправил: Зенченко Константин Николаевич (статус: 4-ый класс)
Ответ отправлен: 12.02.2007, 13:42
Оценка за ответ: 5
Комментарий оценки:
Наличие нужной ссылки - Великое Благо.


Вопрос № 75.177
Здравствуйте уважаемые. Когда-то надыбал с 10 рук одну книженцию по асму, вся замусоленная такая была, но это была моя первая книга очень сложная правда, так что заниматься по ней не смог, но прочитал. и в главе про оьработчики прерывания было сказано, что при переназначении прерывания могут возникнуть проблемы с ситемой. Поясню. Допустим делаю ссылку на свой обработчик, который подменяет int 21h, 09h по выводу строки символов. В момент, когда мой обработчик работает, любое иное возникшее прерывание (аппаратное например), может затереть в стеке адрес возврата из моего прерывания, соответственно программа рухнет. также была дана рекомендация, использовать поэтому прерывания БИОС, так как там что-то иное и работает по другому, не помню вообщем. неужели Система не может контролировать такие ситуации? Прошу прощения, если не совсем понятно выразился, но если что, могу поискать ту книгу и цитировать данный текст. Спасибо
Отправлен: 11.02.2007, 09:16
Вопрос задал: Forster (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Евгений Иванов
Здравствуйте, Forster!

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

Успехов.
---------
Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Россия, Нижний Новгород
Тел.: +78313145721
Организация: M2Media.ru
Адрес: Нижний Новгород, ул.Малая Ямская
WWW: Eugene Ivanov
ICQ: 214889076
----
Ответ отправлен: 11.02.2007, 11:46

Отвечает: Зенченко Константин Николаевич
Здравствуйте, Forster!

При возниковении прерывания в стек записывают IP,CS и FLAGS.
возвращаются командой IRET
иногда забывают о FLAGS и возвращаются командой RETF чем и сбивают нормальную работу стека
Удачи!
Ответ отправил: Зенченко Константин Николаевич (статус: 4-ый класс)
Ответ отправлен: 11.02.2007, 14:39

Отвечает: Лысков Игорь Витальевич
Здравствуйте, Forster!
Я так понял, речь идет о другом.
Как раз вызовы аппаратных прерываний тут не причем.
Конечно, если что криво написано, то ДОС тут же рухнет. Это понятно.
А вот, вроде бы все правильно, а система виснет....
Это будет, если в новом досовском прерывании 21h использовать вызовы
прерывания 21h (кроме функций клавиатурного ввода, кажется).
Это происходит потому, что код ДОС-а нереентабелен, т.е. повторный вызов портит незавершенный предыдущий!!!
Но бороться с этим можно.
Есть функция 34h которая возвращает указать на байт, который в свою очередь информирует используется ли
какая-либо dos'овская функция в данный момент или нет (сама функция безопасна)
Анализируя этот флаг, можно решать, разрешается вызывать int 21h или нет.


---------
Удачи!
Ответ отправил: Лысков Игорь Витальевич (статус: Практикант)
Ответ отправлен: 11.02.2007, 15:32


Вопрос № 75.198
Здравствуйте уважаемые эксперты, я начинаю изучать ассемблер под Windows и столкнулся с проблемой ассемблирование данных программ. Не подскажите ли вы чем их можно ассемблировать и где достать достать эти ассемблеры? Есть ли среды разработки для ассемблера? (ну в смысле как в Borland С 3.1 написал код, нажал Ctrl+F9 и смотришь результат, а еще синтаксис подсвечивается) И еще не могли бы вы скинуть ссылок или прислать мне на e-mail (tiabc@yandex.ru) хорошие учебники по ассемблеру под Windows (хорошими в смысле с примерами, и !ОБЯЗАТЕЛЬНО! заданиями.) Просто во всех учебниках, которые я читал только описываются язык ассемблера. А как лучше попрактиковаться я не знаю...
Заранее огромное спасибо!
Отправлен: 11.02.2007, 12:45
Вопрос задал: Tiabc (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Зенченко Константин Николаевич
Здравствуйте, Tiabc!

посмотри на www.wasm.ru
раздел инструменты.
Изучение ассемблера и проверка выученного в тренировочных программах хорошая практика
зы:методика английского выучил слово постоянно его применяй.
Удачи!
Ответ отправил: Зенченко Константин Николаевич (статус: 4-ый класс)
Ответ отправлен: 11.02.2007, 14:20

Отвечает: IceWolf
Здравствуйте, Tiabc!
Из учебников-туторы Iczelion'а-на том же wasm.ru -по-моему лучший учебник для начинающих, бумажные посмотрите www.openlib.org.ua -выберете, что Вам по вкусу.
Инструменты:сейчас актуальны MASM32 и FASM-оба найдёте на wasm.ru .
Среды разработки они же IDE: Наиболее распространённая -RadAsm www.radasm.com ,также присмотритесь к WinAsm www.winasm.net ,Chrome http://perso.orange.fr/franck.charlet/ , qeditor из MASM32.
С уважением, IceW0|f.

---------
Идеальных защит не существует, ибо то, что создано человеческим разумом, им же будет и разрушено!
Ответ отправил: IceWolf (статус: 6-ой класс)
Ответ отправлен: 11.02.2007, 20:58
Оценка за ответ: 5

Отвечает: Sergijj
Здравствуйте, Tiabc!

Вы упустили самую простую для Вас возможность. Если уж Вы знакомы с редакторами BC++ 3.1 и/или BP 7.0, то и используйте их!...:)

Когда мне приходится писать на asm'е под всякие промышленные монокристальные контроллеры (у которых просто нет никакой среды разработки, а вся компиляция и линковка идёт из командной строки), часто использую BC++ 3.1 или BP 7.0 (смотря что есть под рукой).

Options/Transfer - и добавляете на желаемую Вами горячую клавишу любую внешнюю команду (например запуск компилятора, линковщика, итладчика (например td.exe) и т.д.). Просмотр результатов - по <Alt+F5>. Кроме того, можно позаморачиваться с макросами и получать результаты прямо в Watch.

Подобный метод используется в *nix. Если есть рядом какой-нибудь например QNX-овый программист, порасспросите его или посмотрите на, например, редактор vedit (полностью консольный редактор, который "умеет" и ответы внешних компиляторов "понимать").
---------
Стучитесь! И Вас откопают...
Ответ отправил: Sergijj (статус: 8-ой класс)
Ответ отправлен: 12.02.2007, 10:39


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
ООО "Мастер-Эксперт Про", Москва, 2007
Авторские права | Реклама на портале
Версия системы: 4.44 beta от 26.01.2007
Яндекс Rambler's Top100

В избранное