iBotPeaches / Apktool

A tool for reverse engineering Android apk files
https://apktool.org/
Apache License 2.0
20.07k stars 3.58k forks source link

[BUG] Apktool doesn't decompile an Instagram mod #2806

Closed Kuriix closed 1 year ago

Kuriix commented 2 years ago

Information

  1. Apktool Version (apktool -version) - 2.6.1
  2. Operating System (Mac, Linux, Windows) - Windows 10 (x64)
  3. APK From? (Playstore, ROM, Other) - Other

Stacktrace/Logcat

I: Using Apktool 2.6.1 on Insta_v8.95.apk
I: Loading resource table...
Exception in thread "main" java.lang.ClassCastException: class brut.androlib.res.data.value.ResStringValue cannot be cast to class brut.androlib.res.data.value.ResIntValue (brut.androlib.res.data.value.ResStringValue and brut.androlib.res.data.value.ResIntValue are in unnamed module of loader 'app')
        at brut.androlib.res.data.value.ResAttr.factory(ResAttr.java:69)
        at brut.androlib.res.data.value.ResValueFactory.bagFactory(ResValueFactory.java:91)
        at brut.androlib.res.decoder.ARSCDecoder.readComplexEntry(ARSCDecoder.java:356)
        at brut.androlib.res.decoder.ARSCDecoder.readEntryData(ARSCDecoder.java:285)
        at brut.androlib.res.decoder.ARSCDecoder.readTableType(ARSCDecoder.java:261)
        at brut.androlib.res.decoder.ARSCDecoder.readTableTypeSpec(ARSCDecoder.java:184)
        at brut.androlib.res.decoder.ARSCDecoder.readTablePackage(ARSCDecoder.java:135)
        at brut.androlib.res.decoder.ARSCDecoder.readTableHeader(ARSCDecoder.java:84)
        at brut.androlib.res.decoder.ARSCDecoder.decode(ARSCDecoder.java:50)
        at brut.androlib.res.AndrolibResources.getResPackagesFromApk(AndrolibResources.java:783)
        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)

Steps to Reproduce

  1. apktool d Insta_v8.95.apk

APK

https://www.mediafire.com/file/3wpcdvuw8pfrw60/Insta_v8.95.apk/file

iBotPeaches commented 2 years ago

Confirmed. Marking as bug.

karimbenammar commented 2 years ago

Could this be related to this issue because of the app namespace?

jsteave commented 2 years ago

I can confirm this Extra is still not working

ghyath5 commented 1 year ago

Still the same issue

mxsleo commented 1 year ago

Comfirmed on some MiuiCamera mods (stock can be easily decompliled, but, for example, Leica mod unpacking ends in the same error)

iBotPeaches commented 1 year ago

Took a look at this. Looks like we regressed specific handling of string-arrays way back when this was merged - https://github.com/iBotPeaches/Apktool/pull/991/files

It isn't worth reverting something so old, so I'll have to rethink how we handle ResIntValue, ResStringValue and ResIntBasedValue

iBotPeaches commented 1 year ago

Putting up a PR that will close this on merge.

