AlexeySoshin / smali2java

Recreate Java code from Smali
486 stars 84 forks source link

runtime error: index out of range ?? #2

Closed pundoo closed 4 years ago

pundoo commented 6 years ago

Hi,

When I execute command I get this error :

error

What's the issue?

PS: I'm using GO v1.7.6. Even tried with v1.9.3, same error.

AlexeySoshin commented 6 years ago

The classname is somewhat unexpected. Could you please post the SplashScreen$4.smali file?

djjowfy commented 6 years ago

I met same problem. Processing /Users/minyou/Downloads/decomplier/out/smali/android/arch/lifecycle/o$a.smali panic: runtime error: index out of range

goroutine 42 [running]: github.com/alexeysoshin/smali2java/parser.(FieldParser).Parse(0xc4200d1dd8, 0xc4200d1ec8, 0xc4200de2d0, 0x5, 0x5, 0xc4201bc200, 0x100000000000031) /Users/minyou/go/src/github.com/alexeysoshin/smali2java/parser/field.go:21 +0x30b github.com/alexeysoshin/smali2java/parser.(JavaFile).ParseLine(0xc4200d1ec8, 0xc4201be060, 0x30, 0xe17, 0xc4201be060) /Users/minyou/go/src/github.com/alexeysoshin/smali2java/parser/java_file.go:78 +0x658 main.convertSmali.func1(0xc4200789c0, 0x52, 0xc42008c010) /Users/minyou/go/src/github.com/alexeysoshin/smali2java/smali2java.go:54 +0x194 created by main.convertSmali /Users/minyou/go/src/github.com/alexeysoshin/smali2java/smali2java.go:43 +0xed

o$a.smali.txt

AlexeySoshin commented 6 years ago

@djjowfy , thanks a lot for your example. It helped my in finding the problem. Please get the latest revision and let me know if it works for you now.

shanness commented 6 years ago

I'm getting it with the latest, and with inconsistent points where it panics i.e. this got a lot further than the one below it.

$ /home/craig/go/src/github.com/alexeysoshin/smali2java/smali2java -path_to_smali=smali/com/lifx/
2018/07/17 02:12:27 Processing smali/com/lifx/app/AnalyticsApplication.smali
2018/07/17 02:12:27 Processing smali/com/lifx/app/AppBroadcastReceiver$BroadcastEventListener.smali
2018/07/17 02:12:27 Processing smali/com/lifx/app/AppBroadcastReceiver.smali
2018/07/17 02:12:27 Processing smali/com/lifx/app/DiagnosticsActivity$Companion$queryWANState$2$1.smali
2018/07/17 02:12:27 Processing smali/com/lifx/app/DiagnosticsActivity$Companion$sendEmail$1.smali
2018/07/17 02:12:27 Processing smali/com/lifx/app/DiagnosticsActivity$Companion.smali
2018/07/17 02:12:27 Processing smali/com/lifx/app/DiagnosticsActivity$EmailPreparationTask.smali
2018/07/17 02:12:27 Processing smali/com/lifx/app/DiagnosticsActivity$onCreate$1.smali
2018/07/17 02:12:27 Processing smali/com/lifx/app/DiagnosticsActivity$onLongClick$$inlined$let$lambda$1.smali
2018/07/17 02:12:27 Processing smali/com/lifx/app/DiagnosticsActivity$onResume$$inlined$bindServiceAsObservable$1$1.smali
2018/07/17 02:12:27 Processing smali/com/lifx/app/DiagnosticsActivity$onResume$$inlined$bindServiceAsObservable$1.smali
2018/07/17 02:12:27 Processing smali/com/lifx/app/DiagnosticsActivity$onResume$1.smali
2018/07/17 02:12:27 Processing smali/com/lifx/app/DiagnosticsActivity$onResume$2$$special$$inlined$let$lambda$1.smali
2018/07/17 02:12:27 Processing smali/com/lifx/app/DiagnosticsActivity$onResume$2$1$1.smali
2018/07/17 02:12:27 Processing smali/com/lifx/app/DiagnosticsActivity$onResume$2$1$2.smali
2018/07/17 02:12:27 Processing smali/com/lifx/app/DiagnosticsActivity$onResume$2.smali
2018/07/17 02:12:27 Processing smali/com/lifx/app/DiagnosticsActivity.smali
2018/07/17 02:12:27 Processing smali/com/lifx/app/FactoryTestActivity$onResume$subscription$1$1$1.smali
2018/07/17 02:12:27 Processing smali/com/lifx/app/FactoryTestActivity$onResume$subscription$1$1.smali
2018/07/17 02:12:27 Processing smali/com/lifx/app/FactoryTestActivity$onResume$subscription$1$2.smali
2018/07/17 02:12:27 Processing smali/com/lifx/app/FactoryTestActivity$onResume$subscription$1$3.smali
2018/07/17 02:12:27 Processing smali/com/lifx/app/FactoryTestActivity.smali
2018/07/17 02:12:27 Processing smali/com/lifx/app/FragmentCallbacks.smali
2018/07/17 02:12:27 Processing smali/com/lifx/app/LifxApplication.smali
2018/07/17 02:12:27 Processing smali/com/lifx/app/MainActivity$$ViewInjector.smali
2018/07/17 02:12:27 Processing smali/com/lifx/app/MainActivity$1.smali
2018/07/17 02:12:27 Processing smali/com/lifx/app/MainActivity$2.smali
2018/07/17 02:12:27 Processing smali/com/lifx/app/MainActivity$3.smali
2018/07/17 02:12:27 Processing smali/com/lifx/app/MainActivity$4.smali
panic: runtime error: index out of range

