Помогите синтаксическому анализу resources.arsc?

Я пытаюсь проанализировать ресурсы, содержащиеся в файле resources.arsc, как описано в этом вопросе. Я знаю, что файл androidmanifest.xml определяет ресурсы, расположенные в файле .arsc. Мне удалось успешно проанализировать заголовок файла .arsc, я не могу понять, как анализировать сами ресурсы.

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

Мой код синтаксического анализа на данный момент:

0){
        $str = fread($doc, $len*2);
    }else{
        $str = '';
    }
    //null
    $wd = fread($doc, 2);
    //utf-16le
    $strings[] =  mb_convert_encoding($str, 'gbk', 'UTF-16LE');

    //curr offset
    $curroffs += ($len+1)*2 + 2;
}


$tpos = ftell($doc);

read_doc_past_sentinel($doc);

//fseek($doc, $tpos + $tpos % 4);

$i = 0;

$xmls = $strings;

print_r($xmls);

//------------------------------------
//and then...somebody konw format or continue parse?
//------------------------------------


function read_doc_past_sentinel(&$doc){
    $pos = ftell($doc);
    $count= 0;
    while($word = fread($doc, 4)){
        if(_unpack('V', $word)==-1)break;
    }

    $n = 1;
    if ($count < $n){
        while($word = peek_doc($doc, 4)){
            if(_unpack('V', $word) != -1)break;
            fread($doc, 4);
            $n++;
            if(isset($count) && $count >= $n)break;
        }
        echo 'skip '.$n.' chars
'; } } function peek_doc(&$doc, $size){ $data = fread($doc, $size); fseek($doc, ftell($doc)-$size); return $data; } function _unpack($m, $b){ //if(!$b)return ''; $res = unpack($m, $b); return $res[1]; } ?>

5
задан Community 23 May 2017 в 12:17
поделиться