что такое адрес возврата

адрес возврата

адрес возврата
Указывает адрес (точку) возврата в вызывающей программе.
[Е.С.Алексеев, А.А.Мячев. Англо-русский толковый словарь по системотехнике ЭВМ. Москва 1993]

Тематики

Смотреть что такое «адрес возврата» в других словарях:

Адрес (информатика) — У этого термина существуют и другие значения, см. Адрес. Адрес символ или группа символов, которые идентифицируют регистр, отдельные части памяти или некоторые другие источники данных либо место назначения информации.[1][2] Содержание … Википедия

Атака возврата в библиотеку — (англ. Return to libc attack) один из видов компьютерных атак, популярных на x86 совместимых машинах и схожих с ними, связанных с переполнением буфера, когда адрес возврата функции на стеке подменяется адресом иной функции в программе … Википедия

обратный адрес — адрес возврата — [Л.Г.Суменко. Англо русский словарь по информационным технологиям. М.: ГП ЦНИИС, 2003.] Тематики информационные технологии в целом Синонимы адрес возврата EN return address … Справочник технического переводчика

Переполнение буфера — У этого термина существуют и другие значения, см. Переполнение. Переполнение буфера (Buffer Overflow) явление, возникающее, когда компьютерная программа записывает данные за пределами выделенного в памяти буфера. Переполнение буфера обычно… … Википедия