goroutine 9 [running]:
github.com/alexeysoshin/smali2java/parser.(*FieldParser).Parse(0xc420046da0, 0xc420046ec8, 0xc4200a4280, 0x5, 0x5, 0xc4200b4336, 0x55)
    /home/craig/go/src/github.com/alexeysoshin/smali2java/parser/field.go:21 +0x32e
github.com/alexeysoshin/smali2java/parser.(*JavaFile).ParseLine(0xc420046ec8, 0xc4200c2300, 0x55, 0xcca, 0xc4200c2300)
    /home/craig/go/src/github.com/alexeysoshin/smali2java/parser/java_file.go:82 +0xf29
main.convertSmali.func1(0xc4200189b0, 0x42, 0xc4200103c0)
    /home/craig/go/src/github.com/alexeysoshin/smali2java/smali2java.go:54 +0x1b6
created by main.convertSmali
    /home/craig/go/src/github.com/alexeysoshin/smali2java/smali2java.go:64 +0xf7
$ /home/craig/go/src/github.com/alexeysoshin/smali2java/smali2java -path_to_smali=smali/com/lifx/
2018/07/17 02:12:37 Processing smali/com/lifx/app/AnalyticsApplication.smali
2018/07/17 02:12:37 Processing smali/com/lifx/app/AppBroadcastReceiver$BroadcastEventListener.smali
2018/07/17 02:12:37 Processing smali/com/lifx/app/AppBroadcastReceiver.smali
2018/07/17 02:12:37 Processing smali/com/lifx/app/DiagnosticsActivity$Companion$queryWANState$2$1.smali
2018/07/17 02:12:37 Processing smali/com/lifx/app/DiagnosticsActivity$Companion$sendEmail$1.smali
2018/07/17 02:12:37 Processing smali/com/lifx/app/DiagnosticsActivity$Companion.smali
2018/07/17 02:12:37 Processing smali/com/lifx/app/DiagnosticsActivity$EmailPreparationTask.smali
2018/07/17 02:12:37 Processing smali/com/lifx/app/DiagnosticsActivity$onCreate$1.smali
2018/07/17 02:12:37 Processing smali/com/lifx/app/DiagnosticsActivity$onLongClick$$inlined$let$lambda$1.smali
2018/07/17 02:12:37 Processing smali/com/lifx/app/DiagnosticsActivity$onResume$$inlined$bindServiceAsObservable$1$1.smali
2018/07/17 02:12:37 Processing smali/com/lifx/app/DiagnosticsActivity$onResume$$inlined$bindServiceAsObservable$1.smali
2018/07/17 02:12:37 Processing smali/com/lifx/app/DiagnosticsActivity$onResume$1.smali
2018/07/17 02:12:37 Processing smali/com/lifx/app/DiagnosticsActivity$onResume$2$$special$$inlined$let$lambda$1.smali
panic: runtime error: slice bounds out of range

