Вопрос № 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!
Здравствуйте, уважаемые эксперты! Я снова нуждаюсь в вашей
помощи. Вопросы следующие:
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 чем и сбивают нормальную работу стека
Удачи!
Отвечает: Лысков Игорь Витальевич
Здравствуйте, 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
раздел инструменты.
Изучение ассемблера и проверка выученного в тренировочных программах хорошая практика
зы:методика английского выучил слово постоянно его применяй.
Удачи!
Отвечает: 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