Стек вызовов — (от англ. call stack; применительно к процессорам просто «стек») в теории вычислительных систем, LIFO стек, хранящий информацию для возврата управления из подпрограмм (процедур) в программу (или подпрограмму, при вложенных или… … Википедия

Стековый кадр — (англ. stack frame) механизм передачи аргументов и выделения временной памяти (в процедурах языков программирования высокого уровня) с использованием системного стека. Содержание 1 Технология 1.1 Передача аргументов … Википедия

Хвостовая рекурсия — Хвостовая рекурсия специальный случай рекурсии, при котором рекурсивный вызов функцией самой себя является её последней операцией.[1] Подобный вид рекурсии примечателен тем, что может быть легко заменён на итерацию, что реализовано во… … Википедия

Remote Procedure Call — Удалённый вызов процедур (или Вызов удалённых процедур) (от англ. Remote Procedure Call (RPC)) класс технологий, позволяющих компьютерным программам вызывать функции или процедуры в другом адресном пространстве (как правило, на удалённых… … Википедия

GOTO — (англ. go to «перейти к») в некоторых языках программирования оператор безусловного перехода (перехода к определённой точке программы, обозначенной номером строки либо меткой). В более широком смысле, под «GOTO»… … Википедия

Реальный режим — (или режим реальных адресов) это название было дано прежнему способу адресации памяти после появления процессора 80286, поддерживающего защищённый режим. Но только с появлением процессора 80386 можно говорить о защищённом режиме в… … Википедия

Источник

адрес возврата

Смотреть что такое «адрес возврата» в других словарях:

адрес возврата — Указывает адрес (точку) возврата в вызывающей программе. [Е.С.Алексеев, А.А.Мячев. Англо русский толковый словарь по системотехнике ЭВМ. Москва 1993] Тематики информационные технологии в целом EN return address … Справочник технического переводчика

Адрес (информатика) — У этого термина существуют и другие значения, см. Адрес. Адрес символ или группа символов, которые идентифицируют регистр, отдельные части памяти или некоторые другие источники данных либо место назначения информации.[1][2] Содержание … Википедия

Атака возврата в библиотеку — (англ. Return to libc attack) один из видов компьютерных атак, популярных на x86 совместимых машинах и схожих с ними, связанных с переполнением буфера, когда адрес возврата функции на стеке подменяется адресом иной функции в программе … Википедия

обратный адрес — адрес возврата — [Л.Г.Суменко. Англо русский словарь по информационным технологиям. М.: ГП ЦНИИС, 2003.] Тематики информационные технологии в целом Синонимы адрес возврата EN return address … Справочник технического переводчика

Переполнение буфера — У этого термина существуют и другие значения, см. Переполнение. Переполнение буфера (Buffer Overflow) явление, возникающее, когда компьютерная программа записывает данные за пределами выделенного в памяти буфера. Переполнение буфера обычно… … Википедия

Стек вызовов — (от англ. call stack; применительно к процессорам просто «стек») в теории вычислительных систем, LIFO стек, хранящий информацию для возврата управления из подпрограмм (процедур) в программу (или подпрограмму, при вложенных или… … Википедия

Стековый кадр — (англ. stack frame) механизм передачи аргументов и выделения временной памяти (в процедурах языков программирования высокого уровня) с использованием системного стека. Содержание 1 Технология 1.1 Передача аргументов … Википедия

Хвостовая рекурсия — Хвостовая рекурсия специальный случай рекурсии, при котором рекурсивный вызов функцией самой себя является её последней операцией.[1] Подобный вид рекурсии примечателен тем, что может быть легко заменён на итерацию, что реализовано во… … Википедия

Remote Procedure Call — Удалённый вызов процедур (или Вызов удалённых процедур) (от англ. Remote Procedure Call (RPC)) класс технологий, позволяющих компьютерным программам вызывать функции или процедуры в другом адресном пространстве (как правило, на удалённых… … Википедия

GOTO — (англ. go to «перейти к») в некоторых языках программирования оператор безусловного перехода (перехода к определённой точке программы, обозначенной номером строки либо меткой). В более широком смысле, под «GOTO»… … Википедия

Реальный режим — (или режим реальных адресов) это название было дано прежнему способу адресации памяти после появления процессора 80286, поддерживающего защищённый режим. Но только с появлением процессора 80386 можно говорить о защищённом режиме в… … Википедия

Источник

Блог GunSmoker-а (переводы) что такое адрес возврата. Смотреть фото что такое адрес возврата. Смотреть картинку что такое адрес возврата. Картинка про что такое адрес возврата. Фото что такое адрес возврата

. when altering one’s mind becomes as easy as programming a computer, what does it mean to be human.

суббота, 19 декабря 2009 г.

Зачастую оптимизация противоречит интуиции

Но если вы сядете и запустите оба фрагмента, вы можете обнаружить, что первый вариант с вызовом функций быстрее в два раза! Как такое может быть?

Современные процессоры Pentium (и я думаю, что Athlon тоже) отслеживают внутренний стек, который обновляется каждой командой CALL и RET. Когда выполняется команда CALL, адрес возврата заносится как в программный стек (на который указывает регистр ESP), а также во внутренний стек предсказателя переходов; инструкция RET выталкивает адрес возврата из стека предсказателя переходов и из программного стека.

Стек предсказателя переходов используется, когда процессор декодирует команду RET. Он смотрит на вершину стека предсказателя переходов и говорит: «ставлю на то, что эта команда RET собирается вернуть управление на этот адрес». После чего он заранее выполняет инструкцию по этому адресу («спекулятивное выполнение»). Поскольку программы редко балуются с адресов возврата в стеке, это предсказание обычно бывает очень точным.

Вот почему наша «оптимизация» стала работать ещё медленнее. Предположим, что в момент выполнения инструкции CALL L1 стек адресов возврата предсказателя переходов выглядел так:

Теперь вы выполняете инструкцию CALL. Стек предсказателя переходов и программный стек теперь выглядят вот так:

Адрес возврата
Стек предсказателя:
L1->caller1->caller2->caller3->.
Действительный стек:L1->caller1->caller2->caller3->.

Но вместо выполнения инструкции RET, вы просто выталкиваете (pop) из стека адрес возврата. Это удаляет адрес возврата из программного стека, но не удаляет его из стека предсказателя переходов.

Адрес возврата
Стек предсказателя:
L1->caller1->caller2->caller3->.
Действительный стек:caller1->caller2->caller3->caller4->.

Думаю вы видите, к чему я клоню.

Потом ваша функция возвращает управление. Процессор декодирует вашу команду RET, он смотрит на адрес в стеке предсказателя переходов и говорит: «что-то подсказывает мне, что эта команда RET вернёт управление на L1. Я начну предварительное выполнение команд оттуда».

Но эффект от этого не заканчивается тут. После инструкции RET, стеки выглядят вот так:

И так далее. Вводя дисбаланс в последовательность инструкций CALL и RET, вы сумели сделать так, что теперь каждое предсказание адреса перехода в стеке будет неверным. Заметьте на диаграмме, что если никто больше не будет играться со стеком так, как мы сделали изначально для создания проблемы, то ни одно предсказание по стеку адресов возврата предсказателя перехода не будет верным. Ни один из адресов в стеке предсказателя переходов теперь не соответствует адресам в программном стеке.

Ваша оптимизация «через щель» оказалась недальновидной.

Некоторые процессоры раскрывают это предсказание более явно. К примеру, Alpha AXP, имеет несколько типов инструкций по контролю потока выполнения, которые имеют одинаковый логический эффект, но содержат различные подсказки процессору по управлению внутренним стеком предсказаний переходов. Например, инструкция BR говорит: «перепрыгни на этот адрес, но не заноси старый адрес в стек предсказаний». С другой стороны, инструкция JSR говорит: «перейди на этот адрес и занеси старый адрес в стек предсказателя переходов». Есть также и инструкция RET, которая говорит: «перепрыгни на этот адрес и извлеки адрес из стека предсказателя» (имеется и четвёртый тип, который, впрочем, довольно редко используется).

Мораль истории: просто потому, что что-то выглядит лучше, не означает, что оно действительно лучше.

Источник

адрес возврата

адрес возврата
Указывает адрес (точку) возврата в вызывающей программе.
[Е.С.Алексеев, А.А.Мячев. Англо-русский толковый словарь по системотехнике ЭВМ. Москва 1993]

Тематики

Смотреть что такое «адрес возврата» в других словарях:

адрес возврата — Указывает адрес (точку) возврата в вызывающей программе. [Е.С.Алексеев, А.А.Мячев. Англо русский толковый словарь по системотехнике ЭВМ. Москва 1993] Тематики информационные технологии в целом EN return address … Справочник технического переводчика

Адрес (информатика) — У этого термина существуют и другие значения, см. Адрес. Адрес символ или группа символов, которые идентифицируют регистр, отдельные части памяти или некоторые другие источники данных либо место назначения информации.[1][2] Содержание … Википедия

Атака возврата в библиотеку — (англ. Return to libc attack) один из видов компьютерных атак, популярных на x86 совместимых машинах и схожих с ними, связанных с переполнением буфера, когда адрес возврата функции на стеке подменяется адресом иной функции в программе … Википедия

обратный адрес — адрес возврата — [Л.Г.Суменко. Англо русский словарь по информационным технологиям. М.: ГП ЦНИИС, 2003.] Тематики информационные технологии в целом Синонимы адрес возврата EN return address … Справочник технического переводчика

Переполнение буфера — У этого термина существуют и другие значения, см. Переполнение. Переполнение буфера (Buffer Overflow) явление, возникающее, когда компьютерная программа записывает данные за пределами выделенного в памяти буфера. Переполнение буфера обычно… … Википедия

Стек вызовов — (от англ. call stack; применительно к процессорам просто «стек») в теории вычислительных систем, LIFO стек, хранящий информацию для возврата управления из подпрограмм (процедур) в программу (или подпрограмму, при вложенных или… … Википедия

Стековый кадр — (англ. stack frame) механизм передачи аргументов и выделения временной памяти (в процедурах языков программирования высокого уровня) с использованием системного стека. Содержание 1 Технология 1.1 Передача аргументов … Википедия

Хвостовая рекурсия — Хвостовая рекурсия специальный случай рекурсии, при котором рекурсивный вызов функцией самой себя является её последней операцией.[1] Подобный вид рекурсии примечателен тем, что может быть легко заменён на итерацию, что реализовано во… … Википедия

Remote Procedure Call — Удалённый вызов процедур (или Вызов удалённых процедур) (от англ. Remote Procedure Call (RPC)) класс технологий, позволяющих компьютерным программам вызывать функции или процедуры в другом адресном пространстве (как правило, на удалённых… … Википедия

GOTO — (англ. go to «перейти к») в некоторых языках программирования оператор безусловного перехода (перехода к определённой точке программы, обозначенной номером строки либо меткой). В более широком смысле, под «GOTO»… … Википедия

Реальный режим — (или режим реальных адресов) это название было дано прежнему способу адресации памяти после появления процессора 80286, поддерживающего защищённый режим. Но только с появлением процессора 80386 можно говорить о защищённом режиме в… … Википедия

Источник

Переполнение буфера, адрес возврата

Переполнение буфера
Объясните почему вылетает ошибка и помогите исправить. Зарание спасибо возникло переполнение.

Переполнение буфера
В программе имеется форма и записывается текстовые файлы. Когда она запускается всё работает.

Переполнение буфера
Не могу найти, где у меня ошибка, выдает переполнение буфера, подскажите пожалуйста. Здесь.

Переполнение буфера
Подскажите, пожалуйста кто-нибудь, в чем беда. Во время выполения программы пишет, что буфер.

А как такое можно объяснить?)

Если добавить еще один А то будет аварийное завершение.

так, то есть если я правильно понял это то самое количество А, когда можно добавлять адрес возврата,

это адрес по которому находится sub esp 44h? то есть strcpy(str,»\x33\x18\x41\x00″);?
просто у меня задача эксплуатировать это прериполнение по средствам эксплоита

Решение

А знать, как устроено переполнение буфера и его эксплуатация, полезно.
В первую очередь затем, чтобы писать устойчивый к таким атакам софт.

Нашел, оказалось вот в чем была проблема:почему то открыв kernel32.dll через ida я там не смог найти call esp, а открыв его через ollydbg(посмотрев связанные с этим exe длл) смог, типо потому что диначисекая библиотека?

Добавлено через 1 минуту
Еще при написании ехплоита пытался в kernel32 найти адрес winexec с помощью ida, нашел, но он почему то не подошел, пришлоь програмно искать

Добавлено через 1 минуту

классический, «атака через переполнения буфера»

так это не ко мне а к правиламчто такое адрес возврата. Смотреть фото что такое адрес возврата. Смотреть картинку что такое адрес возврата. Картинка про что такое адрес возврата. Фото что такое адрес возврата
во первых находит а не втупую забивает буфер своим адресом
во вторых как посмотреть, если программа делает что то без ведома пользователя это вирусная технология
на западе против защит которые используют вирусную технологию. выигрывали судычто такое адрес возврата. Смотреть фото что такое адрес возврата. Смотреть картинку что такое адрес возврата. Картинка про что такое адрес возврата. Фото что такое адрес возврата

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *