说明:下面的反编译结果使用“http://download.csdn.net/detail/wangshuxuncom/6841823”处的反编译工具反编译的。

一、public class Test {

public static void main(String[] args) {
                        System.out.println("测试!");
               }

}

运行上面程序,将生成的class文件反编译后的代码为:

import java.io.PrintStream;

public class Test
       {

public Test()
              {
              }

public static void main(String args[])
             {
                      System.out.println("\u6D4B\u8BD5\uFF01");
             }
      }

总结:

①、原java中的汉字会被反编译为特殊字符;

②、如果原java中存在System.out.println控制台输出语句,则反编译后的java文件中会多一个import java.io.PrintStream;

二、public class Test {

private String name;

public Test(String name){
                      this.name = name;
            }

public static void main(String[] args) {
                     System.out.println(new Test("测试").name);
           }
       }

运行上面程序,将生成的class文件反编译后的代码为:

import java.io.PrintStream;

public class Test
       {

public Test(String name)
           {
                   this.name = name;
           }

public static void main(String args[]) 
           {
                  System.out.println((new Test("\u6D4B\u8BD5")).name);
           }

private String name;
       }

总结:

①、原java中的全局变量会放在反编译java文件中最后面;

②、对比一和二,可以看得出:如果一个java源文件中没有带参的构造函数,则反编译后的java文件中会显示默认的构造函数;

三、测试证明:①、如果一个类中含有静态代码块,则静态代码块会显示在反编译后的java文件的最下面全局变量的上面(如果原java文件中有全局变量的话)。

②、System.out.println(new Class[] {boolean.class, byte.class, char.class, double.class, float.class, int.class, long.class, short.class});//反编译class文件以后:System.out.println(new Class[] {Boolean.TYPE, Byte.TYPE, Character.TYPE, Double.TYPE, Float.TYPE, Integer.TYPE, Long.TYPE, Short.TYPE});

③、System.out.println(new Class[] {boolean[].class, byte[].class, char[].class, double[].class, float[].class, int[].class, long[].class, short[].class});//反编译class文件以后:System.out.println(new Class[] {[Z, [B, [C, [D, [F, [I, [J, [S});

④、System.out.println(new Class[] {Boolean[].class, Byte[].class, Character[].class, Double[].class, Float[].class, Integer[].class, Long[].class, Short[].class});//反编译class文件以后:System.out.println(new Class[] {[Ljava/lang/Boolean;, [Ljava/lang/Byte;, [Ljava/lang/Character;, [Ljava/lang/Double;, [Ljava/lang/Float;, [Ljava/lang/Integer;, [Ljava/lang/Long;, [Ljava/lang/Short;});//Lxxx; 用来表示对象类型,[ 用来表示数组。

⑤、System.out.println(new Class[][] {{boolean[].class, byte[].class, char[].class}, {double[].class, float[].class, int[].class}, {long[].class, short[].class}});//反编译class文件以后:System.out.println(new Class[][] {new Class[] {[Z, [B, [C}, new Class[] {[D, [F, [I}, new Class[] {[J, [S}});

⑥、System.out.println(Object.class);//反编译class文件以后:System.out.println(java/lang/Object);——呵呵呵你可以展开联想的,比如String.class在反编译class文件中显示的是java/lang/String