goroutine 5 [running]:
github.com/alexeysoshin/smali2java/parser.(*MethodParser).Parse(0xc420046da0, 0xc420046ec8, 0xc4200b8300, 0x4, 0x4, 0xc4200b6188, 0x52)
    /home/craig/go/src/github.com/alexeysoshin/smali2java/parser/method.go:37 +0x7a1
github.com/alexeysoshin/smali2java/parser.(*JavaFile).ParseLine(0xc420046ec8, 0xc4200bc420, 0x52, 0xe78, 0xc4200bc420)
    /home/craig/go/src/github.com/alexeysoshin/smali2java/parser/java_file.go:79 +0xc84
main.convertSmali.func1(0xc4200168a0, 0x2d, 0xc4200103c0)
    /home/craig/go/src/github.com/alexeysoshin/smali2java/smali2java.go:54 +0x1b6
created by main.convertSmali
    /home/craig/go/src/github.com/alexeysoshin/smali2java/smali2java.go:64 +0xf7

And different again

$ /home/craig/go/src/github.com/alexeysoshin/smali2java/smali2java -path_to_smali=smali/com/lifx/
2018/07/17 02:14:05 Processing smali/com/lifx/app/AnalyticsApplication.smali
2018/07/17 02:14:05 Processing smali/com/lifx/app/AppBroadcastReceiver$BroadcastEventListener.smali
2018/07/17 02:14:05 Processing smali/com/lifx/app/AppBroadcastReceiver.smali
2018/07/17 02:14:05 Processing smali/com/lifx/app/DiagnosticsActivity$Companion$queryWANState$2$1.smali
2018/07/17 02:14:05 Processing smali/com/lifx/app/DiagnosticsActivity$Companion$sendEmail$1.smali
2018/07/17 02:14:05 Processing smali/com/lifx/app/DiagnosticsActivity$Companion.smali
2018/07/17 02:14:05 Processing smali/com/lifx/app/DiagnosticsActivity$EmailPreparationTask.smali
2018/07/17 02:14:05 Processing smali/com/lifx/app/DiagnosticsActivity$onCreate$1.smali
2018/07/17 02:14:05 Processing smali/com/lifx/app/DiagnosticsActivity$onLongClick$$inlined$let$lambda$1.smali
2018/07/17 02:14:05 Processing smali/com/lifx/app/DiagnosticsActivity$onResume$$inlined$bindServiceAsObservable$1$1.smali
2018/07/17 02:14:05 Processing smali/com/lifx/app/DiagnosticsActivity$onResume$$inlined$bindServiceAsObservable$1.smali
2018/07/17 02:14:05 Processing smali/com/lifx/app/DiagnosticsActivity$onResume$1.smali
2018/07/17 02:14:05 Processing smali/com/lifx/app/DiagnosticsActivity$onResume$2$$special$$inlined$let$lambda$1.smali
2018/07/17 02:14:05 Processing smali/com/lifx/app/DiagnosticsActivity$onResume$2$1$1.smali
2018/07/17 02:14:05 Processing smali/com/lifx/app/DiagnosticsActivity$onResume$2$1$2.smali
2018/07/17 02:14:05 Processing smali/com/lifx/app/DiagnosticsActivity$onResume$2.smali
panic: runtime error: index out of range

goroutine 8 [running]:
github.com/alexeysoshin/smali2java/parser.(*FieldParser).Parse(0xc420046da0, 0xc420046ec8, 0xc42009a280, 0x5, 0x5, 0xc4200a036f, 0x5b)
    /home/craig/go/src/github.com/alexeysoshin/smali2java/parser/field.go:21 +0x32e
github.com/alexeysoshin/smali2java/parser.(*JavaFile).ParseLine(0xc420046ec8, 0xc4200aa2a0, 0x5b, 0xc91, 0xc4200aa2a0)
    /home/craig/go/src/github.com/alexeysoshin/smali2java/parser/java_file.go:82 +0xf29
main.convertSmali.func1(0xc420018910, 0x48, 0xc4200103c0)
    /home/craig/go/src/github.com/alexeysoshin/smali2java/smali2java.go:54 +0x1b6
