Создать ответ 
 
Рейтинг темы:
  • Голосов: 0 - Средняя оценка: 0
  • 1
  • 2
  • 3
  • 4
  • 5
BIOS protection by Holly
Автор Сообщение
megavolt85 Не на форуме
Супермодератор
******

Сообщений: 3160
Зарегистрирован: 24.03.2012
Рейтинг: 38
Сказал спасибо: 186
Поблагодарили 1560 раз(а) в 918 сообщ.
Сообщение: #101
RE: BIOS protection by Holly
Цитата:11 11 11 11
11 10 11 12
11 10 12 11

00 00 00 00 00 00 00 00
00 00 00 01 00 00 FF FF
00 00 00 01 80 00 00 00

11 11 11 11 22 22 22 22 33 33 33 33 44 44 44 44
11 11 11 10 22 22 22 22 33 33 34 33 44 44 43 45

вывод: блоки 32-х битные

HKT-3030, Bios mod, SD mod, VGA internal mod, G1ATA mod, Region changer mod, PSU mod
(Последний раз сообщение было отредактировано 26.06.2016 в 02:10, отредактировал пользователь megavolt85.)
26.06.2016 02:07
Найти все сообщения Цитировать это сообщение
 Сказали спасибо: MetalliC
MetalliC Не на форуме
Продвинутый
***

Сообщений: 185
Зарегистрирован: 31.07.2013
Рейтинг: 2
Сказал спасибо: 15
Поблагодарили 33 раз(а) в 15 сообщ.
Сообщение: #102
RE: BIOS protection by Holly
выглядит многообещающе.
только мне думается там операции не арифметические а булевы, тогда красное на прошлой странице и с 01..FF выглядит вполне закономерным.
и возможно еще со сдвигами, с "прокруткой" суммы за 4 шага, от них и получаются эти "блоки"

попробуй такое:
00 00 00 00 00 00 00 00
00 00 00 FF 00 00 00 FF
или
00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 01 00 00 00 FE 00 00 00 FF
или что-то еще в таком репертуаре
(Последний раз сообщение было отредактировано 26.06.2016 в 02:38, отредактировал пользователь MetalliC.)
26.06.2016 02:34
Найти все сообщения Цитировать это сообщение
megavolt85 Не на форуме
Супермодератор
******

Сообщений: 3160
Зарегистрирован: 24.03.2012
Рейтинг: 38
Сказал спасибо: 186
Поблагодарили 1560 раз(а) в 918 сообщ.
Сообщение: #103
RE: BIOS protection by Holly
Цитата:00 00 00 00 00 00 00 00
00 00 00 FF 00 00 00 FF

00 00 00 00 00 00 00 00 00 00 00 00
00 00 00 01 00 00 00 FE 00 00 00 FF

HKT-3030, Bios mod, SD mod, VGA internal mod, G1ATA mod, Region changer mod, PSU mod
26.06.2016 02:49
Найти все сообщения Цитировать это сообщение
MetalliC Не на форуме
Продвинутый
***

Сообщений: 185
Зарегистрирован: 31.07.2013
Рейтинг: 2
Сказал спасибо: 15
Поблагодарили 33 раз(а) в 15 сообщ.
Сообщение: #104
RE: BIOS protection by Holly
спасиб
мда, значит там не банальный xor ))
(Последний раз сообщение было отредактировано 26.06.2016 в 02:52, отредактировал пользователь MetalliC.)
26.06.2016 02:51
Найти все сообщения Цитировать это сообщение
megavolt85 Не на форуме
Супермодератор
******

Сообщений: 3160
Зарегистрирован: 24.03.2012
Рейтинг: 38
Сказал спасибо: 186
Поблагодарили 1560 раз(а) в 918 сообщ.
Сообщение: #105
RE: BIOS protection by Holly
мда, явно не xor, а как похоже было

видимо операции подсчёта на уровне +- ,но регистр unsigned int
Цитата:offset 0x204 .................... offset 0x320
11 11 11 11 ..................... 00 00 00 00
11 11 11 10 ..................... 00 00 00 01

