前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >jad Couldn't fully decompile method getIndex

jad Couldn't fully decompile method getIndex

作者头像
johnhuster的分享
发布2022-03-29 14:35:35
3790
发布2022-03-29 14:35:35
举报
文章被收录于专栏:johnhuster

使用jad以及JD-GUI反编译cglib产生的class文件时,发现这两种工具都不能很好的反编译fastclass文件,总会出现一部分汇编代码:

代码语言:javascript
复制
  /* Error */
   public int getIndex(net.sf.cglib.core.Signature arg1)
   {
     // Byte code:
     //   0: aload_1
     //   1: invokevirtual 17    java/lang/Object:toString    ()Ljava/lang/String;
     //   4: dup
     //   5: invokevirtual 21    java/lang/Object:hashCode    ()I
     //   8: lookupswitch    default:+102->110, -1949253108:+52->60, 837540553:+62->70, 1826985398:+72->80, 1913648695:+82->90, 1984935277:+92->100
     //   60: ldc 23
     //   62: invokevirtual 27    java/lang/Object:equals    (Ljava/lang/Object;)Z
     //   65: ifeq +46 -> 111
     //   68: iconst_1
     //   69: ireturn
     //   70: ldc 29
     //   72: invokevirtual 27    java/lang/Object:equals    (Ljava/lang/Object;)Z
     //   75: ifeq +36 -> 111
     //   78: iconst_0
     //   79: ireturn
     //   80: ldc 31
     //   82: invokevirtual 27    java/lang/Object:equals    (Ljava/lang/Object;)Z
     //   85: ifeq +26 -> 111
     //   88: iconst_2
     //   89: ireturn
     //   90: ldc 33
     //   92: invokevirtual 27    java/lang/Object:equals    (Ljava/lang/Object;)Z
     //   95: ifeq +16 -> 111
     //   98: iconst_3
     //   99: ireturn
     //   100: ldc 35
     //   102: invokevirtual 27    java/lang/Object:equals    (Ljava/lang/Object;)Z
     //   105: ifeq +6 -> 111
     //   108: iconst_4
     //   109: ireturn
     //   110: pop
     //   111: iconst_m1
     //   112: ireturn
   }

最终在eclipse上安装了Enhanced Class Decompiler这个插件可以很好的解决这个问题:

代码语言:javascript
复制
    public int getIndex(Signature var1) {
         String var10000 = var1.toString();
         switch (var10000.hashCode()) {
             case -1949253108 :
                 if (var10000.equals("update()V")) {
                     return 1;
                 }
                 break;
             case 837540553 :
                 if (var10000.equals("add(Ljava/lang/String;I)Z")) {
                     return 0;
                 }
                 break;
             case 1826985398 :
                 if (var10000.equals("equals(Ljava/lang/Object;)Z")) {
                     return 2;
                 }
                 break;
             case 1913648695 :
                 if (var10000.equals("toString()Ljava/lang/String;")) {
                     return 3;
                 }
                 break;
             case 1984935277 :
                 if (var10000.equals("hashCode()I")) {
                     return 4;
                 }
         }
        return -1;
     }
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019/03/13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档