Apktool icon indicating copy to clipboard operation
Apktool copied to clipboard

[BUG] ARSCDecoder regression in 2.6.2-SNAPSHOT

Open IgorEisberg opened this issue 3 years ago • 4 comments
trafficstars

Information

  1. Apktool Version - 2.6.2-SNAPSHOT
  2. Operating System - Windows (x64), Debian (x64)
  3. APK From? - ROM

Stacktrace/Logcat

I: Using Apktool 2.6.2-SNAPSHOT on InProcessTethering.apk
I: Loading resource table...
I: Skipping overlay (720065)
I: Skipping overlay (6e0069)
I: Skipping overlay (430067)
I: Skipping overlay (6e006f)
I: Skipping overlay (690066)
I: Skipping overlay (67)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (0)
I: Skipping overlay (100205)
I: Skipping overlay (5c)
I: Skipping overlay (e)
I: Skipping overlay (13)
I: Skipping overlay (7f010000)
I: Skipping overlay (7f010001)
I: Skipping overlay (7f010002)
I: Skipping overlay (7f010003)
I: Skipping overlay (7f010004)
I: Skipping overlay (7f010005)
I: Skipping overlay (7f010006)
I: Skipping overlay (7f010007)
I: Skipping overlay (7f010008)
I: Skipping overlay (7f020000)
I: Skipping overlay (7f020001)
I: Skipping overlay (7f020002)
I: Skipping overlay (7f020003)
I: Skipping overlay (7f040000)
I: Skipping overlay (7f040001)
I: Skipping overlay (7f040002)
I: Skipping overlay (7f050000)
I: Skipping overlay (7f050001)
I: Skipping overlay (7f050002)
Exception in thread "main" brut.androlib.AndrolibException: Could not decode arsc file
        at brut.androlib.res.decoder.ARSCDecoder.decode(ARSCDecoder.java:55)
        at brut.androlib.res.AndrolibResources.getResPackagesFromApk(AndrolibResources.java:787)
        at brut.androlib.res.AndrolibResources.loadMainPkg(AndrolibResources.java:64)
        at brut.androlib.res.AndrolibResources.getResTable(AndrolibResources.java:56)
        at brut.androlib.Androlib.getResTable(Androlib.java:70)
        at brut.androlib.ApkDecoder.getResTable(ApkDecoder.java:247)
        at brut.androlib.ApkDecoder.decode(ApkDecoder.java:109)
        at brut.apktool.Main.cmdDecode(Main.java:175)
        at brut.apktool.Main.main(Main.java:79)
Caused by: java.io.EOFException
        at com.google.common.io.LittleEndianDataInputStream.readAndCheckByte(LittleEndianDataInputStream.java:235)
        at com.google.common.io.LittleEndianDataInputStream.readInt(LittleEndianDataInputStream.java:118)
        at brut.util.DataInputDelegate.readInt(DataInputDelegate.java:58)
        at brut.androlib.res.decoder.ARSCDecoder.readOverlaySpec(ARSCDecoder.java:185)
        at brut.androlib.res.decoder.ARSCDecoder.readTablePackage(ARSCDecoder.java:138)
        at brut.androlib.res.decoder.ARSCDecoder.readTableHeader(ARSCDecoder.java:84)
        at brut.androlib.res.decoder.ARSCDecoder.decode(ARSCDecoder.java:50)
        ... 8 more

Steps to Reproduce

A normal decompilation with the latest 2.6.2-SNAPSHOT. This issue is not reproducible with Apktool 2.6.1 or older.

Frameworks

Pre-included framework works fine. No third-party framework needed.

APK

https://drive.google.com/file/d/1S69DCYjG76_vbTHC0Vh9H_IoLz_8QZrO/view?usp=sharing

IgorEisberg avatar Apr 29 '22 15:04 IgorEisberg

Not sure how. It skips chunks, so it must be a ton of overlay chunks in a row.

iBotPeaches avatar Apr 29 '22 17:04 iBotPeaches

Not sure how. It skips chunks, so it must be a ton of overlay chunks in a row.

Ending up with an Exception, sounds like an issue to me.

IgorEisberg avatar Apr 29 '22 18:04 IgorEisberg

True, but I don't see how at the moment.

iBotPeaches avatar Apr 29 '22 18:04 iBotPeaches

Replicated. Marking as bug.

iBotPeaches avatar May 07 '22 11:05 iBotPeaches

It's a parsing error. (The bytes in the first 6 "Skipping overlay" lines above represent ASCII for "eringConfig".)

It's trying to decode a XML_TYPE_OVERLAY as XML_TYPE_OVERLAY_POLICY.

Correct decode gives overlay name="TetheringConfig" and actor="".

gramound avatar Nov 01 '22 20:11 gramound