➜  2806 apktool d Insta_v8.95.apk -f -s
I: Using Apktool v2.8.1-54-06c5f462-SNAPSHOT on Insta_v8.95.apk
I: Loading resource table...
I: Decoding file-resources...
I: Loading resource table from file: /home/ibotpeaches/.local/share/apktool/framework/1.apk
I: Decoding values */* XMLs...
I: Decoding AndroidManifest.xml with resources...
I: Regular manifest package...
I: Copying raw classes.dex file...
I: Copying raw classes10.dex file...
I: Copying raw classes11.dex file...
I: Copying raw classes12.dex file...
I: Copying raw classes13.dex file...
I: Copying raw classes14.dex file...
I: Copying raw classes15.dex file...
I: Copying raw classes16.dex file...
I: Copying raw classes17.dex file...
I: Copying raw classes18.dex file...
I: Copying raw classes19.dex file...
I: Copying raw classes2.dex file...
I: Copying raw classes20.dex file...
I: Copying raw classes21.dex file...
I: Copying raw classes22.dex file...
I: Copying raw classes23.dex file...
I: Copying raw classes24.dex file...
I: Copying raw classes25.dex file...
I: Copying raw classes26.dex file...
I: Copying raw classes27.dex file...
I: Copying raw classes28.dex file...
I: Copying raw classes29.dex file...
I: Copying raw classes3.dex file...
I: Copying raw classes30.dex file...
I: Copying raw classes31.dex file...
I: Copying raw classes32.dex file...
I: Copying raw classes33.dex file...
I: Copying raw classes34.dex file...
I: Copying raw classes35.dex file...
I: Copying raw classes36.dex file...
I: Copying raw classes37.dex file...
I: Copying raw classes38.dex file...
I: Copying raw classes39.dex file...
I: Copying raw classes4.dex file...
I: Copying raw classes40.dex file...
I: Copying raw classes41.dex file...
I: Copying raw classes42.dex file...
I: Copying raw classes43.dex file...
I: Copying raw classes44.dex file...
I: Copying raw classes45.dex file...
I: Copying raw classes46.dex file...
I: Copying raw classes47.dex file...
I: Copying raw classes48.dex file...
I: Copying raw classes49.dex file...
I: Copying raw classes5.dex file...
I: Copying raw classes50.dex file...
I: Copying raw classes51.dex file...
I: Copying raw classes52.dex file...
I: Copying raw classes53.dex file...
I: Copying raw classes54.dex file...
I: Copying raw classes55.dex file...
I: Copying raw classes6.dex file...
I: Copying raw classes7.dex file...
I: Copying raw classes8.dex file...
I: Copying raw classes9.dex file...
I: Copying assets and libs...
I: Copying unknown files...
I: Copying original files...
➜  2806 apktool b Insta_v8.95
I: Using Apktool v2.8.1-54-06c5f462-SNAPSHOT
I: Copying Insta_v8.95 classes.dex file...
I: Copying Insta_v8.95 classes23.dex file...
I: Copying Insta_v8.95 classes38.dex file...
I: Copying Insta_v8.95 classes10.dex file...
I: Copying Insta_v8.95 classes2.dex file...
I: Copying Insta_v8.95 classes11.dex file...
I: Copying Insta_v8.95 classes50.dex file...
I: Copying Insta_v8.95 classes26.dex file...
I: Copying Insta_v8.95 classes20.dex file...
I: Copying Insta_v8.95 classes44.dex file...
I: Copying Insta_v8.95 classes43.dex file...
I: Copying Insta_v8.95 classes55.dex file...
I: Copying Insta_v8.95 classes21.dex file...
I: Copying Insta_v8.95 classes29.dex file...
I: Copying Insta_v8.95 classes27.dex file...
I: Copying Insta_v8.95 classes39.dex file...
I: Copying Insta_v8.95 classes36.dex file...
I: Copying Insta_v8.95 classes15.dex file...
I: Copying Insta_v8.95 classes19.dex file...
I: Copying Insta_v8.95 classes13.dex file...
I: Copying Insta_v8.95 classes52.dex file...
I: Copying Insta_v8.95 classes34.dex file...
I: Copying Insta_v8.95 classes24.dex file...
I: Copying Insta_v8.95 classes48.dex file...
I: Copying Insta_v8.95 classes32.dex file...
I: Copying Insta_v8.95 classes3.dex file...
I: Copying Insta_v8.95 classes53.dex file...
I: Copying Insta_v8.95 classes49.dex file...
I: Copying Insta_v8.95 classes16.dex file...
I: Copying Insta_v8.95 classes12.dex file...
I: Copying Insta_v8.95 classes41.dex file...
I: Copying Insta_v8.95 classes5.dex file...
I: Copying Insta_v8.95 classes30.dex file...
I: Copying Insta_v8.95 classes28.dex file...
I: Copying Insta_v8.95 classes14.dex file...
I: Copying Insta_v8.95 classes9.dex file...
I: Copying Insta_v8.95 classes33.dex file...
I: Copying Insta_v8.95 classes35.dex file...
I: Copying Insta_v8.95 classes51.dex file...
I: Copying Insta_v8.95 classes45.dex file...
I: Copying Insta_v8.95 classes46.dex file...
I: Copying Insta_v8.95 classes4.dex file...
I: Copying Insta_v8.95 classes42.dex file...
I: Copying Insta_v8.95 classes37.dex file...
I: Copying Insta_v8.95 classes22.dex file...
I: Copying Insta_v8.95 classes18.dex file...
I: Copying Insta_v8.95 classes31.dex file...
I: Copying Insta_v8.95 classes40.dex file...
I: Copying Insta_v8.95 classes7.dex file...
I: Copying Insta_v8.95 classes6.dex file...
I: Copying Insta_v8.95 classes25.dex file...
I: Copying Insta_v8.95 classes47.dex file...
I: Copying Insta_v8.95 classes17.dex file...
I: Copying Insta_v8.95 classes8.dex file...
I: Copying Insta_v8.95 classes54.dex file...
I: Checking whether resources has changed...
I: Building resources...
I: Copying libs... (/lib)
I: Copying libs... (/kotlin)
I: Building apk file...
I: Copying unknown files/dir...
I: Built apk into: Insta_v8.95/dist/Insta_v8.95.apk
➜  2806