BIOS Disassembling - Версия для печати +- DC-SWAT Forum (http://www.dc-swat.ru/forum) +-- Форум: Sega Dreamcast (/forum-2.html) +--- Форум: Hardware (/forum-9.html) +--- Тема: BIOS Disassembling (/thread-1752.html) |
RE: BIOS Disassembling - D_E_N_I_S_Z_V - 23.12.2011 12:59 Я тоже хотел бы подключить винт, но нифига не разбираюсь в драйверах, программы писать не умею . Паять могу, телевизор там починить или другую технику. Но в подключении винта врятли помогу. LEUMAS "Не в обибу но я заманался ноющим лантухам что либо на эту тему обьяснять, хай сами мозгуют. Поставить ведь элементарно, сравниваем по даташитам распиновку чипов и паяем" Могли бы и посказать ноющему лонтуху какую именно можно микруху припаять, по даташитам долго искать придется мне . Вам то хорошо, вы себе наверно биосмод уже замутили RE: BIOS Disassembling - cybdyn - 23.12.2011 13:41 уже нашёл DCDBSysArc990907E осваиваю. но в софт поддержке всё еще нуждаюсь)) неужто такая проблема читать/писать на шину? RE: BIOS Disassembling - SWAT - 23.12.2011 13:48 Нет никаких проблем. RE: BIOS Disassembling - cybdyn - 23.12.2011 15:54 тогда подключение HDD и сдрома - вопрос времени и желания. если я буду осваивать , это может затянуться... так как я в дриме неделю))) RE: BIOS Disassembling - SWAT - 24.12.2011 13:53 Ну ничего страшного, здесь люди терпеливые, ты главное сделай. RE: BIOS Disassembling - cybdyn - 24.12.2011 21:44 work in progress RE: BIOS Disassembling - cybdyn - 26.12.2011 18:16 такой вопрос, новый биос может быть любого размера? механизм чек-сумм действует на опредделённый объём или можно сделать его маленьким? так же как вариант, возможнали официальная загрузка обновлений биоса или оболочка, по типу FREE-MC-BOOT для пс2. не хочется биос мод делать, хотелось бы кинуть пару -тройку адресных линий и залить прогу через это окно... RE: BIOS Disassembling - SWAT - 26.12.2011 20:10 Родной биос софтварно не прошивается, так что только биос мод. Чек сумму биоса проверяет сам гдром, если она не совпала он блокируется и все накрывается медным тазом. Если ты будешь заменять гдром аппаратно, то тебе это в принципе пофиг, биос можно делать любой. RE: BIOS Disassembling - cybdyn - 27.12.2011 00:50 "Чек сумму биоса проверяет сам гдром" как это он её проверяет, он же SLAVE устройство, чёто непонятно... во вторых у него нет достаточно ног. гдром же сидит как ата устройство (D0-D15) (A0-A2 + CS1, CS3) . эт я условно написал. или там ещё какоёто доступ. какойнить последователльный. тогда как он чип мод пропускает , обьсяни? как тогда ты делаеш биос-мод, точнее при компиляции биоса есть коректировка по чексумме или запись её в какуюто ячейку.. чек сумму обычно делает встроеный код в проц. если таковое вообще предусмотрено... и то он делает для того чтобы понять кореектная микруха/программа сидит на шине... иначе выходит в некое исключение.. так по край мере на моей памяти с другими процами.. ещё чек суму может проверить код в самом биосе , при старт-апе. естестно при перекомпиляции биоса этого куска кода нет и ничего и не проверяется))) эта проверка в основном нужна чтобы не дать комунить подменить отдельные ячейки. RE: BIOS Disassembling - alex - 27.12.2011 02:07 Чек сумму биоса проверяет CPU, но там не совсем проверка чек суммы идет(алгоритм проверки неизвестен), иначе даже при изменении 1 байта в биосе он бы проверку не проходил, а есть версии измененного биоса (в том числе с отключенной проверкой на регион) которые проходят проверку на подлинность. Если биос не прошел проверку на подлинность, то блокируется GD-ROM дрима, а возможно и вся шина G1. RE: BIOS Disassembling - cybdyn - 27.12.2011 02:24 ну я ж и говорю что обычно страт-ап проца проверяет чек сум... но, вопрос по биос моду, тогда как? там это предусмотрено при компиляции? можно как вариант, стартануть с обычноо биоса, а в какойто момент перекинуть на левый, по типу чип мод так и делает, через пределённое число актов или типа того.. на счёт блокирования чего либо там, это не факт, достаточно просто не выходить на исполнение инсрукций... и как вариант мот всё таки есть окно, как в пс1 взломщик кодов загружался или как в пс2 фри-мак-бут, у дрима есть чтонить подобное? RE: BIOS Disassembling - alex - 27.12.2011 03:24 Цитата:как вариант мот всё таки есть окно, как в пс1 взломщик кодов загружался или как в пс2 фри-мак-бут, у дрима есть чтонить подобное? В дриме нет ничего подобного, только с GD-rom дрим грузит. RE: BIOS Disassembling - SWAT - 27.12.2011 07:45 Я не правильно выразился. PHP код: register unsigned long p, x; Вот так происходит проверка биоса. Это не алгоритм проверки, а то как она запускается. Т.е. есть некий секретный регистр: 0xa05f74e4, отправив которому размер биоса, необходимо прогнать его весь по рабочему регистру. И регистр этот находится в интерфейсе для гдрома, если судить по адресам: PHP код: /* IDE interface registers */ По поводу переключения биоса, мне кажется это реально сделать, нужно просто сделать какой нить регистр новый (т.е. повесить его на шину какую нибудь), с помощью которого можно будет переключать биос. Схема я думаю должна быть простой. Далее повесить break handler на запись по адресу 0xa05f74e4 регистра и переключать в тот момент, когда в него отправляют размер. Потом правда нужно как то обратно это сделать, иначе зависнет RE: BIOS Disassembling - cybdyn - 27.12.2011 12:50 из доков на дрим (E_DC_HW_outline.pdf) если судить по адресам к гдрому никаого отношения... $005F7400 - $005F74FF область G1 Control Reg 0xa05f74e4 - регистр управления шиной г1. связанный вероятно именно с биосом, точнее с областью памяти 0x1f0000 он задаёт окно, широной в размер биоса, чтобы при копировании его в 0xa0000000 , он мог нормально прочитаться по 8 бит. 0xa0000000 - известно что за адрес, это память? когда в неё передаётся управление? ещё, по какому адресу пристарте проца передаётся управлние какой первй адрес. у пс1 и пс2 процов мипс первй адрес 0xBFC0000 , но реально верно будет и по 0x1FC0000 0xАFC0000 , т.к последние разряды выбирают режим кэша, - приведённый код должен храниться в коде нового биоса? в самом начале вызывается? - биос компилиться под 0x1f0000 или 0xa0000000 ? - бинарник биоса есть гденить?? можно скачать? и неплохобы дисассемблер или прогу с визуальным интерфейсом.. RE: BIOS Disassembling - SWAT - 28.12.2011 07:28 Ну он же на этой шине сидит... Ты управляешь им с помощью этих контрол регистров. Там больше нечем управлять, сами по себе они бесполезны. Может проц отключает эти контрол регистры, а не привод. Просто если совсем рубануть эту шину, то биос и флеш работать не будут, они тоже на G1 сидят. 0xa0000000 - это чип биоса с маппингом в адресное пространство CPU. С этого адреса дрим начинает свою работу. Скачать bios RE: BIOS Disassembling - cybdyn - 28.12.2011 10:41 контрол регистры задают режим работы при обращении на шину. так как реги проца 32бита. а шина 8 или 16. сосответсвенно можно по разному интреспритировать обращене и генерирование адреса, так же время стробов чтения и записи. физически эти ренги сидят в холли. так же возможно это рег задаём маску адресов. *((volatile unsigned long *)0xa05f74e4) = 0x1fffff; а вот для чего вычиывать его не знаю. повторю: - приведённый код должен храниться в коде нового биоса? в самом начале вызывается? - биос компилиться под 0x1f0000 или 0xa0000000 ? - в чём разница обращения по адрксам 0x1f0000 или 0xa0000000 ? RE: BIOS Disassembling - SWAT - 28.12.2011 12:06 Этот код может быть где угодно. Биос компилится под нулевой адрес. 0x1f0000 - это не адрес вообще! 0x1fffff - Это размер биоса, 2 мб. В регистр 0xa05f74e4 передается размер! RE: BIOS Disassembling - cybdyn - 28.12.2011 12:43 а, да точно. биос с нуля же. вот задизасемблил, есть в этом коде смысл, или чёт нето. и что примерно на атрте происходит? H'8c010000: H'e3ff .. mov H'ffffffff, R3 H'8c010002: H'4328 (C shll16 R3 H'8c010004: H'6439 9d swap.w R3, R4 H'8c010006: H'4318 .C shll8 R3 H'8c010008: H'4409 .D shlr2 R4 H'8c01000a: H'4409 .D shlr2 R4 H'8c01000c: H'5039 9P mov.l @(9, R3), R0 H'8c01000e: H'240a .$ xor R0, R4 H'8c010010: H'204e N mulu.w R4, R0 H'8c010012: H'001a .. sts MACL, R0 H'8c010014: H'2008 . tst R0, R0 H'8c010016: H'8b77 w. bf H'8c010108 H'8c010018: H'1304 .. mov.l R0, @(4, R3) H'8c01001a: H'e109 .. mov H'09, R1 H'8c01001c: H'4118 .A shll8 R1 H'8c01001e: H'7129 )q add H'29, R1 H'8c010020: H'1317 .. mov.l R1, @(7, R3) H'8c010022: H'4321 !C shar R3 H'8c010024: H'e001 .. mov H'01, R0 H'8c010026: H'8132 2. mov.w R0, @(2, R3) H'8c010028: H'e0c3 .. mov H'ffffffc3, R0 H'8c01002a: H'4028 (@ shll16 R0 H'8c01002c: H'cbcd .. or H'cd, R0 H'8c01002e: H'4018 .@ shll8 R0 H'8c010030: H'cbb0 .. or H'b0, R0 H'8c010032: H'4001 .@ shlr R0 H'8c010034: H'1303 .. mov.l R0, @(3, R3) H'8c010036: H'e501 .. mov H'01, R5 H'8c010038: H'4505 .E rotr R5 H'8c01003a: H'7560 `u add H'60, R5 H'8c01003c: H'6653 Sf mov R5, R6 H'8c01003e: H'7620 v add H'20, R6 H'8c010040: H'c800 .. tst H'00, R0 H'8c010042: H'0583 .. pref @R5 H'8c010044: H'462b +F jmp @R6 H'8c010046: H'0009 .. nop RE: BIOS Disassembling - SWAT - 28.12.2011 14:28 http://www.ludd.luth.se/~jlo/dc/bootROM.c http://www.ludd.luth.se/~jlo/dc/bootROM.h http://www.ludd.luth.se/~jlo/dc/security_stuff.c RE: BIOS Disassembling - cybdyn - 30.01.2012 12:21 (SWAT) ".. есть некий секретный регистр: 0xa05f74e4, отправив которому размер биоса, необходимо прогнать его весь по рабочему регистру." - я всётки так и не понял? ну допусти этот так, но новый биос (к примеру в том что в биос-моде используется) уже имеет не ту чек сумму. есть ли проверка на некую чексумму при компиляции или это предусмотрено той прогой которая собирает образ биоса. и при сборке нового меняется только область кода в которй сидит ОС? к примеру в пс1, старт идёт с нуля биоса (0хBFC0-0000), инициализируется железо, различние подсистемы обработки прерываний, а в конце ос переписывается в память и стратует уже с адресов памяти. (0х80030000) ? |