movzx выравнивает операнд

Тема в разделе "WASM.ASSEMBLER", создана пользователем gilg, 28 фев 2008.

  1. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    Помогите понять чудо :)

    edx = 0xAAAAAAB1
    Выполняется инструкция
    movzx ecx, byte ptr [edx]
    В ecx оказывается значение, лежащее по адресу 0xAAAAAAB0.

    Программа выполняется под VmWare. В чем фишка?

    ЗЫ: Отладчик WinDbg
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Код (Text):
    1.         mov edi, a
    2.         inc edi
    3.         movzx edi, byte [edi]
    как ни странно в копируется байт лежащий в edi а не (edi - edi % 4).
     
  3. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    в VMWare тоже самое, все в порядке, ищи баги в себе.
     
  4. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    У меня тоже все работает как надо под VmWare+WinXP. В VmWare+Win2003 как в первом посте. Может быть WinDbg глюкает?
     
  5. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    С movsx и mov та же самая петрушка. См. ниже:

    Код (Text):
    1. 0:013> p
    2. eax=8b55ff8b ebx=10039cd0 ecx=00000000 edx=7618bfae esi=039ff1b0 edi=039ff19c
    3. eip=1003d893 esp=039ff094 ebp=039ff19c iopl=0         nv up ei pl zr na po nc
    4. cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000246
    5. mm!qm+0x63:
    6. 1003d893 8b02             mov     eax,[edx]         ds:0023:7618bfae=8bcccccc
    7. 0:013> p
    8. eax=cccccccc ebx=10039cd0 ecx=00000000 edx=7618bfae esi=039ff1b0 edi=039ff19c
    9. eip=1003d895 esp=039ff094 ebp=039ff19c iopl=0         nv up ei pl zr na po nc
    10. cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000246
    11. mm!qm+0x65:
    12. 1003d895 8845d7           mov     [ebp-0x29],al           ss:0023:039ff173=cc
    13. 0:013> p
    14. eax=cccccccc ebx=10039cd0 ecx=00000000 edx=7618bfae esi=039ff1b0 edi=039ff19c
    15. eip=1003d898 esp=039ff094 ebp=039ff19c iopl=0         nv up ei pl zr na po nc
    16. cs=001b  ss=0023  ds=0023  es=0023  fs=003b  gs=0000             efl=00000246
    17. mm!qm+0x68:
    18. 1003d898 0fb645ef         movzx   eax,byte ptr [ebp-0x11] ss:0023:039ff18b=8b
    19. 0:013> db 7618bfac
    20. 7618bfac  cc cc cc cc cc 8b ff 55-8b ec b8 18 20 00 00 e8  .......U.... ...
    21. 7618bfbc  70 d1 04 00 a1 c4 9c 1e-76 53 89 45 fc 8b 45 0c  p.......vS.E..E.
    22. 7618bfcc  56 8b f1 57 8b 7d 08 89-85 e8 df ff ff 8d 46 44  V..W.}........FD
    23. 7618bfdc  50 33 db 89 85 ec df ff-ff ff 15 74 11 15 76 83  P3.........t..v.
    24. 7618bfec  7e 1c 05 7d 0f c7 85 f8-df ff ff 05 cc 0c 80 e9  ~..}............
    25. 7618bffc  84 00 00 00 57 e8 dc d7-fd ff 8b 45 10 c6 46 08  ....W......E..F.
    26. 7618c00c  00 89 46 0c eb 3b 83 bd-f4 df ff ff 00 74 69 8d  ..F..;.......ti.
    27. 7618c01c  46 08 50 ff 76 0c 8d 85-f0 df ff ff 50 ff b5 f4  F.P.v.......P...
     
  6. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    и где баг, я что-то не разгляжу?
    7618bfae cc cc cc 8b, они и копируются. в eax, все в порядке...
     
  7. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    1003d893 8b02 mov eax,[edx] ds:0023:7618bfae=8bcccccc
    0:013> p
    eax=cccccccc ...

    В eax копируется 0xcccccccc вместо 0x8bcccccc
     
  8. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    gilg
    7618bfac
    Чья это память?

    Помогите понять чудо ... 7618bfae
    С любым адресом или конкретно с этим?
     
  9. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    Инжект в чужой процесс
    Похоже, что да. Заинжектил тестовый код (адреса ессно другие) - там все в порядке.
     
  10. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    gilg
    Инжект в чужой процесс
    Что-то ты темнишь. 7618bfb1 8b ff 55 8b ec b8 18 20 00 00 ... - это
    Код (Text):
    1. 8BFF           MOV EDI,EDI
    2. 55             PUSH EBP
    3. 8BEC           MOV EBP,ESP
    4. B8 18200000    MOV EAX,2018
    5. ...
    что это за "чужой процесс", у которого точка входа в функцию имеет адрес не кратный четырем?

    Помогите понять чудо
    Ты читаешь адрес, а "кто-то" подставляет int3.
     
  11. z0mailbox

    z0mailbox z0

    Публикаций:
    0
    Регистрация:
    3 фев 2005
    Сообщения:
    635
    Адрес:
    Russia СПБ
    gilg
    хаха три раза
    там на самом деле твой брейкпойнт, виндбг тебя обманул :)
     
  12. gilg

    gilg New Member

    Публикаций:
    0
    Регистрация:
    19 май 2005
    Сообщения:
    527
    q_q, z0mailbox
    Сенкс :)))
    ЗЫ: Уже всю репу себе сломал :)))