Если нет свободного места в EntryPoint?

Тема в разделе "WASM.BEGINNERS", создана пользователем Animelubitel, 1 авг 2017.

  1. Animelubitel

    Animelubitel Member

    Публикаций:
    0
    Регистрация:
    21 июл 2017
    Сообщения:
    36
    Что делать если нет свободного места в EntryPoint? Если надо в самом начале подгрузить dll с кодом но в EntryPoint нет места, что делать?
     
  2. drem1lin

    drem1lin Member

    Публикаций:
    0
    Регистрация:
    17 мар 2009
    Сообщения:
    300
    Animelubitel, я не экстрасенс, но попробую предположить... Можно скопировать часть энтрипойнт в другую секцию, или прилепить к концу файла и встроить шелл, который выполнит некую задачу, скопирует кусок на место и передаст управление на точку входа.

    P.S. поработайте над описанием вопроса.
     
  3. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Animelubitel,

    Опишите как вы свой вопрос понимаете подробно, либо лучше задачу.
     
  4. Animelubitel

    Animelubitel Member

    Публикаций:
    0
    Регистрация:
    21 июл 2017
    Сообщения:
    36
    drem1lin,
    "Animelubitel, я не экстрасенс, но попробую предположить... Можно скопировать часть энтрипойнт в другую секцию, или прилепить к концу файла и встроить шелл, который выполнит некую задачу, скопирует кусок на место и передаст управление на точку входа."
    это интересно объясните поподробнее пожалуйста
     
  5. yashechka

    yashechka Ростовский фанат Нарвахи

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.449
    Адрес:
    Россия
    EntryPoint - это указатель, он всегда заполнен, в нём больше нет места.
     
  6. yashechka

    yashechka Ростовский фанат Нарвахи

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.449
    Адрес:
    Россия
    В книгах всё это написано, почему Вы не читаете?
     
  7. Animelubitel

    Animelubitel Member

    Публикаций:
    0
    Регистрация:
    21 июл 2017
    Сообщения:
    36
    читаю и знаю способы мне интересно было узнать е других
    drem1lin ответе пожалуйста(см. выше)
     
  8. yashechka

    yashechka Ростовский фанат Нарвахи

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.449
    Адрес:
    Россия
    Почему у Вас Ранг: -2.0 (нарушитель)???
     
  9. Animelubitel

    Animelubitel Member

    Публикаций:
    0
    Регистрация:
    21 июл 2017
    Сообщения:
    36
    drem1lin ответе пожалуйста(см. выше)
     
  10. yashechka

    yashechka Ростовский фанат Нарвахи

    Публикаций:
    90
    Регистрация:
    2 янв 2012
    Сообщения:
    1.449
    Адрес:
    Россия
  11. Animelubitel

    Animelubitel Member

    Публикаций:
    0
    Регистрация:
    21 июл 2017
    Сообщения:
    36
  12. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Animelubitel,

    Давайте проанализируем. EP это некий код, заранее не известный. Задача - получить управление при его исполнении.
    Для этого нужно записать ветвление в этот код. Тогда возникает проблема размера - ветвление должно уместиться в код EP, не переписав при этом выше лежащий код/данные, который не является текущей ветвью(CFG).

    Если размера не достаточно(5B), то должны быть выбрана следующая инструкция, но с учётом условных ветвлений - изменены две ветви после условного ветвления, иначе управление будет утеряно.
    Для этого код должен быть описан графом, найдена ближайшая инструкция размером >=5 и при этом не должно быть Jcc. На место этой инструкции записано длинное ветвление на буфер, в котором расположена оригинальная инструкция и ветвление на стаб(или наоборот).

    Так как никакой код выполнен не может быть, пока не выполнилась EP, то можно записать ветвление на EP, перекрыв выше лежащий код и из стаба восстановить EP.
     
  13. Indy_

    Indy_ Well-Known Member

    Публикаций:
    4
    Регистрация:
    29 апр 2011
    Сообщения:
    4.775
    Перемещение кода в буфер должно выполняться в любом случае мотором(конструктор). Так как есть относительная адресация.
     
  14. Animelubitel

    Animelubitel Member

    Публикаций:
    0
    Регистрация:
    21 июл 2017
    Сообщения:
    36
    спасибо
    drem1lin ответе пожалуйста(см. выше)
     
  15. Mikl___

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

    Публикаций:
    14
    Регистрация:
    25 июн 2008
    Сообщения:
    3.874
    Animelubitel,
    еще одно
    и я закрываю топик. IMHO другие пользователи уже ответили на ваш вопрос :rtfm: Ваших шагов по решению проблемы так никто и не увидел...
     
    _edge и yashechka нравится это.
  16. Animelubitel

    Animelubitel Member

    Публикаций:
    0
    Регистрация:
    21 июл 2017
    Сообщения:
    36
    "прилепить к концу файла и встроить шелл, который выполнит некую задачу, скопирует кусок на место и передаст управление на точку входа."
    мне не ответили, а мне это очень надо, пожалуйста ответе подробно перед закрытием темы
     
  17. drem1lin

    drem1lin Member

    Публикаций:
    0
    Регистрация:
    17 мар 2009
    Сообщения:
    300
    Пишется базонезависимый код, который решает некоторую задачу, Берется какой то exe файл, утилитой для просмотра PE ищется смещение точки входа, и потом HEX редактором вырезается оригинальный кусочек с этого места и размером с шеллкод и на его место вставляется шеллкод. Сам шелкод определяет размер файла и с конца берет этот кусочек и вставляет на оригинальную позицию и передает управление обратно на точку входа. Тогда exe даже не заметит что с ним что-то происходило. Очень важно сохранять состоянее регистров получая управление от системы и передавая его на оригинальную точку входа.
     
  18. Animelubitel

    Animelubitel Member

    Публикаций:
    0
    Регистрация:
    21 июл 2017
    Сообщения:
    36
    спасибо