反编译那些事儿(一)相关推荐

  1. Java代码的编译与反编译那些事儿

    GitHub 2.5k Star 的Java工程师成神之路 ,不来了解一下吗? GitHub 2.5k Star 的Java工程师成神之路 ,真的不来了解一下吗? GitHub 2.5k Star 的 ...

  2. 反编译 轻松调频 Android APP 下载“飞鱼秀”录音

    经常听"飞鱼秀",但是由于时间的原因,只能听回放,但是轻松调频的APP做的有点儿... 听回放的时候经常会中断,还不能拖动进度条,就决定把录音下载下来听. 1.反编译apk(And ...

  3. flash反编译杂记

    近日有位童鞋让我帮忙把某个在线的flash游戏做成单机硬盘版的好在自己的电脑上玩,恰好又有些其它swf文件的反编译需求,于是很不专业的折腾了一番.思路比较混乱,随手记一下.Flash 达人请直接飘过. ...

  4. Java原生调用apktool反编译及再次打包源码

    大家一听到反编译.逆向工程就觉得好像离自己很远,都是些黑客才干的事儿,但实际情况并不是这样,做过手机游戏开发的小伙伴应该都知道,一个游戏包从开发测试到最终在游戏商店上架,中间会经过,代码混淆,增加渠道 ...

  5. android 反编译 重打包,一键轻松反编译解包+重打包安卓APP 神器~

    一提到反编译,对于很多童鞋一定会赶脚很复杂很高大上的酱紫,在安卓平台上,对APK的反编译其实是非常简单的.今天菲菲君要为大家准备一枚APP反编译解包打包神器,真正实现一键自动搞定,新人也能分分钟会用哟 ...

  6. Apk反编译破解及重新打包

    以前对app破解这些东西一直很感兴趣,一直认为这是大牛才可能实现的东西,后来发现,其实并不是这样的. 所以抽空我也来研习一番. 步骤综述: 1.找一个需要破解的 app 2.反编译 该 app 3.理 ...

  7. 反编译软件dnSpy中修改baml文件

    问题: 使用wpf的visifiref插件,但是会有水印和文本显示,想修改界面去掉文本 you are using the trial version 步骤1: 用反编译软件打开dl文件 步骤2: 搜 ...

  8. Window7 安装开源swf反编译软件JPEXS Free Flash Decompiler(FFdec)实录

    FFdec是一个免费开源的swf反编译软件,在Windows,Linux,Mac上都能用,比那个硕思闪客精灵厚道多了,功能也不比它差,我以后就用FFdec了. 官网地址如下: http://www.f ...

  9. Android如何防止apk程序被反编译

    作为Android应用开发者,不得不面对一个尴尬的局面,就是自己辛辛苦苦开发的应用可以被别人很轻易的就反编译出来.Google似乎也发现了这个问题,从SDK2.3开始我们可以看到在android-sd ...

  10. apktoolkit apk反编译没有文件_重新编译mono——修改apk中Assembly-CSharp.dll并重新打包...

    环境: 操作系统:Mac OSX10.12.6 mono版本:unity2017.1.3p4 NDK版本:android-ndk-r10e 一.指导步骤: 1.通过apktool工具反编译apk 2. ...

最新文章

  1. oracle status
  2. IOS 开发-- 常用-- 核心代码
  3. 牛客题霸 [括号生成] C++题解/答案
  4. shell,perl,python
  5. Python成为TIOBE 2020年度编程语言!是获此奖项次数最多的语言
  6. Div+CSS布局入门教程(二) 写入整体层结构与CSS
  7. 组合最优化——凸集凸函数
  8. el-date-picker修改为周类型日期插件时间格式是开始时间字段级和结束时间字段两个传参给后台
  9. 对接阿里云短信平台报错
  10. 计算机网络思科平台第四章测验答案
  11. HistoricProcessInstance 和 HistoricActivityInstance 有什么区别,HistoricActivityInstance 是否指的任务实例?
  12. 创新实训1 小组分工以及项目部署
  13. 高能低耗之选!数字孪生多业务场景把控能耗,让强者更强
  14. 直方图匹配原理 MALAB实现
  15. 开源Jabber(XMPP) IM服务器介绍
  16. 考研:研究生考试(七天学完)之《概率与统计》研究生学霸重点知识点总结之考试内容各科占比及常考知识重点梳理(随机事件和概率、一维随机变量及其分布、多维随机变量及其分布、随机变量的数字特征、大数定律和中心
  17. 不花钱,用一个小时搭建自己的博客网站
  18. 怎么给视频加logo水印?操作简单易上手
  19. 外设测试 - SATA 接口功能测试
  20. windows日志删除工具

热门文章

  1. python 连接 mysql
  2. android Xmpp+openfire 消息推送 :SASL authentication failed using mechanism DIGEST-MD5
  3. 读《你的灯亮这么》---走出问题的乌托邦
  4. MDaemon日志报错:550 aa@*.com must check for new mail first
  5. ES6的一个基础类,支持私有属性和方法,支持event和mix
  6. BZOJ1012: [JSOI2008]最大数maxnumber [线段树 | 单调栈+二分]
  7. golang之旅--接口 (interface)
  8. 打造高效的运维日志收集与分析平台
  9. 宽带连接不上,拨号宽带连接的创建。
  10. 17.软件架构设计:大型网站技术架构与业务架构融合之道 --- 团队能力的提升