Итак, когда вызывается movl (в машинном коде intel x84-64), и в качестве места назначения используется регистр, он устанавливает байты старшего порядка в регистре на 0. Так как я могу использовать инструкцию movl, чтобы сохранитьоригинальное значение регистра?В этой ситуации мы не можем использовать rsi / rdi для команд movl (только esi и edi).Например, если я иду
movq %rsp, %rax
и затем вызываю
movl %eax, %edx
, есть ли способ вызвать movl / do что-то после movl, так что rdx может содержать исходное значение, которое былов% rsp?
Причина, по которой я не могу сделать что-то вроде movq% rax,% rdx, заключается в том, что у меня нет этих команд для меня.Я делаю ROP-атаку, где у меня есть только инструкции movl в ферме гаджетов.У меня также есть доступ к инструкциям andb, orb, cmpb и testb.