Конференция "WinAPI" » Изменение регистра EIP
 
  • Rouse_ © (30.12.11 00:53) [0]
    Необходима подсказка от асм-гуру на предмет изменения регистра EIP собственного приложения.
    Контекст нити отпадает, ибо приложение собственное, стало быть самому себя отладить не получится.
    Из оставшихся легальных способов только jmp и подвиды с флагами, call и ret.

    Манипуляции с EBP/ESP приводят к тем-же call и ret.
    Один из вариантов реализовал в виде неявного срыва стека через искусственную генерацию ошибки + SEH, но опять-же упираемся в retX и необходимость чистки регистров для восстановления в работоспособное состояние.

    Собственно вопрос, а есть ли что-то не документированное, что позволит изменить значение данного регистра?
  • Rouse_ © (30.12.11 00:54) [1]
    зы: расширяю возможности морфа - потребовался данный функционал (это ответ на вопросы - а нафига?)
  • Rouse_ © (30.12.11 01:17) [2]
    зы: loop забыл...
    В кратце, есть ли хинттрик, реализуемый при помощи INT или поделитесь кодом давно обсуждаемой комьюнити фишкой через sysexit в 3 кольце?
  • Германн © (30.12.11 01:53) [3]

    > Rouse_ ©   (30.12.11 00:53)  

    <offtop>
    Ну ты нашёл когда задать такой вопрос!
    Вчера был день корпоративов. Сегодня будет день "перехода от работы к каникулам", завтра подготовка к встрече и сама встреча НГ, послезавтра... Ну что будет послезавтра объяснять я думаю не надо.
    </offtop>
  • Сергей М. © (30.12.11 11:00) [4]
    вариант с легально загружаемым своим драйвером 0-го кольца вообще не рассматривается ?
  • CRLF (30.12.11 11:47) [5]
    push/ret?
  • Rouse_ © (30.12.11 12:56) [6]

    > Сергей М. ©   (30.12.11 11:00) [4]
    > вариант с легально загружаемым своим драйвером 0-го кольца
    > вообще не рассматривается ?

    Нет дровину нельзя :(


    > push/ret?

    это уже реализовано

    тут я думаю что если и есть такой способ то что-то сугубо недокументированное, ну наподобие отсутствующих в документации:
    SALC = DB $D6
    или
    LONG NOP =  DB $66, $0F, $1F, $84, $00, $00, $00, $00, $00
  • Dimka Maslov © (30.12.11 13:23) [7]
    Лично я когда-то подменял точку выхода из функции. Но это манипуляции с ESP и ret. Способов действительно немного.
  • Сергей М. © (30.12.11 14:49) [8]

    > push/ret?
    >
    > это уже реализовано


    Так а что еще надо ?
    Выхода за 3-е кольцо нет и проще-наглядней уже некуда ..
    или я чего-то не понял ..
  • Rouse_ © (30.12.11 16:43) [9]

    > или я чего-то не понял ..

    задача как раз обратная, сделать не проще и наглядней, а затруднить анализ кода :)
  • Eraser © (31.12.11 10:33) [10]
    > [0] Rouse_ ©   (30.12.11 00:53)

    <offtop>
    SaaS. Вынести туда либо вообще все, либо ядро. Тогда не надо будет делать защиту вообще.
    </offtop>
 
Конференция "WinAPI" » Изменение регистра EIP
Есть новые Нет новых   [134430   +4][b:0][p:0]