JesusFreke / smali

smali/baksmali
6.29k stars 1.07k forks source link

ReflectionUtils.dexToJavaName Bug #820

Closed XhstormR closed 2 years ago

XhstormR commented 3 years ago
fun main() {
    var dexToJavaName = "android.app.Activity"
    var javaToDexName = ""
    repeat(10){
        javaToDexName = ReflectionUtils.javaToDexName(dexToJavaName)
        println(javaToDexName)
        dexToJavaName = ReflectionUtils.dexToJavaName(javaToDexName)
        println(dexToJavaName)
    }
}

Output:

Landroid/app/Activity;
android.app.Activit
Landroid/app/Activit;
android.app.Activi
Landroid/app/Activi;
android.app.Activ
Landroid/app/Activ;
android.app.Acti
Landroid/app/Acti;
android.app.Act
Landroid/app/Act;
android.app.Ac
Landroid/app/Ac;
android.app.A
Landroid/app/A;
android.app.
Landroid/app/;
android.app
Landroid/app;
android.ap

I think the last return code:

return dexName.replace('/', '.').substring(1, dexName.length()-2);

should be:

return dexName.replace('/', '.').substring(1, dexName.length()-1);
JesusFreke commented 2 years ago

Fixed by https://github.com/JesusFreke/smali/pull/829