Найти длину команды

Discussion in 'WASM.ASSEMBLER' started by xrc2, Aug 4, 2008.

  1. xrc2

    xrc2 New Member

    Blog Posts:
    0
    Joined:
    Apr 5, 2008
    Messages:
    47
    Мне нужно пройтись по opcode'ам зная их hex значение и длину. Под отладчиком смотрю ф-ию MessageBoxA

    Code (Text):
    1. 77D8050B mov     edi, edi
    2. 77D8050D push    ebp
    3. 77D8050E mov     ebp, esp
    4. 77D80510 cmp     ds:dword_77DA041C, 0
    5. 77D80517 jz      short loc_77D8053D
    6. 77D80519 mov     eax, large fs:18h
    7. 77D8051F push    0
    В данном случае:
    push - занимает 1 байт
    mov - 2 байта
    cmp - ???? должен занимать 3 байта, а здесь почему целых 7? как определить?

    в hex:

    Code (Text):
    1. 0x77D8050B  8b ff 55 8b ec 83 3d 1c 04 da 77 00 74 24
    74 24 - это уже начинается jz...
     
  2. CrystalIC

    CrystalIC New Member

    Blog Posts:
    0
    Joined:
    Jul 26, 2008
    Messages:
    500
    Ужос..
     
  3. Phantom_84

    Phantom_84 New Member

    Blog Posts:
    0
    Joined:
    Jun 6, 2007
    Messages:
    820
    Установи опцию, чтобы отображался опкод. Одни и те же команды в зависимости от входящих в них компонентов могут иметь разные длины. Более того абсолютно одинаковые команды могут кодироваться по-разному, например, add eax,IM / push IM и т.п.
     
  4. k_dmitry

    k_dmitry New Member

    Blog Posts:
    0
    Joined:
    Jul 29, 2008
    Messages:
    9
    cmp :
    0x833D 1C04DA77 00

    0x83 - указывает что это cmp и что оно будет сравнивать че-то с байтом
    0x3D - указывает что будет сравнивать память по адресу в виде [disp32]
    0x1C04DA77 - адрес
    0x00 - 0
     
  5. n0hack

    n0hack New Member

    Blog Posts:
    0
    Joined:
    Jun 3, 2008
    Messages:
    71
    k_dmitry
    Советую заглянуть в мануалы интела
     
  6. t00x

    t00x New Member

    Blog Posts:
    0
    Joined:
    Feb 15, 2007
    Messages:
    1,921
  7. 2FED

    2FED New Member

    Blog Posts:
    0
    Joined:
    Feb 20, 2008
    Messages:
    1,002
    http://www.wasm.ru/forum/viewtopic.php?id=28542