EIP не копируется :(

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

Статус темы:
Закрыта.
  1. AsMasteR666

    AsMasteR666 New Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2009
    Сообщения:
    24
    пытаюсь совершить операцию:
    mov EAX, EIP на что компилятор ругается
    тогда пытаюсь толкнуть EIP в стек:
    push EIP
    тоже облом.
    А мне очень нужно, чтобы смещения были адресонезависимыми. Т.к. код будет добавляться динамически. И я не знаю, по какому адресу. Что делать? и как тогда вообще пользоваться EIP?
     
  2. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.900
    AsMasteR666
    А пользоваться поиском хотя бы в пределах wasm.ru/forum не пробовали?
    Рядом с вашей веткой ветка amvoz которая называется Как привязаться к адресу текущей инструкции? Вирусописатели, блин... систему команд x86 для начала подучите :dntknw:
     
  3. AsMasteR666

    AsMasteR666 New Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2009
    Сообщения:
    24
    Вот спасибо! Ссыль реальный! Сам не нашёл, ссори...
    Но почему сразу вирусы? У вас тут что, только вирусы пишут?? Мой код вполне безобидный (во всяком случае сам по себе). И кстати, на поверку, базозависимый, так что адрес можно и найти! Просто без адресации, мне как то легче живётся. В общем, теперь, с инструкциями в соседней теме, дело хорошо пойдёт! :)
     
  4. Yerty

    Yerty New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2008
    Сообщения:
    107
    Getcontext функция, позволяет взять значения регистров, а setcontext установить. Сам так непробовал.
     
  5. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    653
    ...Это я виноват, мне надо было вставить в заглавие той темы EIP

    Тут дело вот в чём.
    Если набрать в google "как изменить EIP", то можнео, в принципе, наткнуться на строчки типа: "напрямую изменить регистр EIP нельзя"
    Но, учитывая недоверие местной братии к сообщениям там-то и там-то, хочется прочесть об этом в более или менее серьёзных руководствах.

    Я, по своему скудоумию пользуюсь двумя. Вот этим
    http://www.wasm.ru/publist.php?list=23

    И вот ещё отсюда скачал
    http://kalashnikoff.ru/Assembler/prog/assml.exe
    Это с сайта Калашникова

    ...Допустим, первое, это беллетристика. Но я гарантирую, что в этой беллетристике НЕ СКАЗАНО, что нельзя писать, к примеру. mov EIP, 4 или add EIP, 4 (На такие случаи я преобразовал все 30 статей в тексовый документ у себя на компе)

    Зато там написано следующее:
    "Чтобы изменить его, сделайте следующее: поскольку EIP всегда указывает на инструкцию, которая должна выполниться, то просто выбираем новую инструкцию в листниге

    После того, как отметили, например, 40101A, кликаем правую кнопку мыши -> “New origin here”, и EIP изменится на 40101A, и таким образом, программа продолжит выполнение именно с этго места."

    ...Я что должен думать, когда раз за разом вот так вот УДАЧНО изменяется EIP?
    Я думаю, что изменить его без проблем (последовательное выполнение команд не в счёт, понятно), просто я не умею. Вот и спрашиваю.

    Далее по электронному варианту. Да и по вcем остальным справочникам тоже.
    Надобно Вам знать, уважаемый, что в подобных трудах пишется то, что МОЖНО. А то, что нельзя- опускается.
    ...Я сколько справочников должен скачать, чтобы, наконец, увидеть, что "EIP можно изменить оолько выполняя инструкции"? (И ведь щас найдёт кто-то же, не сомневаюсь в этом)
    Если Вам препод сказал ЭТО в институте, а потом повторил, а потом ещё и на доске написал (а оно того стоит, на самом деле)- что могу сказать? Мне вотне написал. Потому, что у меня нет препода.
    Онеситесь спокойно к тому, что некоторые вещи ДОЛЖНО передаваться из уст в уста. Иначе прогресс тормознётся.

    Мы многое из книжек узнаем,
    А истины передают изустно:
    "Пророков нет в отечестве своем",-
    Да и в других отечествах - не густо.
     
  6. G13

    G13 New Member

    Публикаций:
    0
    Регистрация:
    24 мар 2006
    Сообщения:
    499
    Один. Мануал от Intel. Или от AMD - кому что нравится.

    (Intel® 64 and IA-32 Architectures Software Developer’s Manual. Volume 1: Basic Architecture)

    Пользуйтесь первоисточником и будет вам счастье. :)
     
  7. Mikl___

    Mikl___ Супермодератор Команда форума

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.900
    Как изменить EIP не напрямую:
    допустим вам требуются следующие инструкции MOV, ADD, SUB
    MOV EIP,400012h используйте PUSH 400012h/RETN
    SUB EIP,10h используйте JMP $-10h или CALL $-10h
    ADD EIP,10h используйте JMP $+10h или CALL $+10h
    MOV EAX,EIP используйте CALL $+5 / POP EAX
     
  8. amvoz

    amvoz Member

    Публикаций:
    0
    Регистрация:
    12 ноя 2008
    Сообщения:
    653
    Всё это здорово, конечно. Но, как Вы понимаете, интерес представляет четвёртый вариант. Остальные- прыжки (понятно дело, что EIP изменится), а благодаря четвёртому варианту в EAX будет значение EIP! Своё восхищение подобным приёмом я уже высказал в своей теме.
    А вообще, тему к закрытию, конечно.
     
Статус темы:
Закрыта.