HKT-3030, Bios mod, SD mod, VGA internal mod, G1ATA mod, Region changer mod, PSU mod
(Последний раз сообщение было отредактировано 26.06.2016 в 05:24, отредактировал пользователь megavolt85.)
26.06.2016 03:20
Найти все сообщения Цитировать это сообщение
 Сказали спасибо: MetalliC
alex Не на форуме
Ветеран
*****

Сообщений: 1276
Зарегистрирован: 11.07.2005
Рейтинг: 2
Сказал спасибо: 4
Поблагодарили 69 раз(а) в 53 сообщ.
Сообщение: #106
RE: BIOS protection by Holly
(24.06.2016 19:30)SWAT писал(а):  Мне кажется тут все в итоге окажется банально просто, он не проверял толком homebrew Smile
Что мы вообще гадаем, может кто-то себе прошить его да проверить? У меня просто привода нету на дриме щас.

Вот его видео с запуском хомбрю, правда это прошлая версия его биоса.

Запуск хомбрю смотрим с 0:55 секунды.



Здесь была подпись.
(Последний раз сообщение было отредактировано 26.06.2016 в 11:14, отредактировал пользователь alex.)
26.06.2016 11:11
Найти все сообщения Цитировать это сообщение
SWAT Не на форуме
Администратор
*******

Сообщений: 7239
Зарегистрирован: 04.01.2005
Рейтинг: 30
Сказал спасибо: 149
Поблагодарили 1215 раз(а) в 763 сообщ.
Сообщение: #107
RE: BIOS protection by Holly
А прошлая версия использовала этот 1кб кусок?
Наверное он для тестов использовал только его, а для релиза уже подобрал вручную сумму всего биоса.

[Изображение: barbers.png]
26.06.2016 12:31
Вебсайт Найти все сообщения Цитировать это сообщение
MetalliC Не на форуме
Продвинутый
***

Сообщений: 185
Зарегистрирован: 31.07.2013
Рейтинг: 2
Сказал спасибо: 15
Поблагодарили 33 раз(а) в 15 сообщ.
Сообщение: #108
RE: BIOS protection by Holly
(26.06.2016 03:20)megavolt85 писал(а):  видимо операции подсчёта на уровне +- ,но регистр unsigned int
Цитата:offset 0x204 .................... offset 0x320
11 11 11 11 ..................... 00 00 00 00
11 11 11 10 ..................... 00 00 00 01
слишком мало известно чтоб делать выводы какого типа там операции.
по результатам твоих тестов и модификации JC, можно лишь с уверенностью сказать что можно обменивать биты у байтов в той же позиции в 32бит блоке.

но вот такое:
11 11 11 11 22 22 22 22 33 33 33 33
11 11 11 10 22 22 22 22 33 33 33 34
11->10 - сброшен бит 0
33->34 - сброшены биты 0 и 1, установлен бит 2
ожидаемо уже не прокатывает

а проходит лишь что-то вроде
11 11 11 10 22 22 22 22 33 33 34 33 44 44 43 45
10 и 45 - обменяли бит 0, в 11 сбросили в 44 взвели
34 и 43 - обменяли биты 0 - 2
26.06.2016 12:54
Найти все сообщения Цитировать это сообщение
MetalliC Не на форуме
Продвинутый
***

Сообщений: 185
Зарегистрирован: 31.07.2013
Рейтинг: 2
Сказал спасибо: 15
Поблагодарили 33 раз(а) в 15 сообщ.
Сообщение: #109
RE: BIOS protection by Holly
еще результаты тестов:
в одном из предыдущих я пробовал менять конечный адрес на 3fe и 3fd и получал негативный результат, но похоже сам адрес на сумму таки не влияет

в сегодняшних тестах я ставил его на long с нулями, и читал последним после вычитки всего блока - сумма бьется, в том числе с любым значением 2х младших бит регистра конечного адреса типа 40f 40e 40d, проверка проходит ОК
так что циклических сдвигов текущей суммы после вычитки и суммирования байт там нет

так же пробовал ставить конечный 401 - результат негативный (я предположил что в этом случае первые 2 байта могут не суммироваться, но нет, не тот случай)

