Реализация MBRLOCK

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by DooD, 30 Sep 2011.

  1. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    Привет всем.Думаю много кто знает недавно вышедший локер который заседает в mbr.Сорцов не нашел,ковырять его в дебаггере нет желания,кто знает как это реализуется,сможет код составить,буду очень признателен.(интересует чисто теоретически,ни какой малвари не делаю)
     
  2. alexey-m

    alexey-m Elder - Старейшина

    Joined:
    15 Jul 2009
    Messages:
    518
    Likes Received:
    100
    Reputations:
    37
  3. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    я читал это.Во вторых дос мне не нужен.В третьих записи и запуска я там не увидел.Мне конкретно по трою надо,а не левая инфа.
     
  4. slesh

    slesh Elder - Старейшина

    Joined:
    5 Mar 2007
    Messages:
    2,702
    Likes Received:
    1,224
    Reputations:
    455
    Ну блин, хоть чуть логически научитесь мыслить. Это же просто. Совсем просто. Инфы в инете дофига, только она не структурирована. Ход мыслей должен быть таким:
    1) Открыли википедию, поглядели статью по MBR. Оттуда узнали что из 512 байт нам доступно только первые 446 байт
    2) пишем банальный код как и в бутсекторе.
    3) код должен делать следующее:
    - установить на всяк случай тектосвый режим
    - для красоты залить экран какимнить цветом.
    - вывести нужное сообщение
    - поле ввода подсветить другим цветом и установить туда курсор
    - через BIOS прерывания работы с клавой получать строку и сравнивать со своей.
    - если не правильно, то заново спрашивать
    - если правильно, то тут еще проще
    - возвращаем на место оригинальный MBR
    - то, место где он был ранее сохранён - забьем нулями, потому птому что мы не знаем что там за нули раньше были (мож это часть файловой системы или файла)
    - делаем принудительный ребут компа

    4) куданить копируем настоящий загрузчик. т.е. найти на диске незаюзанное место. часто в конце есть такое. Это наверное самый сложный момент. к томуже надо правильно записать адрес места(в код MBR) куда сохранили.
    5) перезаписываем настоящий загрузчик

    насчет пунка 4 в принципе не сложно, и алгоритм таков:
    0) прога которая записываем MBR должно найти свободный сектор, для этого
    1) шагаем посекторно от начала винта и проверяем чтобы сектор был чистым. т.е. все нули.
    2) когда нашли это место, то туда запишем оригинальный MBR
    3) в наш MBR (по какомунить оффсету ) сделать переменную и записать в неё адрес этого сектора.

    В принципе если сообщение не очень большое, то в 446 байт можно поместить в лёгкую
     
  5. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    то-бишь надо делать 2 в одном?например дропер под винду в ресурсах или теле которого сидит сам трой(писать на асме же я так понял,работать только с прерываниями биоса)которого дропер записует в mbr? так что-ли?
     
  6. Gar|k

    Gar|k Moderator

    Joined:
    20 Mar 2009
    Messages:
    1,166
    Likes Received:
    266
    Reputations:
    82
    http://c0dedgarik.blogspot.com/2010/10/blog-post.html - мой модифицированный загрузчик и пара полезных ссылок (по сути его можно считать ОЧЕНЬ простым локером)

    Программу установки я делал просто. чистый машинный код полученный из ассемблера с помощью fasm, хранился просто в переменной char - по сути как шелл код и по определенному смещению (у меня было там 20 свободных байт) я записывал пароль и прошивал моим кодом оригинальный загрузчик.

    Если внимательно почитать статью Криса, то свободного места на диске гораздо больше - поэтому в MBR можно разместить лишь основную часть загружающая - код уже с сектора, а там уже тебе и блекджег и голая памела андерсон ))
     
    _________________________
    #6 Gar|k, 30 Sep 2011
    Last edited: 30 Sep 2011
    4 people like this.
  7. DooD

    DooD Elder - Старейшина

    Joined:
    30 Sep 2010
    Messages:
    1,168
    Likes Received:
    450
    Reputations:
    288
    спс,почитаю.Здравствуй кстати:)