Выравнивание секций и др.

Тема в разделе "WASM.BEGINNERS", создана пользователем KondraT, 12 июн 2007.

  1. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    читай про EPO. Тут же на сайте есть статья слона
     
  2. KondraT

    KondraT Member

    Публикаций:
    0
    Регистрация:
    22 янв 2006
    Сообщения:
    175
    MSoft:
    Если про "Slon - Построение простого EPO мотора", то мне не охота разбираться с этим, да и цель чуть другая: просто сделать точку входа такой чтоб не ругался антивирь.

    Подскажтие как определить в какую секцию указывает точка входа чтобы сделать секцию PAGE_EXECUTE_READWRITE? Думаю всё же поменять первые байты программы...
     
  3. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    берешь точку входа и сравниваешь ее с вирт. адресом секции и вирт.адр.+вирт.размер.. Если точка входа лежит в этих пределах, то это нужная секция.

    эвристики и декрипторы раскручивать умеют, а ты их безусловным переходом запутать хочешь. хотя, возможно, и сработает, но мне не верится.

    нууу... какие-то взаимоисключающие понятия :)

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

    KondraT Member

    Публикаций:
    0
    Регистрация:
    22 янв 2006
    Сообщения:
    175
    Еще один, возможно тупой вопрос:

    Не могу понять каким образом в конце кода сделать команды на восстановление первых байт программы и на прыжок туда? У меня всё почему - то перепутывается с заражаемой программой. То есть вирус получил управление, выполнил свои дела и ему нужно восстановить первые байты программы, в которой он находится и туда перейти. Так вот - где ему брать эти данные?? Дайте наглядный пример
     
  5. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    KondraT
    Видимо, эти данные нужно сохранять перед заражением.
     
  6. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    KondraT
    в справочнике виндовс! где же еще

    а если без шуток, то при заражении необходимо сохранять адрес оригинальной точки входа и первые байты, а потом просто восстановить и прыгнуть туда. А в чем сложность?
     
  7. KondraT

    KondraT Member

    Публикаций:
    0
    Регистрация:
    22 янв 2006
    Сообщения:
    175
    Сформулирую этот глупый вопрос так:
    Есть 1-ое поколение. Оно меняет первые байты заражаемой программы на jmp vir.
    Второму поколоению передается управление через этот jmp, оно выполняется и ему нужно восстановить исходные байты вместо jmp vir. Т.е. 1-ое поколение кладет ОЕР заражаемого файла в переменную и потом делаем jmp 'переменная с ОЕР'. Но ведь во 2-ом поколении этот же jmp будет с ОЕР найденного второго файла, а не того что положило туда 1-ое.
     
  8. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    вот скажи, как ты первым поколением писал jmp vir??? что мешает тебе сохранить перед записью первые байты внутри второго поколения??? сохрани байты через обычный movds/movsb. А когда второе поколение отработает, помести в esi указатель на на сохраненные байты, а в edi - на OEP и сделай movsd/movsb. Потом вычти из EDI 5 и сделай jmp edi. В чем сложность??? В копировании байтов?