2

我正在尝试AndroidManifest.xml使用 JSZip 从 apk 解析,
我得到了一个 Uint8Array 并使用以下代码将其转换为字符串:

var zip = new JSZip(fileBlobAsByteArray);
var androidCompress = zip.files["AndroidManifest.xml"];
var androidNonCompress = androidCompress._data.getContent();
var androidText = String.fromCharCode.apply(null, androidNonCompress);
var packageName = androidText.toLowerCase().replace(/ /g,'').indexOf('package');

我尝试使用 toLowerCase 并删除所有空格。

我得到一个字符串,我可以在控制台中看到它的内容,但是当我使用 indexOf 在字符串中搜索一个单词时,它总是返回-1。

我想问题在于输出可能不是常规字符串,并且 chrome 控制台进行了一些操作以便将其呈现为字符串。我想做的同样的操作。

4

1 回答 1

0

我使用以下代码将 Uint8Array 转换为可搜索字符串

// Reading to content to a searchable string
var packageNameArray = [];
var textArray = String(androidNonCompress).split(',');
for (var i = 0, len = textArray.length; i < len; i++) {
    if (textArray[i] !== 0) {
        packageNameArray.push(textArray[i]);
    }
}

var searchableText = String.fromCharCode.apply(null, packageNameArray).toString().toLowerCase();
于 2015-10-16T08:38:32.910 回答