но в общем и в целом всё выглядит будто оно действительно суммирует 32бит словами, думается в процессе вычитки сохраняет в регистрах/триггерах считанные с рома байты, и затем при вычитке 4го суммирует как одно целое.
а так же при достижении конечного адреса, что может объяснить некоторые непонятки с ним, типа почему не прокатило с 3fe и 3fd - не были считаны во внутренний регистр последние нули, и там остались ненулевые байты с предыдущего 32бит слова - сумма обломалась.
26.06.2016 15:30
Найти все сообщения Цитировать это сообщение
megavolt85 Не на форуме
Супермодератор
******

Сообщений: 3160
Зарегистрирован: 24.03.2012
Рейтинг: 38
Сказал спасибо: 186
Поблагодарили 1560 раз(а) в 918 сообщ.
Сообщение: #110
RE: BIOS protection by Holly
надо будет попробовать биосы с загрузчиком DS переделать, чтоб проходили проверку на весь размер

HKT-3030, Bios mod, SD mod, VGA internal mod, G1ATA mod, Region changer mod, PSU mod
28.06.2016 02:30
Найти все сообщения Цитировать это сообщение
MetalliC Не на форуме
Продвинутый
***

Сообщений: 185
Зарегистрирован: 31.07.2013
Рейтинг: 2
Сказал спасибо: 15
Поблагодарили 33 раз(а) в 15 сообщ.
Сообщение: #111
RE: BIOS protection by Holly
гм, собсно для того чтоб это можно было сделать и пытаемся выяснить алгоритм.
28.06.2016 02:56
Найти все сообщения Цитировать это сообщение
megavolt85 Не на форуме
Супермодератор
******

Сообщений: 3160
Зарегистрирован: 24.03.2012
Рейтинг: 38
Сказал спасибо: 186
Поблагодарили 1560 раз(а) в 918 сообщ.
Сообщение: #112
RE: BIOS protection by Holly
Занимательная математика

Код:
#include <stdint.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <ctype.h>

int main( int argc, char *argv[] )
{
    FILE *fp;
    int i,n=0,size;
    char *buf = malloc(2*1024*1024);
    uint64_t crc, tmp, tmp2, tmp3, sum=0, sum2=0;
    
    fp = fopen(argv[1],"rb");
    
    if(!fp)
    {
        printf("can't open %s\n",argv[1]);
        return 0;
    }
    
    fseek(fp, 0, SEEK_END);
    size = ftell(fp);
    fseek(fp, 0, SEEK_SET);
    
    fread(buf,size,1,fp);
    
    fclose(fp);
    
    for(i=0;i<size;i+=8)
    {
        memcpy(&tmp, &buf[i],4);
        memcpy(&tmp2, &buf[i+4],4);
        
        tmp3 = tmp-tmp2;
        
        if(crc + tmp3 >= 0xffffffff)
        {
            crc = ((crc + tmp3) >> 32);
            n++;
        }
        else
            crc += tmp3;
        
        if(sum + tmp >= 0xffffffff)
        {
            sum = ((sum + tmp) >> 32);
        }
        else
            sum += tmp;
        
        if(sum2 + tmp2 >= 0xffffffff)
        {
            sum2 = ((sum2 + tmp2) >> 32);
        }
        else
            sum2 += tmp2;
    }
    
    printf("KS =  %08X\n",(uint32_t)(crc&0xffffffff));
    printf("N = %d\t%08X\n",n,n);
    printf("SUM1 = %08X\n",(uint32_t)sum);
    printf("SUM2 = %08X\n",(uint32_t)sum2);
    
    return 0;
}

Код:
megavolt@megavolt-GA-790XTA-UD4:~/dreamcast/crc$ ./test 1_01d_01.bios
KS =  A49ED5DB
N = 88922    00015B5A
SUM1 = 796E35CD
SUM2 = 79694A7E
megavolt@megavolt-GA-790XTA-UD4:~/dreamcast/crc$ ./test 1_01d_02.bios
KS =  A49ED5DB
N = 88956    00015B7C
SUM1 = 796E35CD
SUM2 = 79694A7E
megavolt@megavolt-GA-790XTA-UD4:~/dreamcast/crc$ ./test 1_011_01.bios
KS =  71E0CBF9
N = 89624    00015E18
SUM1 = 185C35CD
SUM2 = 4B155460
megavolt@megavolt-GA-790XTA-UD4:~/dreamcast/crc$ ./test Link83_bios_1.0.bios
KS =  71E0CBF9
N = 89599    00015DFF
SUM1 = 185C35CD
SUM2 = 4B155460

