Size: a a a

Ассемблер

2021 July 17

II

Ira Irina in Ассемблер
это не оговаривается
источник

A

Aleksandr in Ассемблер
тогда это решение
источник

s

s54816 in Ассемблер
Я подумывал на тему fstenv, но как ни крути, получается длиннее 5 байт.
источник

E

Entusiast in Ассемблер
Ну для этого нужно ещё сделать call, который займёт у тебя 5 байт. Потом ты делаешь push eax/pop eax и ret что равно 7 байт. Не решение, но да - так можно.
источник

A

Aleksandr in Ассемблер
предлагаю просто сделать jmp eax
источник

II

Ira Irina in Ассемблер
во, в один байт решение
источник

II

Ira Irina in Ассемблер
или в два но все равно намного меньше пяти
источник

E

Entusiast in Ассемблер
Нет. call 5 байт)
источник

E

Entusiast in Ассемблер
Без call никто ему не передаст никакой EIP. Вот выше решение - после инициализации и передачи управления коду, ОС выполняет call, и у тебя уже есть EIP на старт. Потом прибавляешь нужное смещение
источник

A

Aleksandr in Ассемблер
call reg - 2 байта
источник

E

Entusiast in Ассемблер
Тогда mov будет 5 байт
источник

A

Aleksandr in Ассемблер
как и jmp reg
источник

A

Aleksandr in Ассемблер
никаких моv. делаем jmp eax и получается что eax=eip
источник

E

Entusiast in Ассемблер
А до этого? Тебе нужно сделать call, чтобы передать EIP в стэк, а только потом jmp
источник

II

Ira Irina in Ассемблер
он не сказал что прежний еип должен сохранится. после джампа еах равен еип
источник

E

Entusiast in Ассемблер
call - 5 байт
call reg - mov 5 байт + 2
источник

A

Aleksandr in Ассемблер
зачем что-то до этого? мы сразу переходим по значению в регистре
источник

E

Entusiast in Ассемблер
Ну и пусть будет равен. До этого что?
источник

E

Entusiast in Ассемблер
Ладно. А что у тебя в регистре будет?
источник

A

Aleksandr in Ассемблер
это не важно
источник