JesusFreke / smali

smali/baksmali
6.29k stars 1.07k forks source link

Wrong hidden api flags when assembling smali #826

Closed jakiki6 closed 3 years ago

jakiki6 commented 3 years ago

Hey, I've been trying to patch the framework.jar with this tool and I noticed that the assembler doesn't set the right flags when assembling.

diff a/android/hardware/radio/V1_3/IRadioResponse.smali b/android/hardware/radio/V1_3/IRadioResponse.smali 
342c342
< .method public abstract blacklist setHALInstrumentation()V
---
> .method public abstract whitelist core-platform-api test-api setHALInstrumentation()V

This also causes errors when disassembling assembled classes.dex and when using the patched framework.jar

Error occurred while disassembling class Landroid.hardware.radio.V1_3.IRadioResponse$Proxy; - skipping class
java.lang.ArrayIndexOutOfBoundsException: Index 6 out of bounds for length 6
    at org.jf.dexlib2.HiddenApiRestriction.getAllFlags(HiddenApiRestriction.java:108)
    at org.jf.dexlib2.dexbacked.DexBackedMethod.getHiddenApiRestrictions(DexBackedMethod.java:204)
    at org.jf.baksmali.Adaptors.MethodDefinition.writeTo(MethodDefinition.java:189)
    at org.jf.baksmali.Adaptors.ClassDefinition.writeVirtualMethods(ClassDefinition.java:325)
    at org.jf.baksmali.Adaptors.ClassDefinition.writeTo(ClassDefinition.java:115)
    at org.jf.baksmali.Baksmali.disassembleClass(Baksmali.java:161)
    at org.jf.baksmali.Baksmali.access$000(Baksmali.java:46)
    at org.jf.baksmali.Baksmali$1.call(Baksmali.java:76)
    at org.jf.baksmali.Baksmali$1.call(Baksmali.java:74)
    at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
    at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135)
    at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
    at java.base/java.lang.Thread.run(Thread.java:831)
jakiki6 commented 3 years ago

fixed by #816