нажатие 8 строк символов в стеке в сборке x64 [дубликат]

new Function() может использоваться для передачи тела функции в строку. И, следовательно, это можно использовать для создания динамических функций. Также передайте скрипт без выполнения скрипта.

var func = new Function("x", "y", "return x*y;");
function secondFunction(){
   var result;
   result = func(10,20);
   console.log ( result );
}

secondFunction()
3
задан user2272296 4 June 2013 в 13:19
поделиться

1 ответ

Нет инструкции push imm64. В качестве обходного пути вы можете выполнить одно из следующих действий:

  1. пройти через регистр: mov rax, 0xACEACEACACEACEAC; push rax
  2. перейти через память: push qword [rel foo]
  3. напишите его в двух частях: push dword low32; mov dword [rsp+4], high32 или sub rsp,8; mov dword [rsp], low32; mov dword [rsp+4], high32
  4. используйте расширение знака, если ваш немедленный разрешает его
11
ответ дан Jester 22 August 2018 в 02:44
поделиться
  • 1
    возможно ли использовать две команды push, первая для нажатия на нижние 32, а вторая - на верхнюю. Это, по-видимому, единственное возможное решение. – user2272296 5 June 2013 в 18:49
  • 2
    Это не сильно отличается от выбора №3, почему не так хорошо? – Jester 5 June 2013 в 20:36
  • 3
    О да, не понимал этого. Спасибо за помощь. – user2272296 6 June 2013 в 10:58
  • 4
    Кажется, что нет способа кодировать push с 32-разрядным размером операнда. (Даже с источником регистра). В инструкциях Intel insn ref указано, что вы можете использовать REX.W, но он не работает с NASM / YASM / GNU as или на реальном CPU (путем прикрепления db 0x40 (REX.W = 0) или db 0x48 (REX.W = 1) перед push rdx). Протестировано на Intel SnB, а одношаговое с GDB. – Peter Cordes 22 December 2015 в 12:07
  • 5
    Кроме того, метод 1 почти наверняка является лучшим, а также общей производительностью и размером кода. push m32 ( 2 ) декодирует до 2 uops на Intel и AMD, а загрузка может отсутствовать в кеше. (Предполагая, что 4 неприменим.) – Peter Cordes 22 December 2015 в 12:33
Другие вопросы по тегам:

Похожие вопросы: