Важная информация

User Tag List

Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 17

Тема: Sourcer - помогите с настройками

  1. #1
    Activist
    Регистрация
    27.11.2005
    Адрес
    г. Самара
    Сообщений
    205
    Спасибо Благодарностей отдано 
    89
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Sourcer - помогите с настройками

    привет!

    решил вот попробовать разобраться с тем как Microid research свои BIOSы строит.
    нашел тулзу для разпаковки MRBios - получил несколько модулей.
    начал их пытаться Sourcer'ом декомпилировать
    и да, тулза для обратной запаковки тоже нашлась. на той же BBS скачал где и коллекцию MRBIOS'ов.
    но вот - какие настройки применить в толк не возьму. какой сейчас в ходу ассемблер? есть там куча MASM'ов есть TASM'ы и даже OPTASM - какой код легче читается?

    для чего мне понадобилось нос сувать в биос от микроида? а узнать как устроен у них флоппи-биос и как они умудряются на одном контроллере получать 4 флоппи-устройства? да и - может быть этот биос можно выдрать да модифицировать прошивку с авардовым биосом?

    может быть инфа поможет написать кому-то другому разширитель для стандартного флоппи-биоса? я не знаю, но попробовать надо.

    словом, подсобите кто знает. какие настройки Sourcer'a помогут легче в коде разобраться.

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

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2
    Member
    Регистрация
    12.11.2019
    Адрес
    г. Прага, Чехия
    Сообщений
    83
    Спасибо Благодарностей отдано 
    26
    Спасибо Благодарностей получено 
    45
    Поблагодарили
    33 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Возможно не совсем в тему, но классический PC/XT контроллер NEC µPD765 / i8272 и более поздний i82072A поддерживает до 4-х floppy приводов.
    И классические платы FDC (регистры и цепи на них) тоже на это рассчитаны, они оперируют с FDD0 - FDD3.

    Используется два коннектора, каждый из которых поддерживает по два привода.
    Обычно один коннектор использовался классически внутри корпуса, а второй был выведен наружу для подключения внешних дисководов.
    Например здесь есть фото классической старой платы : https://en.wikipedia.org/wiki/Floppy-disk_controller
    Левый коннектор - для внутренних двух дисков, правый - наружу, для внешних. И это работало.
    На советской ЕС1840/41 тоже два разъема, на каждый можно повесить по два привода.

    В этом случае в БИОСе ничего мудрить не надо. Старые БИОСы есть в исходниках, их реассемблировать не надо.

    Другое дело, что позднее поддержку 4-х FDD устройств на платах перестали поддерживать. Чем современнее железо, тем меньше шансов.

    Это если речь о физических устройствах.
    Существует вариант логического разделения (две буквы на одном приводе), это реализовано программно на 80-дорожечных дисководах, эмулирующих две 40-дорожечных дискеты. При этом четные дорожки работают как обычно, а нечетные отображаются как второй диск. Реализация этого проста - seek через одну дорожку, исходники тоже есть.

    Что именно делает MRBIOS не скажу, не интересовался.
    Если он чем-то оригинален и действительно нужно его реассемблировать - рекомендую использовать IDA, не SOURCER, но это мое личное мнение.
    Последний раз редактировалось Gleb; 24.06.2021 в 07:46.

  4. #3
    Master Аватар для Sandro
    Регистрация
    20.01.2010
    Адрес
    г. Зеленоград
    Сообщений
    590
    Спасибо Благодарностей отдано 
    27
    Спасибо Благодарностей получено 
    212
    Поблагодарили
    115 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от vivat Посмотреть сообщение
    словом, подсобите кто знает. какие настройки Sourcer'a помогут легче в коде разобраться.
    У Sourcer'а есть ровно одна полезная настройка: стереть его нахрен.

    IDA наше всё.

  5. Этот пользователь поблагодарил Sandro за это полезное сообщение:

    vivat (24.06.2021)

  6. #4
    Activist
    Регистрация
    27.11.2005
    Адрес
    г. Самара
    Сообщений
    205
    Спасибо Благодарностей отдано 
    89
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sandro Посмотреть сообщение
    одна полезная настройка: стереть его нахрен
    бгггы =))) ну спасибо, ну порадовали.
    ну че ок, полезу за Идой...
    а я такой помню его со времен ЕС1840 (и на таком поработать приходилось когда лаборантом в своем родном Куйбышевском Политехе трудился) - штуденты им дизассемблировали.

    - - - Добавлено - - -

    Цитата Сообщение от Gleb Посмотреть сообщение
    Что именно делает MRBIOS не скажу, не интересовался.
    че делает - скажем так, он ненавидел Зойдберга еще до того как это стало модным - умел софтовый райд до того как это стало мейнстримом. как минимум 8 иде устройств по 2 иде каналам умел. не напрямки а при помощи хитрой схемки сплиттера-демультипликатора из парной ИДшки и нужного колва буферных элементов.

    http://www.rom.by/book/MrBIOS а это небольшое ромбаевское вики по этой линейке биосов и по фирме. а я такой биос на собственной шкуре изпытал. в политехе работал. попросил обновление для своего компа - дали пенек (был 386) на intel Anvanced/EV Endeavor i430fx) к нему случайно нашелся mrbios - тогда сайт и фирма еще были живы. влил, офигел. он и память чутка подразгонял - штатно было 60 и 70 наносекунд. мрбиос умел 50 поставить. чучуть но был прирост, очень небольшой но я был рад до пяток. и про 4 флопа и 8 винтов (с возможностью софт-райда) фичу заметил.
    и на моей мамке он пофиксил то что не мог мегатренд - вибро-блястер глюкаво работал под родным биосом - так до смерти мамки и не пофиксили. а под мровским биосом блястер заржал аки конь.

    а так - наверное в остальном биос как биос. попользовался. как увольнялся комп вернул в состояние как было, влил родной бакуп.
    но если честно мечтой стало приобресть эту мамку. я и МРбиосов накачал. могу коллекцию выложить с комплектом тулзов по раздербаниванию биосов и сборке их обратно.

    мрбиос это как брабус в мире машин - любой брабус это мерседес,но со знаком "сто лучших товаров".
    Последний раз редактировалось vivat; 24.06.2021 в 10:29.

  7. #5
    Activist
    Регистрация
    27.11.2005
    Адрес
    г. Самара
    Сообщений
    205
    Спасибо Благодарностей отдано 
    89
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    а правда ли что из биоса int19 не вызывают? а как тогда отловить процедуру работающую с дисковыми (флоповыми) устройствами?
    и да вот листинг разпотрошенного (пока только почиканного на модули) БИОСа

    MRDECO * V.K. * 27.04.1998
    mr_asus1.bio...
    Decompressor=$f000:17d0
    f000:0b20 [06b7] -> [0a63]
    f000:1900 [1133] -> [149c]
    f000:2a50 [0bdf] -> [0de5]
    e900:0000 [41e0] -> [527a]

    с какого модуля следует начинать копания?
    Последний раз редактировалось vivat; 24.06.2021 в 18:35.

  8. #6
    Member
    Регистрация
    12.11.2019
    Адрес
    г. Прага, Чехия
    Сообщений
    83
    Спасибо Благодарностей отдано 
    26
    Спасибо Благодарностей получено 
    45
    Поблагодарили
    33 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    int 19 (в десятичной системе, он же int 13h в шестнадцатиричной) вызывают и из БИОСа, например при загрузке.

    Но вам то нужны не вызовы, а сам обработчик (вектор) этого прерывания.

    Находиться теоретически может в любой части, лично я бы начал с f000:2a50, но не факт.

  9. Этот пользователь поблагодарил Gleb за это полезное сообщение:

    vivat (24.06.2021)

  10. #7
    Activist
    Регистрация
    27.11.2005
    Адрес
    г. Самара
    Сообщений
    205
    Спасибо Благодарностей отдано 
    89
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    в модуле e900:0000 [41e0] -> [527a]
    нашел вот че
    mov al, 0
    mov dx, 3F2h
    out dx, al ; Floppy: digital output reg bits:
    ; 0-1: Drive to select 0-3 (AT: bit 1 not used)
    ; 2: 0=reset diskette controller; 1=enable controller
    ; 3: 1=enable diskette DMA and interrupts
    ; 4-7: drive motor enable. Set bits to turn drive ON.
    ;
    mov dx, 372h
    out dx, al ; Floppy: digital output reg bits:
    ; 0-1: Drive to select 0-3 (AT: bit 1 not used)
    ; 2: 0=reset diskette controller; 1=enable controller
    ; 3: 1=enable diskette DMA and interrupts
    ; 4-7: drive motor enable. Set bits to turn drive ON.
    ;

    чето мне кажется что клад Флинта на вид должен быть побольше

  11. #8
    Member
    Регистрация
    12.11.2019
    Адрес
    г. Прага, Чехия
    Сообщений
    83
    Спасибо Благодарностей отдано 
    26
    Спасибо Благодарностей получено 
    45
    Поблагодарили
    33 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Конечно же это не весь обработчик int 13h, возможно лишь кусок тестовой процедуры по включению (POST), нужно искать дальше...

    - - - Добавлено - - -

    Чисто для ориентации - в классическом BIOS обработчик int 13h выглядит примерно так: https://github.com/kaneton/appendix-...c/diskette.asm

    Позднее накладываемая на "дискетный" int 13h поддержка жестких дисков перенаправляла старый int 13h на int 40h, не пугайтесь, если встретите такое.

  12. #9
    Activist
    Регистрация
    27.11.2005
    Адрес
    г. Самара
    Сообщений
    205
    Спасибо Благодарностей отдано 
    89
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ёшки-матрешки!
    загрузил я весь биос в иду - вижу сплошные db
    смеха ради тыкнул команду code - а мамыньки-родные че тама полезло - нечисти-то всякоразной, а на вид все благопристойно... =)
    вот ведь в тихом омуте черти водятся...

    но все равно я не нашел в файле такого адреса старта разпаковщика биоса в оперативку чтоб стартануть из теневого озу.
    в смещении 5 циферок ида кажет а сегмент 0000
    может мне надо чето подправить? а можно ли адрес сегмента изменить? чтоб стало не 0000 а скажем f000? в каком меню это надо переназначение сделать?
    Decompressor=$f000:17d0 - решил я его поглядеть для начала.

    Цитата Сообщение от Gleb Посмотреть сообщение
    не пугайтесь, если встретите такое.
    чтоб напугаться надо еще продраться в этот лес а меня какие-то кусты не пускают =)
    не могу понять как в иде загрузить так бинарник, чтоб вместо seg000 мне показывало нужные f000.

    - - - Добавлено - - -

    решил я поглядеть декомпрессор что находится вначале "бутблока" флеш-биоса.
    Decompressor=$f000:17d0
    представил понарошку что базовый сегмент у нас не f000 а 0000 а все адреса становятся пятизначными тогда по правилу сложения базы со смещением должон получиться нечто подобное 117d0
    и я таки пошел по тому адресу, а там -
    seg000:117D0 ; ---------------------------------------------------------------------------
    seg000:117D0 xor si, si
    seg000:117D2 xor di, di
    //di:=0
    //si :=0
    seg000:117D4 lodsw
    //??? ... f**k it for now
    //Команда LODSW копирует слово из памяти по адресу DS:SI в регистр AX. После выполнения команды, //регистр SI увеличивается на 2
    //ax:=@0:0??; (nyet!!! DS:= адрес нахождения первого пакованного модуля BIOS во флешке.
    снова не то. )

    //cx=? cx:=0??
    //CPU RESET = all_regs:=0???
    seg000:117D5 mov cx, ax
    //cx:=ax(nyet!!!)
    //ax:=cx(da!)
    seg000:117D7 add ax, 2
    //ax:=ax+2
    seg000:117DA xchg ax, bx
    //tmp:=ax
    //ax:=bx
    //bx:=tmp
    seg000:117DB mov dh, [bx]
    //dh:=@bx
    seg000:117DD mov dl, 1
    seg000:117DF mov bp, 1
    //addr:=1@bx
    seg000:117E2 jmp near ptr unk_1866
    seg000:117E2 ; ---------------------------------------------------------------------------
    а там меня послали куда Макар телят не пас.
    unk_1866 указывает на область где лишь одни ff пасутся табунами. =( как туда джампать?
    наверное я с неверного места начал дизассемблинг? или так задумано?

    наверное 1866 это адрес по которому кладутся некоторые данные в результате работы процедуры.

    где я ошибся?
    (вариант ВЕЗДЕ отбрасываю как очевидный =)
    что остается?
    Последний раз редактировалось vivat; 25.06.2021 в 11:16.

  13. #10
    Member
    Регистрация
    12.11.2019
    Адрес
    г. Прага, Чехия
    Сообщений
    83
    Спасибо Благодарностей отдано 
    26
    Спасибо Благодарностей получено 
    45
    Поблагодарили
    33 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Поддержка int 13h в основной части (прямо в нераспакованном файле).
    Проект для ida 4.1.5 и MrBIOS 3.19 во вложении, можно распутывать например с адреса F000 : DCA8

    Но особого смысла в дизассемблировании не вижу.
    Уверен, что никаких финтов там нет, обычная работа с контроллерами.

    Уже сейчас, без дальнейшего распутывания видно, что поддерживаются два контроллера (Primary 3F0h и Secondary 370h), соответственно этот БИОС может теоретически поддерживать до 8-ми FDD в зависимости от типа примененных контроллеров.

    Для поддержи 4-х дисководов нужно иметь как минимум два коннектора для дисководов.
    Оба в материнке очень большая редкость, скорее дополнительный контроллер в слоте расширения.

    Разве что спортивный интерес. Удачи !


    MrBios319-Ida415.zip
    Последний раз редактировалось Gleb; 26.06.2021 в 18:27.

Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •