JesusFreke / smali

smali/baksmali
6.29k stars 1.07k forks source link

Better error messages for missing opcodes #500

Open JesusFreke opened 7 years ago

JesusFreke commented 7 years ago

When assembling a smali file from the O preview with invoke-polymorphic instructions, if smali is invoked without specifying an api, the default set of opcodes for api 15 get used, which doesn't contain the invoke-polymorphic opcode. When smali encounters one of these opcodes, the error message is.. unhelpful.

boot.oat_deodex/java/lang/invoke/Transformers$FilterReturnValue.smali[180,4] null
Furniel commented 7 years ago

Getting same errors during Pixel XL android O boot.oat(core-oj) deodexing. Api level was specified.

tmp\java\lang\invoke\Transformers$CatchException.smali[167,4] null
tmp\java\lang\invoke\Transformers$Construct.smali[238,4] null
tmp\java\lang\invoke\Transformers$Collector.smali[277,4] null
tmp\java\lang\invoke\Transformers$FilterArguments.smali[228,4] null
tmp\java\lang\invoke\Transformers$FoldArguments.smali[211,4] null
tmp\java\lang\invoke\Transformers$GuardWithTest.smali[112,4] null
tmp\java\lang\invoke\Transformers$CollectArguments.smali[224,4] null
tmp\java\lang\invoke\Transformers$InsertArguments.smali[413,4] null
tmp\java\lang\invoke\Transformers$BindTo.smali[113,4] null
tmp\java\lang\invoke\Transformers$DropArguments.smali[145,4] null
tmp\java\lang\invoke\Transformers$FilterReturnValue.smali[180,4] null

Commands that were used:

java -jar baksmali.jar x -a 25 -c framework\arm64\boot.oat -d framework\arm64 framework\arm64\boot.oat/system/framework/core-oj.jar -o tmp
java -jar smali.jar a -a 25 -o classes.dex tmp

And one more error: Smali shows this errors, don't creates dex file but exits with code 0.

JesusFreke commented 7 years ago

Ah, right, I need to update the oat <-> api version map. For now, use -a 26 instead.

ghost commented 7 years ago

@JesusFreke even using -a 26 I get the same errors as the user above.

Furniel commented 7 years ago

It should work. With -a 26 everything works fine, during tests i successfully deodexed all released android O images(Nexus 5X, Nexus 6P, Nexus Player, Pixel C, Pixel, Pixel XL).

JesusFreke commented 7 years ago

@zengfu94 don't forget -a 26 to smali ;)

@Furniel nice! Thanks for confirming that it's all working for you.

ghost commented 7 years ago

@Furniel what tool did you use? I will try again

Furniel commented 7 years ago

@JesusFreke Sorry for offtop. @zengfu94 I'm using own program.

mmhobi7 commented 7 years ago

@Furniel offtop but can you send me a system dump of Android O!

JesusFreke commented 7 years ago

@Aaahh see https://developer.android.com/preview/index.html

mmhobi7 commented 7 years ago

@JesusFreke I can't extract the new images as the system image is a sparse image with a new format

JesusFreke commented 7 years ago

The standard simg2img tool that I've always used worked fine.

mmhobi7 commented 7 years ago

@JesusFreke yeah I've used it before but with these new images there's no transfer_list and it fails

JesusFreke commented 7 years ago

Worked fine for me :). Are you using the simg2img tool from AOSP?

mmhobi7 commented 7 years ago

@JesusFreke Ah I knew I was forgetting something. No I was using some script off GitHub. Whoops my bad, thank you