Почему не могу записать в переменную адрес?

Тема в разделе "WASM.BEGINNERS", создана пользователем KondraT, 24 фев 2006.

  1. KondraT

    KondraT Member

    Публикаций:
    0
    Регистрация:
    22 янв 2006
    Сообщения:
    175
    Помогите разобраться с этим куском кода. В нем мы находим адреса 4 АПИ функций в Kernel32. Собственно, непонятна вот эта часть:

    ........

    push edi ; в стек имя функции

    push esi ; в стек база Kernel

    call eax ; в еах GetProAdress

    pop ecx ; получили в еах адрес нашей функции

    pop ebx ; в ebx 00401055

    pop edi

    pop esi

    ?>>mov dword ptr [ebx],eax ;помещаем адрес функции в переменную



    а переменная наша объявлена в секции кода и получаю Access violation, т.е. туда я не могу ничего писать. Что я не правильно делаю? (Пример взял из раздела "Вирусология").

    [​IMG] _807403427__FindAPI.rar
     
  2. Stub

    Stub New Member

    Публикаций:
    0
    Регистрация:
    11 май 2004
    Сообщения:
    311
    Адрес:
    Siberia
    А запись в секцию кода у тебя разрешена? Если нет, то либо переноси переменную в секцию данных, либо разрешай в нее запись, либо юзай для хранения стек.
     
  3. KondraT

    KondraT Member

    Публикаций:
    0
    Регистрация:
    22 янв 2006
    Сообщения:
    175
    В принципе, нашел ответ: или VirtualProtect, или использовать стек. Но в стек много переменных пихать...

    Посмотрю, что получится.