переход к таблице экспорта

Тема в разделе "WASM.BEGINNERS", создана пользователем MaxOn, 21 мар 2009.

  1. MaxOn

    MaxOn Member

    Публикаций:
    0
    строки пытаюсь сравнить. Это неправильно? Как их тогда сравнивать cmpsb?
     
  2. MSoft

    MSoft New Member

    Публикаций:
    0
    ну надо как минимум repе cmpsb. А вообще, у тебя там такой бардак с регистрами, стеком и переходами...
     
  3. MaxOn

    MaxOn Member

    Публикаций:
    0
    ну я потом приведу к нормальному виду. и repe уменьшает ecx. Что в ecx должно быть NumberOfFunctions? и вообще как правильно организовать цикл поиска имени функции в AddresOfNames?
     
  4. Freeman

    Freeman New Member

    Публикаций:
    0
    длина строки как минимум.
     
  5. MSoft

    MSoft New Member

    Публикаций:
    0
    MaxOn
    ассемблер тем и отличается от яву, что он крайне неудобен и регистров всегда не хватает. Кроме ECX у тебя еще и edi с esi меняться будут
     
  6. MaxOn

    MaxOn Member

    Публикаций:
    0
    рррррр не могу въехать. AddressOfNames массив двойных слов где каждый элемент rva на строку с именем функции
    вот цикл поиска этой строки, что не так здесь
    Код (Text):
    1. mov ebx,[eax.AddressOfNames]
    2. mov esi,ebx
    3. _find:
    4. push ebx
    5. add ebx,[KernelBase]
    6. mov ecx,11
    7. mov edi,Msg
    8. mov esi,ebx
    9. repe cmpsb
    10. jz _ret
    11. pop ebx
    12. add ebx,4
    13.  
    14. jmp _find
     
  7. MSoft

    MSoft New Member

    Публикаций:
    0
    теперь у тебя в ebx находится va этого массива с указателями на имена
    ты просто скопировал адрес массива, а не строки. Тебе нужен первый элемент. Т.е. делаешь так:
    Код (Text):
    1. mov esi,[ebx]
    2. add esi,[KernelBase]
    так ты получишь указатель на первую строку.

    П.С.: я не помню формат таблицы экспорта и разбираться мне влом. Но, судя по логике твоего кода, делать надо именно так. А вообще, учись пользоваться олькой - в ней можно посмотреть на какие данные указывает регистр и т.д.

    П.П.С.: имхо ты слишком рано начал заниматься экспортами - там надо еще и с ординалами работать