You are not allowed to view links. Register or Login Генератор прошивок онлайн.
после всего изученного в голове получилась,,КАША,,
Для начала берешь дамп прошивки, загружаешь в Ida, процессор ARM Big-Endian, Options -> General -> Analysis -> Kernel Options 1 -> Make final analisys pass -> OK -> Reanalyze Programm. То, что серое - запакованное и зашифрованное ядро прошивки, остальное - загрузчик. Ядро, начинается с сигнатуры $NKF (в не зашифрованных прошивках - $ZIP), адрес загрузки ядра указан в заголовке $NKF, (0x40017000 для 1860, например). Дальше куришь мануал по ассемблеру ARM, смотришь как расшифровывается ядро (должна получиться сигнатура $ZIP), потом распаковываешь гзипом.Вот пример расшифровки и распаковки ядра ML1860, написано на PHP, т.к. там gzip без лишних проблем работает:Код: You are not allowed to view links. Register or Login<?$nach_cod = 86132; // начало ядра$razm_zip = 373338; // размер упакованного ядра (может быть другим)//считываем файл в переменную$abb = file_get_contents('FIX_ML-1860.hd');// первая таблица 64 байта $tab64 = substr($abb,81196,64);// вторая таблица 256 байт $tab256 = substr($abb,80940,256);// вырезаем NKF $nkf_cod = substr($abb,$nach_cod,$razm_zip);// Заполняем таблицей 64 строку размером упакованного ядра $t64_xor = str_pad ($tab64, $razm_zip, $tab64);// Расшифровываем с помощью XOR $xor = $nkf_cod ^ $t64_xor; $uncode = ""; //Расшифровываем с помощью таблицы подстановки 256 for($i=0;$i<$razm_zip;$i++) { $j=ord($xor{$i}); $c=$tab256{$j}; $uncode.=$c; } // заголовок 12 байт $head = substr($uncode,0,12); // сжатый гзипом блок $compress = substr($uncode,12); // распаковываем ядро с пом gzip $decompress = gzuncompress($compress); // сохраняем распакованное ядро в файл file_put_contents('Kernel_ML-1860',$decompress); ?>Данный алгоритм подсмотрен в одном из генераторов, написанном на PHP Devel Studio.
<?$nach_cod = 86132; // начало ядра$razm_zip = 373338; // размер упакованного ядра (может быть другим)//считываем файл в переменную$abb = file_get_contents('FIX_ML-1860.hd');// первая таблица 64 байта $tab64 = substr($abb,81196,64);// вторая таблица 256 байт $tab256 = substr($abb,80940,256);// вырезаем NKF $nkf_cod = substr($abb,$nach_cod,$razm_zip);// Заполняем таблицей 64 строку размером упакованного ядра $t64_xor = str_pad ($tab64, $razm_zip, $tab64);// Расшифровываем с помощью XOR $xor = $nkf_cod ^ $t64_xor; $uncode = ""; //Расшифровываем с помощью таблицы подстановки 256 for($i=0;$i<$razm_zip;$i++) { $j=ord($xor{$i}); $c=$tab256{$j}; $uncode.=$c; } // заголовок 12 байт $head = substr($uncode,0,12); // сжатый гзипом блок $compress = substr($uncode,12); // распаковываем ядро с пом gzip $decompress = gzuncompress($compress); // сохраняем распакованное ядро в файл file_put_contents('Kernel_ML-1860',$decompress); ?>
Просто интересно было бы побаловаться в написании генератора.