java 反编译 class文件 jad eclipse 编程 破解

工具
工具使用jad(还有joda,jd等工具)
1、使用jad反编译class文件,jad可以配置到eclipse中当做插件,直接下载jad的eclipse插件jar包,放在eclipse的plugin目录下即可。把下载的jad.exe放在JAVA_HOME的bin下。然后eclipse中点击class文件即可查看到源码。
2、使用其他工具,FrontEnd Plus集成了jad的java反编译工具,支持多个文件的反编译,也支持各种选项。
 
 
矫正反编译代码错误和奇怪代码
1、异常错误
     反编译之后出入类似如下代码:
      DocumentException e;
        e;
        e.printStackTrace();
        break MISSING_BLOCK_LABEL_67;
        e;
        e.printStackTrace();
        break MISSING_BLOCK_LABEL_67;
        e;
        e.printStackTrace();
        break MISSING_BLOCK_LABEL_67;
        e;
这种处理方式就是异常处理,反编译之后出现的这种情况,修改的时候使用try catch即可,其实完全可以将这块删除之后,然后eclipse会自动提示需要添加异常处理的模块,自动try catch即可。
 
2、语句标号(goto)
这种情况常见于条件语句,即转化为if,else语句即可,这种比较容易判断。 
  i = 0;
          goto _L1
_L3:
          i++;
_L1:
        if(i < 4) goto _L3; else goto _L2
_L2:
        g.dispose();
 
上面的代码实际上就是如下的代码:
i=0;
if(i < 4){
i++;
}else{
g.dispose();
}
 
3、jvm代码信息错误
                  String rand = backStr[random.nextInt(backStr.length)];
        this;
        sRand;
        JVM INSTR new #203 <Class StringBuilder>;
        JVM INSTR dup_x1 ;
        JVM INSTR swap ;
        String.valueOf();
        StringBuilder();
        rand;
        append();
        toString();
        sRand;
   这种错误代码,也是很常见的,比如上面的代码中,rand 是局部设定的变量,而存在一个类变量sRand,上面的代码可以使用如下的代码替换掉错误。
                this.sRand += rand;
    当然,对这段代码进行分析一下即可看出,分析的时候需要结合下面4中讲解的字符串拼接翻译器代码,从这段混乱的代码中可以看到,有this和sRand,这种可以看出是操作了this的sRand变量,下面的jvm instr是创建了一个stringBuilder的的变量,实际这个变量是保存了this的sRand字符串。最后是append了一个rand变量,然后把这个变量又赋值给了this的sRand。
 
4、字符串拼接的代码
                       (new StringBuilder(String.valueOf(prefix))).append(file).toString();
      上面的这种代码,实际代码如下:
                       prefix + file
      所有字符串拼接都是转为StringBuilder使用append拼接之后然后toString。
 
5、continue关键字
这种常常会隐含逻辑错误,但是编译并不报错,这种问题最难发现。这种的反编译一般伴随着大段的循环代码,然后反编译之后会将循环代码或者if代码转成goto语句(参见2),然后在某个情况之下不需要继续执行,便使用continue截断代码执行路径。代码出现如下情况。
                      continue;
 
    这样的代码出现的时候,并没有报语法的错误,我遇到这种情况之后,程序运行之后结果出错,最后将程序中的这个反编译问题找了出来,将continue修改成break语句正常了。这样的问题常常会出现在while循环中,可能反编译出来的程序丢失了while循环,变成了if语句,常常是迭代器循环的时候,非常容易出现这种情况。
 
6、迭代器循环
     迭代器循环反编译之后常出险两种情况,一种容易引起逻辑上的错误,一种没有逻辑和语法上的错误,只不过不是原来代码的写法而已。
      
iter = datalist.iterator();
     goto _L1
if(iter.hasNext()) goto _L3; else goto _L2
    上面的代码可以利用类型2来翻译出来,但是这里会有个地方需要修改,那就是if必须换成while,而else中是一些异常处理而已。这里常见的隐含问题在于,在代码段L3中,常常含有break,continue等跳转语句,一定要分析清楚,不然很容易出现难以排查的逻辑错误,使得反编译出来的代码运行结果不正确。
    还原之后的代码如下:
 try {
     Iterator iter = datalist.iterator();
     while(iter.hasNext()){
 
     }
 }catch (Exception e) {
     e.printStackTrace();
 }
    还有一种没有错误的译法如下:
for(Iterator iterrisk = tRiskLIst.iterator(); iterrisk.hasNext();)
{
}
   这种译法没有错误,只不过是看着不习惯而已,原程序程序通常如下:
Iterator iterrisk = tRiskLIst.iterator();
while(iterrisk.hasNext()){
}

