![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы
![]() |
Поиск в этой теме
![]() |
![]() |
#1 |
Форумчанин
Регистрация: 06.08.2009
Сообщений: 144
|
![]()
Подскажите, пожалуйста, опкод - выполняющий безусловный переход на какой то определенный адресс ( именно адрес, абсолютный). И чтобы подошел как для х86 так и для х64 ассамблера!
Заранее, большое спасибо! |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
![]()
А, зачем? Компилятор пишем?
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
![]() |
![]() |
![]() |
#3 | |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
![]() Цитата:
|
|
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 06.08.2009
Сообщений: 144
|
![]()
Патчер в памяти.
Почему не в этом? JMP, который $E9 - работал как в х86 программе, так и в х64. Успешно прыгало на новую подпрограмму, вместо старой. Другое дело, есть минусы: 1) Безвозратно затирается старая ф-я 2) Новая ф-я обязательно должна быть в памяти дальше старой. Аргументом является смещение. Пробовал указывать абсолютный адрес, отрицательное смещение - не работает, даже так, что видердрайвер вынес разок. |
![]() |
![]() |
![]() |
#5 |
C/C++, Asm
Участник клуба
Регистрация: 02.03.2010
Сообщений: 1,323
|
![]()
потому что вопрос был про переход по абсолютному адресу, E9 - переход относительно текущего указателя (максимальное смещение 0х80000000).
(как это ни странно, в x86 адреса 32-х битные, а в х64 64-х битные) Последний раз редактировалось f.hump; 26.04.2014 в 23:07. |
![]() |
![]() |
![]() |
#6 |
Просветитель
Участник клуба
Регистрация: 26.12.2012
Сообщений: 1,844
|
![]()
Правильный подход: скачиваешь FASM и Far. Пишешь в FASM-е, компилишь, потом открываешь и смотришь hex-просмотром в Far.
В разработке: воспроизводственный контур ИТ
|
![]() |
![]() |
![]() |
#7 | |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
![]() Цитата:
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
|
![]() |
![]() |
![]() |
#8 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 06.08.2009
Сообщений: 144
|
![]()
А что на счет:
PUSH + Addr + Ret? Вроде как есть x64 версия, с возможности указать 8 байтный адресс памяти? |
![]() |
![]() |
![]() |
#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 |