|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
16.06.2012, 11:13 | #1 |
мальчик-помогай =)
Форумчанин
Регистрация: 16.09.2010
Сообщений: 522
|
Подменить адрес возврата
Доброе время суток!
Что-то я туплю с достаточно простой задачей если кратко, то нужно программно организовать аналог try...finally...end т.е. подменить адрес возврата. Допустим есть код вида: Код:
В процедуре Х нужно модифицировать стек таким образом, чтоб цепочка приняла след. вид: Caller => Test => X => возврат в Test => возврат в Y => возврат в Caller Думаю, что это вполне возможно, но что-то не соображу как. Буду благодарен за помощь в решение вопроса |
16.06.2012, 14:45 | #2 |
Участник клуба
Регистрация: 08.10.2007
Сообщений: 1,185
|
В простейшем случае, если Test ничего в стеке не хранит, то
Код:
|
16.06.2012, 16:14 | #3 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Somebody, и будет испорчен стек.
нужно заменить старое значение. то есть mov [esp],offset Y примерно так. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
16.06.2012, 19:25 | #4 |
мальчик-помогай =)
Форумчанин
Регистрация: 16.09.2010
Сообщений: 522
|
проблема в том, что Test может что-угодно из себя представлять, любое число параметров/переменных
|
16.06.2012, 20:40 | #5 | ||
Участник клуба
Регистрация: 08.10.2007
Сообщений: 1,185
|
Цитата:
Цитата:
Код:
Последний раз редактировалось Somebody; 16.06.2012 в 23:36. |
||
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как подменить адрес возврата функции func на адрес функции f используя переполнение буфера buf и функции gets | dmitrii6120 | Помощь студентам | 6 | 14.11.2011 20:10 |
ошибка с адресом возврата | Dimarik | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 7 | 18.09.2011 12:30 |
адрес возврата | n3sh | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 3 | 08.04.2011 21:19 |
Подменить IP-адрес при открытии URL (не через proxy) | СТРАННИК | Работа с сетью в Delphi | 20 | 21.10.2010 17:09 |
подменить соурс в iframe | fercmann | JavaScript, Ajax | 4 | 20.08.2008 01:06 |