android 反编译代码中goto语句还原

android 反编译后有很多goto语句该如何正确还原?

例如下面一段反编译后的代码:

  public byte[] array()
    {
        ByteIO byteio;
        Iterator iterator;
        byteio = new ByteIO(size());
        int i;
        if(idList == null)
            i = 0;
        else
            i = idList.size();
        byteio.put((byte)i);
        if(idList == null) goto _L2; else goto _L1
_L1:
        iterator = idList.iterator();
_L5:
        if(iterator.hasNext()) goto _L3; else goto _L2
_L2:
        return byteio.array();
_L3:
        byteio.putUint(((Long)iterator.next()).longValue());
        if(true) goto _L5; else goto _L4
_L4:
    }

 

说明:其实goto语句就是编译时代码的执行顺序,将if()else()等判断语句通过goto指示到对应的代码位置,如goto _L2就是跳到_L2行位置,最左侧的_L2:为行号。所以还原后的代码为:

 public byte[] array(){

        ByteIO byteio;
        Iterator iterator;
        byteio = new ByteIO(size());
        int i;
        if(idList == null)
            i = 0;
        else
            i = idList.size();
        byteio.put((byte)i);
        if(idList == null){
              return byteio.array();
        }else{
             iterator = idList.iterator();
             while(iterator.hasNext()){
                 byteio.putUint(((Long)iterator.next()).longValue());
             }
             return byteio.array();
        }
    }
    

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
反编译工具包 下载后的操作步骤 Android APK反编译 未做测试全是最新工具包,另附已经做过测试的工具包,部分是旧工具,自己可替换 http://download.csdn.net/detail/haoqinghua/5500751 一、Apk反编译得到Java代码 下载反编译工具包,打开apk2java目录下的dex2jar-0.0.9.9文件夹,内含apk反编译java源码工具,以及源码查看工具。 dex2jar:apk反编译工具 ,是将apk的classes.dex转化成jar文件 jdgui:源码查看工具,是一个反编译工具,可以直接查看反编译后的jar包源代码 具体步骤: 首先将apk文件后缀改为zip并解压,得到其的classes.dex,它就是java文件编译再通过dx工具打包而成的,将classes.dex复制到dex2jar.bat所在目录dex2jar-0.0.9.9文件夹。 在命令行下定位到dex2jar.bat所在目录,运行 dex2jar.bat classes.dex 生成 classes_dex2jar.jar 然后,进入jdgui文件夹双击jd-gui.exe,打开上面生成的jar包classes_dex2jar.jar,即可看到源代码 二、apk反编译生成程序的源代码和图片、XML配置、语言资源等文件 如果是汉化软件,这将特别有用 首先还是要下载此反编译工具包,其包含最新的apktool 1.5 具体步骤: 下载反编译工具包,打开apk2java目录下的apktool1.4.1文件夹,内含三个文件:aapt.exe,apktool.bat,apktool.jar 注:里面的apktool_bk.jar是备份的老版本,最好用最新的apktool.jar 在命令行下定位到apktool.bat文件夹,输入以下命令:apktool.bat d -f abc123.apk abc123, apktool.bat 命令行解释:apktool.bat d -f [apk文件 ] [输出文件夹] 反编译的文件如下(AndroidManifest.xml为例): 将反编译完的文件重新打包成apk,很简单,输入apktool.bat b abc123(你编译出来文件夹)即可,命令如下: 打包apk后的文件在目录C:\HelloAndroid下,生成了两个文件夹: build dist 三、 图形化反编译apk 上述步骤一、二讲述了命令行反编译apk,现在提供一种图形化反编译工具:Androidfby 首先,下载上述反编译工具包,打开Androidfby目录,双击Android反编译工具.exe,就可以浏览打开要反编译的apk

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值