дизасм загрузчика

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

  1. Shwanz

    Shwanz Артём

    Публикаций:
    0
    Регистрация:
    11 июн 2007
    Сообщения:
    3
    Адрес:
    Новосибирск
    Хай! решил отдизасмить лоадер хрени, окрыл диск С: в WinHex вырезал нулевой сектор с загрузчиком, сохранил в отдельный бинарник и скормил его любимому debag_у....учитывая что первое слово в дампе это jmp на начало тела загрузчика дал команду U с адресса на который слал jmp..........первые строчек 10-15 есче было читабельно...но потом...чушь какая-то....db какие-то между инструкциями,...INT13 вызывается с 41h в AH, а 41 ф-ции ваще помойму несуществует, ну и в том же духе...
    Подскажите че нетак сделал, мож кто лоадеры дизасмил, класно если из debug_а, из него как-то поинтереснее, чем из виндозной гадости.
    Заранее пасиб.
    P.S. че дизасмил прилагается
     
  2. RamMerLabs

    RamMerLabs Well-Known Member

    Публикаций:
    0
    Регистрация:
    11 сен 2006
    Сообщения:
    1.426
    лоадер хрени - ntldr, весит 245 кб и лежит отдельным файлом.
    те первые 512 байт, котороые ты скопировал winhex'ом - boot sector.
     
  3. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    К тому же 41h функция прерывания 13h вполне существует - это EDD BIOS (Extended Disk Drive Services).
    Спецификация есть на www.t13.org
    Это расширенные функции для накопителей больше 8Гб.
     
  4. Shwanz

    Shwanz Артём

    Публикаций:
    0
    Регистрация:
    11 июн 2007
    Сообщения:
    3
    Адрес:
    Новосибирск
    да ссори не лоадер хрени дизасмить хотел а бут сектор именно он мне интересен,...хочу немного с ним поиграть.
    с INT13 ясненько...пасиб
    Но остается вопрос че за db появляются между инструкциями при дизасме
     
  5. Mika0x65

    Mika0x65 New Member

    Публикаций:
    0
    Регистрация:
    30 июл 2005
    Сообщения:
    1.384
    Скорее всего это префиксы замены размера адреса/операнда для работы с 32битными адресами/операндами (0x67/0x66). Не уверен, что debug.exe знает о 32 битах и умеет их обрабатывать, поэтому лучше взять что-то по-новее, например, IDA (легко находится на cracklab.ru).
     
  6. rudik

    rudik Руденко Артём

    Публикаций:
    0
    Регистрация:
    6 дек 2006
    Сообщения:
    302
    Адрес:
    г. Харьков
    Проблема с db возникает из-за того, что дебаг не понимает инстукции с старшими частями 16-битных регистров, что само по себе очень страшно, например add al,9 - нормально, а add ah,9 - коряво. Насчёт того, как получить исходный текст, используй ИДУ, предварительно настроив смещение на 7с00.
     
  7. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    поищи на форуме, кто-то выкладывал дизасм с коммментами.
     
  8. S_Alex

    S_Alex Alex

    Публикаций:
    0
    Регистрация:
    27 авг 2004
    Сообщения:
    561
    Адрес:
    Ukraine
    Кури MSDN MBR (Master Boot Record).
     
  9. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Скорее всего используются 32битные регистры, а дебаг показывает
    Код (Text):
    1. mov eax, 1
    как
    Код (Text):
    1. db 66
    2. mov ax, 1
    3. db 00
    4. db 00
    Ну и дальше, это все изза того, что один и тот же опкод в разной адресации означает разные команды.

    B8 02 00 90 90 может означать и MOV EAX, 90900002 и MOV AX, 0002 / NOP / NOP

    Это раз. Два - там используются команды расширенного алфавита (первый байт опкода 0F), debug их тоже не кушает. поэтому весь листинг после первой такой команды сбивается напрочь:
     
  10. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    И в одном месте там есть действительно DB - они там байты экономили.
    Т.е. выходит что-то типа такого (как пример, точно не помню):
    Код (Text):
    1.    db  24h
    2. Error:
    3.    stc
    И если переход происходит на Error, то CF устанавливается.
    А если нет, то эта штука превращается в and al,0F9h -> CF сбрасывается.
    В общем там такой прикол в одном месте был.

    А вообще возьми IDA, там всё легко разберёш.
    Если пятую качать много, то можно и поменьше версию.
    Я то-ли в третьей, то-ли в четвёртой дизасмил.
    Там только интерфейс консольный - по типу Volkov Commander.
    А так удобно.