О ассемблерах и компиляторах

Тема в разделе "WASM.RESEARCH", создана пользователем vitokop, 19 июл 2020.

  1. vitokop

    vitokop Member

    Публикаций:
    0
    Регистрация:
    20 май 2006
    Сообщения:
    39
    Визитной карточкой можно считать инструкцию MOV ebp,esp:
    8BEC - дают компиляторы Microsoft, Borland-Embarcadero, MASM32, TASM32 и UASM
    89E5 - FASM, NASM, YASM
     
  2. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.250
    GCC, GAS?
     
  3. vitokop

    vitokop Member

    Публикаций:
    0
    Регистрация:
    20 май 2006
    Сообщения:
    39
    89E5 GCC
     
  4. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.709
    vitokop,
    вопрос-то о чем? Пересылка из одного регистра в другой, в одном случае бит направления = 0, в другом =1
     
  5. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.250
    Ну видимо, он предлагает таким образом детектить компилятор, который использовался для сборки.
     
  6. vitokop

    vitokop Member

    Публикаций:
    0
    Регистрация:
    20 май 2006
    Сообщения:
    39
    89E5 - as.exe MinGW
    mov ebp, esp - для них ТАКОЙ как указан
    получить ДРУГОЙ в ассемблере невозможно, выбраны именно эти варианты
    8BEC или 89E5
     
  7. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.709
    Rel,
    мне кажется больше информации будет если анализировать заголовок EXE/DLL/SYS
     
  8. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.709
    никто не мешает для кодирования использовать макросы
    Просто объясните смысл топика, чтобы остальные в догадках не путались :punish2:
     
  9. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.250
    Ну это не удивительно, тк в MinGW тот же GAS (GNU Assembler), что и в GCC.
     
  10. vitokop

    vitokop Member

    Публикаций:
    0
    Регистрация:
    20 май 2006
    Сообщения:
    39
    по сигнатуре mov ebp,esp можно разбить компиляторы-, ассемблеры на 2 типа:
    Тупоконечников( 8BEC) и Остроконечников(89E5)
     
  11. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.709
  12. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.250
    Не особо понимаю, какая тут разница, если инструкции делают одно и то же?
     
  13. vitokop

    vitokop Member

    Публикаций:
    0
    Регистрация:
    20 май 2006
    Сообщения:
    39
    ну, а про Rip адресацию 64 mode в этих ассемблерах вообще песня....
    --- Сообщение объединено, 19 июл 2020 ---
    дают РАЗНЫЙ код при одинаковом результате
    --- Сообщение объединено, 19 июл 2020 ---
    Разработчик Ассемблера стоит перед выбором, что генерить для mov ebp,esp:
    8BEC или 89E5??
     
  14. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.709
    Спойте :yes3: Если "Rip адресация" не нравится, ее можно отключить
    Вы знаете многих разработчиков ассемблера? IMHO они все привязаны к возможностям микропроцессора
     
  15. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.250
    И что? Разный и разный.
     
  16. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.709
    для смены знака можно использовать команды:
    NEG, NOT+INC, деление на -1, умножение на -1, вычитание из нуля, XOR -1+INC, FILD+FCHS+FISTP
    Я по прежнему не могу понять смысл создания топика
     
  17. vitokop

    vitokop Member

    Публикаций:
    0
    Регистрация:
    20 май 2006
    Сообщения:
    39
    mov ebp,esp - не имеет однозначного кода (8BEC или 89E5), поэтому каждый разработчик ассемблера выбирает одну
    из возможностей, сие зависит от неоптимальной структуры x86, следовательно
    можно использовать при анализе (дизассемблировании)кода, e.t.c.....,например, первичной авторизации инструмента кодирования
     
  18. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.709
    vitokop,
    я вам больше скажу, inc и dec также не имеют однозначного кода
     
  19. vitokop

    vitokop Member

    Публикаций:
    0
    Регистрация:
    20 май 2006
    Сообщения:
    39
    например, из моей практики, поиск в моем HEX редакторе может осуществляется также по определенному набору инструкций в ассемблерной мнемонике, например,в которую входит
    mov ebp,esp:
    Пользователь набирает:
    push eax
    mov ebp, esp
    mov edx,[edx]
    Инструмент ассемблирует
    и получает одну из строк поиска(FASM, UASM):
    5089E58B12
    или
    508BEC8B12
    В зависимости от того какая кодировка использовалась в анализируемом коде(89E5 или 8BEC)
    правильной будет только одна из них.
     
  20. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.709
    vitokop,
    а я вместо
    push ebp/mov ebp,esp/sub esp,XXX
    использую одну инструкцию
    enter XXX,0

    Что будет анализироваться в этом случае? Или если вместо обращений к локальным данным вместо ebp будет использоваться обращение напрямую через регистр esp?
    Какое-то бесцельное натягивание совы на глобус... При анализе чужой программы меня интересует алгоритм, а на чем писали мне как-то фиолетово