|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
23.04.2014, 23:20 | #1 |
Форумчанин
Регистрация: 06.08.2009
Сообщений: 144
|
Безусловный переход
Подскажите, пожалуйста, опкод - выполняющий безусловный переход на какой то определенный адресс ( именно адрес, абсолютный). И чтобы подошел как для х86 так и для х64 ассамблера!
Заранее, большое спасибо! |
23.04.2014, 23:25 | #2 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
А, зачем? Компилятор пишем?
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
24.04.2014, 00:09 | #3 | |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
Цитата:
|
|
24.04.2014, 10:14 | #4 |
Форумчанин
Регистрация: 06.08.2009
Сообщений: 144
|
Патчер в памяти.
Почему не в этом? JMP, который $E9 - работал как в х86 программе, так и в х64. Успешно прыгало на новую подпрограмму, вместо старой. Другое дело, есть минусы: 1) Безвозратно затирается старая ф-я 2) Новая ф-я обязательно должна быть в памяти дальше старой. Аргументом является смещение. Пробовал указывать абсолютный адрес, отрицательное смещение - не работает, даже так, что видердрайвер вынес разок. |
26.04.2014, 23:00 | #5 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
потому что вопрос был про переход по абсолютному адресу, E9 - переход относительно текущего указателя (максимальное смещение 0х80000000).
(как это ни странно, в x86 адреса 32-х битные, а в х64 64-х битные) Последний раз редактировалось f.hump; 26.04.2014 в 23:07. |
27.04.2014, 02:23 | #6 |
Ваш К. О.
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,774
|
Правильный подход: скачиваешь FASM и Far. Пишешь в FASM-е, компилишь, потом открываешь и смотришь hex-просмотром в Far.
|
27.04.2014, 05:14 | #7 | |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Цитата:
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
|
27.04.2014, 08:37 | #8 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
28.04.2014, 09:36 | #9 |
Форумчанин
Регистрация: 06.08.2009
Сообщений: 144
|
А что на счет:
PUSH + Addr + Ret? Вроде как есть x64 версия, с возможности указать 8 байтный адресс памяти? |
28.04.2014, 17:06 | #10 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
нет такого PUSH в х64.
(8 байтную величину из регистра или памяти можно на стек положить, но свободную константу - нет) |
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
переход с ХР на 7 | Viktori-P | Windows | 4 | 16.02.2013 20:20 |
переход на С++ | all_is_fear | Общие вопросы C/C++ | 5 | 26.11.2012 23:15 |
Безусловный переход | Red_Line | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 5 | 07.07.2011 18:16 |
Переход на C | Gapro | Свободное общение | 8 | 09.11.2009 13:02 |
Переход | Gorychev | PHP | 6 | 26.05.2008 01:16 |