Нахождение местоположений в машинном коде (gcc/objdump-d)

Вы можете сделать это следующим образом:

$('a').on('click', function(e) {

  e.preventDefault();
  e.stopPropagation();

  $(this).addClass('ajax-link')

  window.location.href = $(this).attr('href')
})
.ajax-link {
  color: green;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js"></script>
<a href="https://google.com">Test</a>

Вы в основном предотвращаете действие по умолчанию Привязка таким образом, что щелчок не будет работать, затем вы добавляете класс и вручную отправляете пользователя по ссылке.

Я уверен, что есть много других способов сделать то, что вы просили, это только один из них, простой и интуитивно понятный.

5
задан Setjmp 12 November 2008 в 03:12
поделиться

3 ответа

Можно запустить использование objdump -S опция (как "objdump -Sd a.out"). Это отобразит исходный код, смешанный с ассемблерным кодом, если исходные файлы, от которых был скомпилирован код, будут доступны.

С другой стороны, можно использовать следующий путь:

int main(void) {
    int a = 0;
    asm("#");
    return a;
}

становится

       .file   "a.c"
        .text
.globl main
        .type   main, @function
main:
        leal    4(%esp), %ecx
        andl    $-16, %esp
        pushl   -4(%ecx)
        pushl   %ebp
        movl    %esp, %ebp
        pushl   %ecx
        subl    $16, %esp
        movl    $0, -8(%ebp)
#APP
# 3 "a.c" 1
        #
# 0 "" 2
#NO_APP
        movl    -8(%ebp), %eax
        addl    $16, %esp
        popl    %ecx
        popl    %ebp
        leal    -4(%ecx), %esp
        ret
        .size   main, .-main
        .ident  "GCC: (GNU) 4.3.2"
        .section        .note.GNU-stack,"",@progbits
7
ответ дан 13 December 2019 в 22:19
поделиться

Вы отладчик должен также позволить Вам видеть исходный код и соответствие блоку, если бы Вы скомпилировали с отладочными символами. Это - gcc опция-g и gdb disass команда.

2
ответ дан 13 December 2019 в 22:19
поделиться

Если Вы компилируете с gcc, можно использовать-S для генерации файла блока непосредственно. Этот файл обычно имеет немного полезной информации в нем, включая имена функций и иногда номера строки для кода (в зависимости от опций компиляции, которые Вы используете).

1
ответ дан 13 December 2019 в 22:19
поделиться
Другие вопросы по тегам:

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