HKT-3030, Bios mod, SD mod, VGA internal mod, G1ATA mod, Region changer mod, PSU mod
(Последний раз сообщение было отредактировано 28.06.2016 в 22:36, отредактировал пользователь megavolt85.)
28.06.2016 22:34
Найти все сообщения Цитировать это сообщение
MetalliC Не на форуме
Продвинутый
***

Сообщений: 185
Зарегистрирован: 31.07.2013
Рейтинг: 2
Сказал спасибо: 15
Поблагодарили 33 раз(а) в 15 сообщ.
Сообщение: #113
RE: BIOS protection by Holly
занимательная, но она предполагает что биты байтов используются в обычном виде, хотя на самом деле могут быть перемешаны хрен знает как.
если предположить что тут используется обычное сложение, я бы попытался определить "вес" битов.
допустим берем и где-то взводим два бита, типа
00000000 00000000 => 00000001 00000001
и затем методом тыка сбрасываем где-то по соседству по очереди каждый из 32бит
идеальный случай если рядом есть FFFFFFFF - последовательно пробуем FFFFFFFD FFFFFFFB FFFFFFF7 FFFFFFEF и так далее
таким образом можно найти бит равный по весу двум битам номер 0, если таковой вообще существует в этом алгоритме )
(Последний раз сообщение было отредактировано 28.06.2016 в 23:20, отредактировал пользователь MetalliC.)
28.06.2016 23:12
Найти все сообщения Цитировать это сообщение
megavolt85 Не на форуме
Супермодератор
******

Сообщений: 3160
Зарегистрирован: 24.03.2012
Рейтинг: 38
Сказал спасибо: 186
Поблагодарили 1560 раз(а) в 918 сообщ.
Сообщение: #114
RE: BIOS protection by Holly
как ни странно, но фокус с прибавлением и отниманием не работает на обычном биосе, только на килобайтном

HKT-3030, Bios mod, SD mod, VGA internal mod, G1ATA mod, Region changer mod, PSU mod
29.06.2016 03:47
Найти все сообщения Цитировать это сообщение
MetalliC Не на форуме
Продвинутый
***

Сообщений: 185
Зарегистрирован: 31.07.2013
Рейтинг: 2
Сказал спасибо: 15
Поблагодарили 33 раз(а) в 15 сообщ.
Сообщение: #115
RE: BIOS protection by Holly
да вобщем-то не так и странно. мы наблюдали частные случай(и), которые прокатывали при текущей сумме на области цифирок 11 11 22 2 итп, а при другой сумме это уже перестало работать.

честно говоря, я не очень понимаю чего ты уперся в арифметические операции - сложения-вычитания, они крайне крайне редко используются в таких вещах.
бинарные операции типа XOR/OR/AND, сдвиги, перестановка (пермутация) битов --- "наше всё" в электронике. глянь к примеру алгоритм CRC - там нет ни сложений ни вычитаний, потому что относительно сложнее реализуются на логических элементах, т.е. в чипах.
скорее всего и тут тот же случай.

так что и с этой перестановкой бит, которая тут работает а там нет, может быть имеется нечто в духе (все цифры от фонаря):
current_sum ^= (current_sum & 0x0248000) << 7;
и лишь пока в сумме не взведены биты 0248000 мы можем развлекаться и менять битики, впихивать в поток нули, и т.п.
(Последний раз сообщение было отредактировано 29.06.2016 в 14:46, отредактировал пользователь MetalliC.)
29.06.2016 14:45
Найти все сообщения Цитировать это сообщение
megavolt85 Не на форуме
Супермодератор
******

Сообщений: 3160
Зарегистрирован: 24.03.2012
Рейтинг: 38
Сказал спасибо: 186
Поблагодарили 1560 раз(а) в 918 сообщ.
Сообщение: #116
RE: BIOS protection by Holly
думаешь всё же используется циклический сдвиг?

HKT-3030, Bios mod, SD mod, VGA internal mod, G1ATA mod, Region changer mod, PSU mod
(Последний раз сообщение было отредактировано 29.06.2016 в 22:38, отредактировал пользователь megavolt85.)
29.06.2016 22:29
Найти все сообщения Цитировать это сообщение
MetalliC Не на форуме
Продвинутый
***