created by main.convertSmali
    /home/craig/go/src/github.com/alexeysoshin/smali2java/smali2java.go:64 +0xf7

It seems to stop at a different file every time. Let me know if there is anything else you need.

This is the LIFX apk (smart lights)

AlexeySoshin commented 6 years ago

@shanness Interesting. Probably has to do with inner classes. Could you attach one of the files, for example smali/com/lifx/app/MainActivity$4.smali, please?

shanness commented 6 years ago

Yep, will do. I'll also include this one, there are lots of inner classes, so I think it's just a fluke that the above broke on that, this didn't. Will include this one too.

$ /home/craig/go/src/github.com/alexeysoshin/smali2java/smali2java -path_to_smali=smali/com/lifx/
2018/07/17 12:06:44 Processing smali/com/lifx/app/AnalyticsApplication.smali
2018/07/17 12:06:44 Processing smali/com/lifx/app/AppBroadcastReceiver$BroadcastEventListener.smali
2018/07/17 12:06:44 Processing smali/com/lifx/app/AppBroadcastReceiver.smali
2018/07/17 12:06:44 Processing smali/com/lifx/app/DiagnosticsActivity$Companion$queryWANState$2$1.smali
2018/07/17 12:06:44 Processing smali/com/lifx/app/DiagnosticsActivity$Companion$sendEmail$1.smali
2018/07/17 12:06:44 Processing smali/com/lifx/app/DiagnosticsActivity$Companion.smali
2018/07/17 12:06:44 Processing smali/com/lifx/app/DiagnosticsActivity$EmailPreparationTask.smali
2018/07/17 12:06:44 Processing smali/com/lifx/app/DiagnosticsActivity$onCreate$1.smali
2018/07/17 12:06:44 Processing smali/com/lifx/app/DiagnosticsActivity$onLongClick$$inlined$let$lambda$1.smali
2018/07/17 12:06:44 Processing smali/com/lifx/app/DiagnosticsActivity$onResume$$inlined$bindServiceAsObservable$1$1.smali
2018/07/17 12:06:44 Processing smali/com/lifx/app/DiagnosticsActivity$onResume$$inlined$bindServiceAsObservable$1.smali
2018/07/17 12:06:44 Processing smali/com/lifx/app/DiagnosticsActivity$onResume$1.smali
2018/07/17 12:06:44 Processing smali/com/lifx/app/DiagnosticsActivity$onResume$2$$special$$inlined$let$lambda$1.smali
2018/07/17 12:06:44 Processing smali/com/lifx/app/DiagnosticsActivity$onResume$2$1$1.smali
2018/07/17 12:06:44 Processing smali/com/lifx/app/DiagnosticsActivity$onResume$2$1$2.smali
2018/07/17 12:06:44 Processing smali/com/lifx/app/DiagnosticsActivity$onResume$2.smali
2018/07/17 12:06:44 Processing smali/com/lifx/app/DiagnosticsActivity.smali
2018/07/17 12:06:44 Processing smali/com/lifx/app/FactoryTestActivity$onResume$subscription$1$1$1.smali
2018/07/17 12:06:44 Processing smali/com/lifx/app/FactoryTestActivity$onResume$subscription$1$1.smali
2018/07/17 12:06:44 Processing smali/com/lifx/app/FactoryTestActivity$onResume$subscription$1$2.smali
2018/07/17 12:06:44 Processing smali/com/lifx/app/FactoryTestActivity$onResume$subscription$1$3.smali
2018/07/17 12:06:44 Processing smali/com/lifx/app/FactoryTestActivity.smali
2018/07/17 12:06:44 Processing smali/com/lifx/app/FragmentCallbacks.smali
panic: runtime error: index out of range

goroutine 8 [running]:
github.com/alexeysoshin/smali2java/parser.(*FieldParser).Parse(0xc420046da0, 0xc420046ec8, 0xc42009a280, 0x5, 0x5, 0xc4200b636f, 0x5b)
    /home/craig/go/src/github.com/alexeysoshin/smali2java/parser/field.go:21 +0x32e
