Общение > Прошивки

Вопрос по анализу прошивок.

<< < (5/30) > >>

bucag:
Лутов конечно гений, но ценник на ОА прошивки они сильно загнули.

Bahri:
расматривем прошивку 1910 распаковка там кернел как у 1860 по таблицам 64 и 256. после распаковки ишем сериник или крум номер.
You are not allowed to view links. Register or Login первое красным это сериный номер принтера а второе это крум номер

41223:
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.

--- Конец цитаты ---

Я правильно понял. Что с помощи  данной программой PHP Devel Studio. Можно создать любой генератор?

Aleksey Mo-skin:
С помощью этого алгоритма можно лишь распаковать я ядро старых прошивок.

Bahri:
если разобратся в АРМ коде то можно конечно

Навигация

[0] Главная страница сообщений

[#] Следующая страница

[*] Предыдущая страница

Перейти к полной версии