转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10840818.html

一:反编译

通常用于第三方JAR包的逆向工程。

一般我们拿到的jar包都是经过编译后的 .class文件,但是我们在开发过程中对jar包的调用有疑问,或者像深入探索原理时,根本无法查看源码,这对我们来说就比较沮丧了。

这个时候,我们可以通过一些反编译工具,将 .class 文件逆向成 java源代码,这样就可以看到它的真面目啦~

java反编译我们一般使用jad工具,或者网上提供的一些可用的第三方工具,很多的,找找就有了。

二:反汇编

反汇编与反编译是两码事,虽然原材料都是 .class文件。

上面提到的反编译是向上的,即根据编译后的结果,反向得到编译前的源码。

而反汇编则是根据编译后的结果,倒推源码编译的过程,这里就可以看出代码逻辑真实编译、执行过程的每一步,对于性能优化、问题追溯等具有十分强大的帮助。

Java反汇编使用jdk自带的工具——javap。

安装了Java开发环境的电脑上,可以通过命令行 输入 :javap -c XXX.class 文件来查看该class文件的编译过程。

Java .class文件的反编译与反汇编的更多相关文章

  1. Java代码加密与反编译(二):用加密算法DES修改classLoader实现对.class文件加密

    Java代码加密与反编译(二):用加密算法DES修改classLoader实现对.class文件加密 二.利用加密算法DES实现java代码加密 传统的C/C++自动带有保护机制,但java不同,只要 ...

  2. 如何保护java程序不被反编译

    Java是一种 跨平台的.解释型语言 Java 源代码编译中间“字节码”存储于class文件中.Class文件是一种字节码形式的中间代码,该字节码中包括了很多源代码的信息,例如变量名.方法名 等.因此 ...

  3. [转]Android应用安装包apk文件的反编译与重编译、重签名

    背景介绍: 最近在做Robotium自动化测试,使用到solo.takeScreenshot()函数以在测试过程中截图,但此函数需要被测试APP具有<uses-permission androi ...

  4. Java逆向武器库_反编译工具

    1.反编译工具之_jd-gui 官网下载地址:http://java-decompiler.github.io/#jd-gui-download 使用: 下载后解压直接使用即可. jd-gui的优势是 ...

  5. Java Jar源码反编译工具那家强

    本文介绍下Java Jar常见的反编译工具,并给出使用感受. 反编译JAR能干什么: 排查问题.分析商业软件代码逻辑,学习优秀的源码思路. JD-GUI 下载地址:http://java-decomp ...

  6. Java代码加密与反编译(一):利用混淆器工具proGuard对jar包加密

    Java 代码编译后生成的 .class 中包含有源代码中的所有信息(不包括注释),尤其是在其中保存有调试信息的时候.所以一个按照正常方式编译的 Java .class 文件可以非常轻易地被反编译.通 ...

  7. Android的APK文件的反编译方法【转】

    实用的收藏一下. 来自:http://www.dewen.org/q/711/%E8%AF%B7%E6%95%99Android%E7%9A%84APK%E6%96%87%E4%BB%B6%E7%9A ...

  8. Android odex,oat文件的反编译,回编译

    现在,许多Android手机的ROM包在生成过程中都启用优化,把jar文件抽空,生成odex/oat和vdex文件,以在运行时省掉编译时间.如果想对这些jar进行修改,就要修改它们所对应的odex或者 ...

  9. 如何防止SWF文件被反编译

    这篇文章的标题所提出的问题的答案是“不可能”.至少对我来说是不可能的.借助适当的工具,我们可以反编译任何SWF文件.所以,不要将重要的信息置于SWF文件中.SWF文件中不要包含个人的帐号或者密码. 我 ...

随机推荐

  1. BZOJ-4488:最大公约数(GCD)

    给定一个长度为 N 的正整数序列Ai对于其任意一个连续的子序列{Al,Al+1...Ar},我们定义其权值W(L,R )为其长度与序列中所有元素的最大公约数的乘积,即W(L,R) = (R-L+1) ...

  2. kafka之五:如何手动更新Kafka中某个Topic的偏移量

    本文介绍如何手动跟新zookeeper中的偏移量.我们在使用kafka的过程中,有时候需要通过修改偏移量来进行重新消费.我们都知道offsets是记录在zookeeper中的,所以我们想修改offse ...

  3. 使用 StoryBoard 制作一个能够删除cell的TableView

    本篇博客方便自己检索使用.资源链接 下面是制作效果图,点击删除按钮,就能将该cell删除: 下面是主要的代码: #define KSUPER_TAG 20000 #define KDEFAU_TAG ...

  4. 使用 Git 命令去管理项目的版本控制(一)

    参考资料:参考  参考 声明本文是作者原创,是自己的学习笔记,仅供学习参考. 在 10.11.2Mac系统中,要显示隐藏的文件夹使用命令行: defaults write com.apple.find ...

  5. 继承映射关系 subclass的查询

    Person大类的映射文件配置 1 <hibernate-mapping package="com.zh.hibernate.subclass"> <class ...

  6. C#中的explicit和implicit了解一下吧

    今天在研究公司项目框架的时候看到了下面的用法,public static implicit operator JsonData(int data);.貌似很久没用过这种隐式转换的写法了,因此重新温习一 ...

  7. Swift3.0 键盘高度监听获取

    方法:通过通知监听键盘的动态 1.键盘的动态有四种: public static let UIKeyboardWillShow: NSNotification.Name public static l ...

  8. HDU4791【杂】

    题意: 给你一个从0开始的区间si,每个区间是前闭后开,[ s[i] , s[i+1] ), 然后再给你个一个pi,代表你在区间[ s[i] , s[i+1] )里面买东西的单价是pi,给出的s1一定 ...

  9. FileReader文件读取API

    :用来把文件读入内存,并且读取文件中的数据.FileReader接口提供了一个异步API,使用该API可以在浏览器主线程中异步访问文件系统,读取文件中的数据. 1.FileReader接口的方法 Fi ...

  10. iOS中UIWebView使用JS交互

    iOS中偶尔也会用到webview来显示一些内容,比如新闻,或者一段介绍.但是用的不多,现在来教大家怎么使用js跟webview进行交互. 这里就拿点击图片获取图片路径为例: 1.测试页面html & ...