github.com/alexeysoshin/smali2java/parser.(*JavaFile).ParseLine(0xc420046ec8, 0xc4200c82a0, 0x5b, 0xc91, 0xc4200c82a0)
    /home/craig/go/src/github.com/alexeysoshin/smali2java/parser/java_file.go:82 +0xf29
main.convertSmali.func1(0xc420018910, 0x48, 0xc4200103c0)
    /home/craig/go/src/github.com/alexeysoshin/smali2java/smali2java.go:54 +0x1b6
created by main.convertSmali
    /home/craig/go/src/github.com/alexeysoshin/smali2java/smali2java.go:64 +0xf7

Here's smali/com/lifx/app/FragmentCallbacks.smali

.class public interface abstract Lcom/lifx/app/FragmentCallbacks;
.super Ljava/lang/Object;
.source "SourceFile"

# virtual methods
.method public abstract a(Lcom/lifx/app/util/OnServiceBoundListener;)V
.end method

And smali/com/lifx/app/MainActivity$4.smali

.class Lcom/lifx/app/MainActivity$4;
.super Ljava/lang/Object;
.source "SourceFile"

# interfaces
.implements Ljava/lang/Runnable;

# annotations
.annotation system Ldalvik/annotation/EnclosingMethod;
    value = Lcom/lifx/app/MainActivity;->onActivityResult(IILandroid/content/Intent;)V
.end annotation

.annotation system Ldalvik/annotation/InnerClass;
    accessFlags = 0x0
    name = null
.end annotation

# instance fields
.field final synthetic a:Lcom/lifx/app/MainActivity;

# direct methods
.method constructor <init>(Lcom/lifx/app/MainActivity;)V
    .locals 0

    .prologue
    .line 409
    iput-object p1, p0, Lcom/lifx/app/MainActivity$4;->a:Lcom/lifx/app/MainActivity;

    invoke-direct {p0}, Ljava/lang/Object;-><init>()V

    return-void
.end method

# virtual methods
.method public run()V
    .locals 1

    .prologue
    .line 412
    iget-object v0, p0, Lcom/lifx/app/MainActivity$4;->a:Lcom/lifx/app/MainActivity;

    invoke-virtual {v0}, Lcom/lifx/app/MainActivity;->u()V

    .line 413
    return-void
.end method
AlexeySoshin commented 6 years ago

@shanness Thanks, your examples helped me to catch at least two bugs in the current code! Please check latest version and if you have any other crashes, please submit other smali files to investigate.

shanness commented 6 years ago

It's still failing all over the place on random ones. I'll give you a tgz with all the smali files I'm trying it on. You can grab it here.

I've had it fail on smali/com/lifx/app/FactoryTestActivity$onResume$subscription$1$1$1.smali smali/com/lifx/app/DiagnosticsActivity.smali smali/com/lifx/app/LifxApplication.smali smali/com/lifx/app/DiagnosticsActivity$onResume$2$1$1.smali smali/com/lifx/app/FactoryTestActivity$onResume$subscription$1$2.smali and more. Almost every run is a different file.

AlexeySoshin commented 6 years ago

@shanness I did a couple of improvements. First, I removed concurrency entirely, making run more predictable. Second, your entire project should get parsed without crashes.

shanness commented 6 years ago

Hey there.

Definitely working much better. I assume the messy output is the java classes. They seem pretty unreadable, but might be able to help.

It's now working on the lifx/app package, but fails on the lifx/core/util one (which isn't in the tgz above).

I've updated the above tgz to include all the com.lifx smali files if you are interested in finding the breakage.

Processing smali/com/lifx/core/util/Log$Delegate.smali panic: runtime error: slice bounds out of range

Cheers

pj-alvarado10 commented 5 years ago

Yes, there is still error: panic: runtime error: slice bounds out of range

AlexeySoshin commented 5 years ago

Hi @pj-alvarado10 , Could you please attach the file the causes this error for you?

Thanks

pj-alvarado10 commented 5 years ago

You mean this?

file.txt

Thanks a lot :)

FireTiger33 commented 5 years ago

Hi. You can see? panic: runtime error: slice bounds out of range

Root+Explorer-v4.5_build_163P.apk.txt

AlexeySoshin commented 4 years ago

Won't be relevant after #11 is implemented