переход в середину инструкции

Тема в разделе "WASM.ASSEMBLER", создана пользователем kropalik, 10 июн 2005.

  1. kropalik

    kropalik New Member

    Публикаций:
    0
    Регистрация:
    27 апр 2005
    Сообщения:
    155
    Адрес:
    msk
    след. код на самом деле код выполняет

    jmp eax;



    вопрос: на всех процах будет работать ?

    (проверял на p4);



    _asm

    {

    // mov eax,ENTRY_POINT;



    jmp short next;

    test [edx],eax;

    add [eax],al;

    add [eax+0xFFE0FFFF],cl;

    push_ip:

    sub dword ptr[esp],0x15;

    ret;

    next:

    call push_ip;

    };
     
  2. alpet

    alpet Александр

    Публикаций:
    0
    Регистрация:
    21 сен 2004
    Сообщения:
    1.221
    Адрес:
    Russia
    А что дизассемблер показывает на месте jmp short next? Вообще если это msvc то вполне возможно - он встроенный ассемблер может и переврать.
     
  3. kropalik

    kropalik New Member

    Публикаций:
    0
    Регистрация:
    27 апр 2005
    Сообщения:
    155
    Адрес:
    msk
    IDA почти так и показывает:



    sub_10005893 proc near

    .text:10005893 jmp short loc_100058A4

    .text:10005895 test [edx], eax

    .text:10005897 db 0 ; add [eax],al ????

    .text:10005898 db 0

    .text:10005899 add [eax-1F0001h], cl

    .text:1000589F loc_1000589F:

    .text:1000589F sub dword ptr [esp+0], 15h

    .text:100058A3 retn

    .text:100058A4 loc_100058A4:

    .text:100058A4 call loc_1000589F

    .text:100058A4 sub_10005893 endp



    кривой переход происходит

    по инструкции ret

    (можно посмотреть в softice)

    работает вполне исправно

    только непонятно что будет

    на другом процессоре

    (amd например)
     
  4. alpet

    alpet Александр

    Публикаций:
    0
    Регистрация:
    21 сен 2004
    Сообщения:
    1.221
    Адрес:
    Russia
    Если работает на P4, будет работать и на Атлоне. Зачем этот код?
     
  5. kropalik

    kropalik New Member

    Публикаций:
    0
    Регистрация:
    27 апр 2005
    Сообщения:
    155
    Адрес:
    msk
    уточнение: по инстр. retn

    происходит переход в середину

    инструкции jmp short next (EB 0F)

    0F + код след. инструкции test [edx],eax

    =

    jnz near $+2;

    (дальше аналогично)



    А код затем чтобы IDA не увидела

    jmp eax;

    (примерно так...)
     
  6. bogrus

    bogrus Active Member

    Публикаций:
    0
    Регистрация:
    24 окт 2003
    Сообщения:
    1.338
    Адрес:
    ukraine




    Зато увидит тот кто смотрит в IDA :) или олька при трейсе, эмулятор в конце концов ...