Сообщений: 185
Зарегистрирован: 31.07.2013
Рейтинг: 2
Сказал спасибо: 15
Поблагодарили 33 раз(а) в 15 сообщ.
Сообщение: #117
RE: BIOS protection by Holly
мне кажется там может использоваться всё что угодно, кроме арифметических операций, но это лишь имхо без пруфов.

тест описанный в посте #113 мог бы отчасти подтвердить или опровергнуть это.
если найдется бит равноценный 2х другого бита - знач есть вероятность арифметического сложения/вычитания в этом алгоритме, а если нет то скорее всего нет.
(Последний раз сообщение было отредактировано 30.06.2016 в 12:34, отредактировал пользователь MetalliC.)
30.06.2016 12:34
Найти все сообщения Цитировать это сообщение
megavolt85 Не на форуме
Супермодератор
******

Сообщений: 3160
Зарегистрирован: 24.03.2012
Рейтинг: 38
Сказал спасибо: 186
Поблагодарили 1560 раз(а) в 918 сообщ.
Сообщение: #118
RE: BIOS protection by Holly
(21.06.2016 00:03)MetalliC писал(а):  нельзя, если оно оказалось в состоянии номер 2 - всё, выйти с него можно только по сбросу. это мы еще пару лет назад выяснили, как и вобщем-то само наличие трех состояний и как они переключаются или не переключаются.
ну а то что я вчера нашел этот регистрик - финальный пруф Big Grin

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

Код:
r a05f74ec 1
Read REG: address = a05f74ec size = 1
REG A05F74EC = 0x00000003
w a05f74e4 4 001fffff
Write REG: address = a05f74e4 size = 4 value = 1fffff
return 1
r a05f74ec 1
Read REG: address = a05f74ec size = 1
REG A05F74EC = 0x00000000
r a01fffff 1
Read REG: address = a01fffff size = 1
REG A01FFFFF = 0x00000000
r a05f74ec 1
Read REG: address = a05f74ec size = 1
REG A05F74EC = 0x00000002
w a05f74e4 4 001fffff
Write REG: address = a05f74e4 size = 4 value = 1fffff
return 1
r a05f74ec 1
Read REG: address = a05f74ec size = 1
REG A05F74EC = 0x00000000

HKT-3030, Bios mod, SD mod, VGA internal mod, G1ATA mod, Region changer mod, PSU mod
26.09.2016 06:50
Найти все сообщения Цитировать это сообщение
cybdyn Не на форуме
Ветеран
*****

Сообщений: 1368
Зарегистрирован: 20.12.2011
Рейтинг: 8
Сказал спасибо: 4
Поблагодарили 98 раз(а) в 75 сообщ.
Сообщение: #119
RE: BIOS protection by Holly
может там эти биты которые изменяют число, учитывают знак паритета?!?))
26.09.2016 11:23
Найти все сообщения Цитировать это сообщение
MetalliC Не на форуме
Продвинутый
***

Сообщений: 185
Зарегистрирован: 31.07.2013
Рейтинг: 2
Сказал спасибо: 15
Поблагодарили 33 раз(а) в 15 сообщ.
Сообщение: #120
RE: BIOS protection by Holly
(26.09.2016 06:50)megavolt85 писал(а):  как ни странно ,но из состояния 2 в 0 дрим выходит.
на наоми тоже так, но в этом случае после чтения блока с правильной суммой он опять становится 2 а не 3.
(26.09.2016 06:50)megavolt85 писал(а):  кстати в a05f74e4 мы пишем не количество байт которые нужно прочитать, а адрес при чтении которого остановится проверка
верно, это давно было известо да и по самим записываемым значениям видно
(Последний раз сообщение было отредактировано 26.09.2016 в 13:57, отредактировал пользователь MetalliC.)
26.09.2016 13:56
Найти все сообщения Цитировать это сообщение
Создать ответ 


Похожие темы
Тема: Автор Ответов: Просмотров: Посл. сообщение
  BIOS Guest 22 67296 27.06.2005 15:39
Посл. сообщение: STIV

Переход:


Пользователи просматривают эту тему: 7 Гость(ей)