​反编译jar的class文件

admin 2024年11月11日22:57:54评论5 views字数 2126阅读7分5秒阅读模式

反编译jar的class文件

前言

我们在进行代码审计的时候,很多时候我们只能拿到jar或者war之类的部署包。直接解压jar包是class文件,虽然放在idea里面也可以解析查看内容,但是不能够编辑修改等。下面我们学习一下怎么反编译成Java文件(前提是jar没有被做过特殊处理)

JAD

下载:https://varaneckas.com/jad/

​反编译jar的class文件

把classes文件放在文件夹后,放在jad同一个文件夹下面,执行命令

​反编译jar的class文件

执行命令

jad -o -r -s java -d decodeJava classes/**/*.class

反编译之后的Java文件就在decodeJava文件夹下

​反编译jar的class文件

Luyten

下载:https://github.com/deathmarine/Luyten

设置编码(中文乱码)

需进行下面的配置,反编译后的中文才能正常显示。否则,是 Unicode 编码

​反编译jar的class文件

选择要反编译的 jar 文件

​反编译jar的class文件

生成 & 保存反编译后的 java 文件

​反编译jar的class文件

IDEA自带的插件

进行反编译

利用Idea直接查看引入的jar包,或者利用idea反编译插件,将jar包变成java文件。

Mac

java -cp "/Applications/IntelliJ IDEA.app/Contents/plugins/java-decompiler/lib/java-decompiler.jar" org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true *.jar "/Users/***"

Window

I:/java15/openjdk-15-36_windows-x64_bin/jdk-15/bin/java.exe -cp "I:/idea/IntelliJ IDEA 2020.1/plugins/java-decompiler/lib/java-decompiler.jar" org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true *.jar "./result"

参数说明

  • idea自带的反编译插件我位置——  /Applications/IntelliJ IDEA.app/Contents/plugins/java-decompiler/lib/java-decompiler.jar
  • 需要反编译的jar包——*.jar
  • 结果输出位置——"/Users/***"

结果输出后还是一个jar文件,直接解压就可以,里面是.java格式的

碰到错误处理方式

  • 我猜测该问题原因是idea自带jvm是11版本的,然后这个包是使用jdk11编译的
  • 运行的时候用的是自己的环境,52就代表了1.8版本,低版本编译在高版本可以兼容运行,但是高版本的编译在低版本就无法运行

换成高版本的jdk解决

class version对应的版本

Java 1.0 45.0
Java 1.1 45.3
Java 1.2 46.0
Java 1.3 47.0
Java 1.4 48.0
Java 5 49.0
Java 6 50.0
Java 7 51.0
Java 8 52.0
Java 9 53.0
Java 10 54.0
Java 11 55.0
Java 12 56.0
Java 13 57.0
Java 14 58.0
Java 15 59.0
Java 16 60.0
Java 17 61.0
Java 18 62.0
Java 19 63.0

批量反编译

Mac

for z in *.jar;
do /Users/java15/jdk-15.0.2.jdk/Contents/Home/bin/java -cp "/Applications/IntelliJ IDEA.app/Contents/plugins/java-decompiler/lib/java-decompiler.jar" org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true $z "/Users/lib";
done

Window(poweershell)

foreach ($i in Get-ChildItem  -Include *.jar -Recurse) { I:/java15/openjdk-15-36_windows-x64_bin/jdk-15/bin/java.exe -cp "I:/idea/IntelliJ IDEA 2020.1/plugins/java-decompiler/lib/java-decompiler.jar" org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true $i "./result" }

批量解压

Mac

for f in *.zip; do unzip $f; done

Windows

直接使用压缩软件批量

原文始发于微信公众号(pentest):​反编译jar的class文件

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年11月11日22:57:54
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   ​反编译jar的class文件https://cn-sec.com/archives/1949504.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息