java 反编译 class文件 jad eclipse乱码相关推荐

  1. java反编译命令jad,java反编译小工具jad常用命令

    java反编译小工具jad常用命令 2014/6/11 19:39:24  sky52bc  程序员俱乐部  我要评论(0) 摘要:首先,看一下jad的帮助提示-a-用JVM字节格式来注解输出-af- ...

  2. myeclipse重新编译java,反编译class文件并重新编译的方法

    在没有.java源码的情况下,如果想修改一个.class文件.可以通过以下步骤实现: 修改前的class文件: 一.反编译.class文件成.java文件. 1.可以使用Java Decompiler ...

  3. 强烈推荐的一款 Java 反编译工具:JAD

    01.JAD 是什么 JAD 是一款老牌的.经典的.使用起来简单的 Java 反编译工具.大家都知道,将源代码转换成二进制执行代码的过程叫"编译",比如将 Java 源代码编译成 ...

  4. java 反编译class文件_用Java实现JVM第三章《解析class文件》

    解析class文件 案例介绍 本案例主要介绍通过java代码从class文件中解析:class文件.常量池.属性表: 作为类(或者接口)信息的载体,每个class文件都完整地定义了一个类.为了使jav ...

  5. java反编译工具jad和jd-gui使用

    1.jad下载地址 http://www.javadecompilers.com/jad 2.jad配置环境变量 解压下载好的压缩包,可以得到一个jad.exe 文件. 配置环境变量主要目的是你可以全 ...

  6. JAD反编译class文件成java文件

    class文件是字节码文件,打开谁也看不懂,但是如果需要用里面代码的时候怎么办呢?其实通过JAD就可以进行反编译class文件成java文件 1.下载JAD JAD官网:https://varanec ...

  7. java反编译工具jadclipse_java反编译工具jad及jadclipse

    java源码学习中常用到的工具 jad 反编译.class 文件 下载地址及使用(详见压缩包中的readme) http://varaneckas.com/jad/ 如果用eclipse 可以配合 j ...

  8. class文件批量进行反编译的工具JAD,JODE

    不废话,直接上代码演示: 将别人发布的war包,导入到自己的eclipse环境中进行再开发,最快的方法如下: 1.新建一个myeclipse的web project. 2.右键该工程,myeclips ...

  9. Java反编译工具Jad详解

    Jad(JAva Decompiler)是一个Java的反编译器,可以通过命令行把Java的class文件反编译成源代码. 如果你在使用编写代码的时候遇到找不到源代码的第三方库,而且你又需要看看这个库 ...

最新文章

  1. 系统吞吐量、TPS(QPS)、用户并发量、性能测试概念和公式
  2. 用 Go 语言理解 Tensorflow
  3. phpstorm 2016.3 终极激活方法
  4. ML之kNNC:基于iris莺尾花数据集(PCA处理+三维散点图可视化)利用kNN算法实现分类预测
  5. php归档函数(按时间)实现
  6. 手机来电秀怎么开启_360手机卫士怎么设置来电秀 360手机卫士来电秀设置方法...
  7. 如何截取_【实用技巧】如何截取网页长图
  8. r语言kendall协和系数_多变量Kendall协和系数检验.ppt
  9. fisco bcos PerformanceDT.java 源码解析阅读注释
  10. can't init script for
  11. 25.212---复用和信道编码
  12. MySQL字符串拼接、分组拼接字符串
  13. dom4j 解析xml Error on line 9717 of document 不允许有匹配 [xX][mM][lL] 的处理指令目标
  14. 最详细教学--实现win10 多用户同时远程登录内网机--win10+frp+rdpwrap+阿里云服务器
  15. restsharp text html,c# – 使用RestSharp发送HTTP POST Multipart / form-data字段
  16. 斗鱼弹幕服务器第三方接入协议v1.6.2,.NET斗鱼直播弹幕客户端(上)
  17. 红孩儿编辑器的详细设计第二部分
  18. php 中文 验证码,php 验证码 支持中文验证码
  19. 当爬虫被拒绝时(Access Denied)
  20. python爬虫去哪儿网_用python爬虫爬取去哪儿4500个热门景点,看看国庆不能去哪儿...

热门文章

  1. ubuntu16.04卸载qq,只需两步
  2. 曹洁 Spark编程Scala版本课后习题答案
  3. ORACLE按照汉字拼音、笔划、部首排序。
  4. GIS项目地图工具箱测量功能
  5. 修改ftp服务器上的编码格式,windows ftp服务器设置编码格式
  6. 商务英语学c语言,【学习】商务英语900句part1
  7. Android控件之 证件照控件 包含模仿微信朋友圈照片浏览
  8. Vue开发实例(07)之编写头部页面
  9. 从零学Java(7)之数据类型,小AD竟然solo不过小朋友
  10. gromore穿山甲接入激励视频Android 原生