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

Discussion in 'WASM.RESEARCH' started by vitokop, Jul 19, 2020.

  1. vitokop

    vitokop Member

    Blog Posts:
    0
    Joined:
    May 20, 2006
    Messages:
    48
    Визитной карточкой можно считать инструкцию MOV ebp,esp:
    8BEC - дают компиляторы Microsoft, Borland-Embarcadero, MASM32, TASM32 и UASM
    89E5 - FASM, NASM, YASM
     
  2. Rel

    Rel Well-Known Member

    Blog Posts:
    2
    Joined:
    Dec 11, 2008
    Messages:
    5,317
    GCC, GAS?
     
  3. vitokop

    vitokop Member

    Blog Posts:
    0
    Joined:
    May 20, 2006
    Messages:
    48
    89E5 GCC
     
  4. Mikl___

    Mikl___ Супермодератор Staff Member

    Blog Posts:
    14
    Joined:
    Jun 25, 2008
    Messages:
    3,914
    vitokop,
    вопрос-то о чем? Пересылка из одного регистра в другой, в одном случае бит направления = 0, в другом =1
     
  5. Rel

    Rel Well-Known Member

    Blog Posts:
    2
    Joined:
    Dec 11, 2008
    Messages:
    5,317
    Ну видимо, он предлагает таким образом детектить компилятор, который использовался для сборки.
     
  6. vitokop

    vitokop Member

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

    Mikl___ Супермодератор Staff Member

    Blog Posts:
    14
    Joined:
    Jun 25, 2008
    Messages:
    3,914
    Rel,
    мне кажется больше информации будет если анализировать заголовок EXE/DLL/SYS
     
  8. Mikl___

    Mikl___ Супермодератор Staff Member

    Blog Posts:
    14
    Joined:
    Jun 25, 2008
    Messages:
    3,914
    никто не мешает для кодирования использовать макросы
    Просто объясните смысл топика, чтобы остальные в догадках не путались :punish2:
     
  9. Rel

    Rel Well-Known Member

    Blog Posts:
    2
    Joined:
    Dec 11, 2008
    Messages:
    5,317
    Ну это не удивительно, тк в MinGW тот же GAS (GNU Assembler), что и в GCC.
     
  10. vitokop

    vitokop Member

    Blog Posts:
    0
    Joined:
    May 20, 2006
    Messages:
    48
    по сигнатуре mov ebp,esp можно разбить компиляторы-, ассемблеры на 2 типа:
    Тупоконечников( 8BEC) и Остроконечников(89E5)
     
  11. Mikl___

    Mikl___ Супермодератор Staff Member

    Blog Posts:
    14
    Joined:
    Jun 25, 2008
    Messages:
    3,914
  12. Rel

    Rel Well-Known Member

    Blog Posts:
    2
    Joined:
    Dec 11, 2008
    Messages:
    5,317
    Не особо понимаю, какая тут разница, если инструкции делают одно и то же?
     
  13. vitokop

    vitokop Member

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

    Mikl___ Супермодератор Staff Member

    Blog Posts:
    14
    Joined:
    Jun 25, 2008
    Messages:
    3,914
    Спойте :yes3: Если "Rip адресация" не нравится, ее можно отключить
    Вы знаете многих разработчиков ассемблера? IMHO они все привязаны к возможностям микропроцессора
     
  15. Rel

    Rel Well-Known Member

    Blog Posts:
    2
    Joined:
    Dec 11, 2008
    Messages:
    5,317
    И что? Разный и разный.
     
  16. Mikl___

    Mikl___ Супермодератор Staff Member

    Blog Posts:
    14
    Joined:
    Jun 25, 2008
    Messages:
    3,914
    для смены знака можно использовать команды:
    NEG, NOT+INC, деление на -1, умножение на -1, вычитание из нуля, XOR -1+INC, FILD+FCHS+FISTP
    Я по прежнему не могу понять смысл создания топика
     
  17. vitokop

    vitokop Member

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

    Mikl___ Супермодератор Staff Member

    Blog Posts:
    14
    Joined:
    Jun 25, 2008
    Messages:
    3,914
    vitokop,
    я вам больше скажу, inc и dec также не имеют однозначного кода
     
  19. vitokop

    vitokop Member

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

    Mikl___ Супермодератор Staff Member

    Blog Posts:
    14
    Joined:
    Jun 25, 2008
    Messages:
    3,914
    vitokop,
    а я вместо
    push ebp/mov ebp,esp/sub esp,XXX
    использую одну инструкцию
    enter XXX,0

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