linux反编译java_linux系统上如何反编译.class文件
问题描述:
很多时候,我们开发都是在windows环境进行的,因此,习惯了使用鼠标,习惯了很方便的浏览,但是,生产环境并不是这样的。很多时候生产环境只有冷冷的terminal界面(字符界面)。这给我们带来了很多问题,其中一个就是,有时候生产上需要验证java程序版本是否正确,我们应该怎么做呢?可以比较文件的大小,可以比较文件的MD5,但最可靠的方法,还是把.class文件反编译,查看内容是否正确。今天我要解决的就是如何在linux/Unix上反编译.class文件。
问题解决:
在windows环境下面经常用到的反编译工具是jad-gui,那么这个工具有没有linux版本?答案肯定是的,他在这个地方:
https://varaneckas.com/jad/
根据cpu类型,我们选择了。
直接上传到服务器,使用
gzip -d jad158e.linux.intel.zip
解压会得到jad可执行文件和readme.txt文件。为了方便使用,可以把jad拷贝到PATH包含的目录下面。
jad命令的参数如下:
有时候,我们只需要反编译一个文件,那么可以使用命令:
jad [class文件名]
反编译。
通常我们会碰到反编译jar的需求,jad不支持直接反编译jar包,需要分两步实现,第一步,jar解压缩,可以创建一个src目录,使用
jar -xvf [jar文件]
然后,使用通配符解压所有class文件。
jad -r -ff -s java com/**/*.class
那么会生成同名的java文件,并且目录跟package是一致的。
接着删除原来的class文件:
find . -name "*.class" -type f | xargs rm -f
其实对于多语言国家来说,现在class文件反编译还是没有完成,譬如说中文国家,打开java文件,原来的中文全部变成了\u开头的叫unicode escape的ascii文本,这时候,可以使用jdk自带的工具修改一下:
find . -name "*.java" -type f | xargs -I {} native2ascii -reverse -encoding utf8 {} {}
那么,所有的\u开头表示的中文都会变成utf8编码了。至此,jar反编译完成了。
当然了,使用shell脚本,jar,jad和native2ascii这几个工具,可以写出更方便的反编译脚本。
笔者就写了个工具,能够填入项目中一个类的类名,就能够显示这个类的路径和反编译后的源码,包括jar包中的类也可以自动显示jar包,以及在jar包中的路径和反编译的结果。
后续:
另外还有一个工具也是挺好用的
http://www.benf.org/other/cfr/
linux反编译java_linux系统上如何反编译.class文件相关推荐
- 理解Linux和其他UNIX-Like系统上的平均负载
理解Linux和其他UNIX-Like系统上的平均负载 Linux,Mac以及其他UNIX-like系统都能显示出"load average"信息.这些数字告诉你,你系统 ...
- 【疑难杂症爆破委员会】UEFI Linux、Windows双系统,丢失Windows的efi文件导致找不到启动项(恢复Windows的efi文件)
[疑难杂症爆破委员会] UEFI Linux.Windows双系统,丢失Windows的efi文件导致找不到启动项,导致无法进入Windows系统 状况说明 状况是这样的:我本来好好的装着Linux和 ...
- Linux中检查本地系统上的开放端口列表的方法
在 Linux 中很少有用于此目的的实用程序.然而,我提供了四个最重要的 Linux 命令来检查这一点. 你可以使用以下四个命令来完成这个工作.这些命令是非常出名的并被 Linux 管理员广泛使用. ...
- mac可以写linux的进程,macOS系统上读写Linux的ext4分区方法
macOS系统上读写Linux的ext4分区方法 很多时候需要在macOS上操作Linux的ext4分区,然后macOS系统默认并不支持ext4等分区格式.今天给大家介绍的方法是如何在macOS上,使 ...
- centos7是linux内核,在CentOS 7上用源代码编译最新的Linux内核
翻译转载自:https://linuxhint.com/compile-linux-kernel-centos7/ 关键字:centos7 kernel 编译 内核 这文章是转载自国外博客的,因为这个 ...
- 在linux(arm)系统上压缩TF卡系统分区,以实现制作低容量img镜像,从而进行镜像移植至其他TF卡上的方法
试想一个情景,当你开发完一个linux系统后,想要将其TF卡制作成img镜像来移植到其他TF卡上来实现大规模部署时,你选择将写有系统的TF卡插入读卡器,插入你的win10系统的电脑上,打开Win32D ...
- mysql win linux性能对比,不同系统上 MySQL 的性能对比
不同系统上 MySQL 的性能对比 发布时间:2006-07-16 16:44:23来源:红联作者:koov 这个文件中包含了不同基准测试的结果. 测试结果后)中的数字表示精确测试中执行的SQL命令的 ...
- 在Windows系统上对hfds中的文件进行操作
在 linux 上我们可以通过命令对 hdfs 中的文件及文件目录进行处理,但是在 Windows 上编写代码时需要用到 hdfs 时该如何处理呢?其实 hdfs 也是可以部署在 Windows 系统 ...
- linux下C/C++编译时系统搜索 include 和 链接库 文件路径的指定
C/C++程序在linux下被编译和连接时,GCC/G++会查找系统默认的include和link的路径,以及自己在编译命令中指定的路径.自己指定的路径就不说了,这里说明一下系统自动搜索的路径. [1 ...
- linux vps 桌面,linode linux vps的centos系统上安装X Window System GNOME图形桌面使用vnc连接 - 乖兔博客...
国内外都很出名的linode这家vps供应商大家都不陌生,跟大多数境外vps供应商一样,官网只提供linux的系统,并且默认都是没有桌面版的,需要进行桌面图形化的东西是没法做的.要用图形桌面,就两个途 ...
最新文章
- VScode的撤销操作的快捷键
- 016 | 漫谈区块链共识机制
- 祝「杭州程序媛」母亲节快乐!
- JAVA 继承基本类、抽象类、接口
- 自定义类型处理器的应用
- 阿里云服务器ECS按ctrl+alt+delete无法登录
- python直线检测_opencv+python 开操作进行直线检测
- java图书管理系统(MySQL)
- 阿里云产品分析(PPT)
- linux 安装Python3 并安装Python Blog Wagtail
- 在centos上安装pycharm
- 30行Python代码 刷王者荣耀金币
- Canva在线免费图表制作工具
- Matplotlib和Seaborn(离散数据的图表选择与一些使用技巧)
- 截至2022年12月共计451个信息安全国家标准汇总
- 多元线性回归的正规方程解
- C语言 函数返回多个值方法
- 自己的理解——WMD
- 语法错误和语义错误区别
- python秒懂百科视频,Python开发简单爬虫
热门文章
- java流程图平行四边形_流程图图形标准含义
- 遗传算法python实例_Python遗传算法框架使用实例(一)使用Geatpy实现句子匹配
- SVN汉化包安装后无效果(已解决)
- 安装svn和安装svn汉化语言包
- 福利时间(1):Scala 入门视频
- Python3 人脸识别 源码
- 轨道交通重要组成部分网络时钟系统(子母钟系统)
- 【仿真】Proteus8.9 下载与安装教程(超详细)
- 基于python的火车票订票系统的设计与实现_火车票售票系统的设计与实现
- VC MFC 换肤 SkinSharp