反编译jar包

article/2025/9/11 18:41:59

问题描述:
前提说明:反编译别人的程序,是不推荐的,毕竟不太好,有可能涉及保密。
有时是没有办法而为之,原程序的开发工程师离职了,新的接口人业务不了解,但是也没有办法提供源码,而部署文档又不明确,这样在部署的时候就需要看程序结构和配置了,所以需要反编译一下jar包。

工具如下:

  1. jd-gui.exe;
  2. luyten-0.5.4.exe;
  3. java-decompiler.jar;

我知道的有以上三个工具,比较推荐的是第三个,IntelliJ自带的反编译工具,反编译效果比较好,但其他的也有自己的优点。

  1. jd-gui.exe:
    步骤:双击打开->File->Open File->选择要反编译的jar包->确定;
    保存:File->Save All Sourses,得到一个压缩包,解压即可;
    在这里插入图片描述
    反编译后的java类中的导包,也就是import比较明确,不会用*代替多个同文件目录下的java的导入,一些中文字段也能够正确的转换,目录结构看着也比较好;
    但是对于lambda表达式会有以下缺陷,有些java类也不能成功反编译。
    在这里插入图片描述
  2. luyten-0.5.4.exe
    步骤:双击打开->File->Open File->选择要反编译的jar包->确定;
    保存:File->Save All Sourses,得到一个压缩包,解压即可;
    在这里插入图片描述
    可以看出,反编译后的目录结构的查看效果相对较差一点,import使用了*,一些中文字段变成了ASCII码,但是它可以较好的反编译出lambda表达式。
  3. java-decompiler.jar
    这个需要使用命令行cmd进行操作,
    步骤:将java-decompiler.jar放在需要解压的jar包目录下->新建一个文件夹(用于存放反编译后的压缩包)->该目录下打开cmd.exe->输入
    java -cp java-decompiler.jar org.jetbrains.java.decompiler.main.decompiler.ConsoleDecompiler -dgs=true xxx.jar xxx
    保存:运行命令后会在xxx文件夹下面生成一个与原先的jar包同名的文件,加压缩即可;
    说明:
    (1)xxx.jar是需要反编译的jar包的全名
    (2)xxx是新建的文件夹的全名
    (3)如果 java-decompiler.jar与jar包不在同一目录下,则需要 java-decompiler.jar指定路径,比如将上面的java-decompiler.jar改成 “D:\IntelliJ\plugins\java-decompiler\lib\java-decompiler.jar”
    反编译效果比较好,可以综合一下以上两个软件的优点,但也有不足,@Override注解没有,需要自己添加,其余的需要结合使用情况了。

反编译后:
在这里插入图片描述
java文件和配置文件在\BOOT-INF\classes目录下;
pom.xml文件在\META-INF\maven\com.xxx\xxx目录下;
mapper文件的位置有所变动,需要自己调整一下;
反编译的效果肯定不如源码,还要结合具体的逻辑进行调整,另外代码里面如果使用@Data注解,反编译后会附带的一些重写方法,直接删掉即可,比如:

@Override
public boolean equals(final Object o) {}

工具下载:
提取链接链接:https://pan.baidu.com/s/1koppf3_0EqSLW--q5rbGMQ
提取码:h5bn


http://chatgpt.dhexx.cn/article/eWP7Bjie.shtml

相关文章

反编译技术完全解析

1.前言 作为一个Android 程序猿,如果没有反编译过别人的apk,那有可能你是个假的程序猿~我们反编译别人apk可能是想看看别人优美的界面是怎么写的,或者是去获取别人的资源文件,又或者是看看某个功能是怎么实现的。记得在大学里,参…

idea反编译

1、问题描述 只有jar包,反编译下,看几个配置; 2、问题说明 用的idea里面的插件,java Decoplier,可以反编译jar包,效果挺好的,反编译出来的.java没乱码,可以直接看; 2…

超详细!apk安装包快速反编译,多种反编译及失败的解决方案(包含classes.dex的反编译,新增加快速反编译)

如要转载,请贴出原地址:https://blog.csdn.net/Nobody_else_/article/details/83996441 众所周知,我们开发所用的手机App安装包都是apk文件,Android应用开发完成之后,我们最终都会将应用打包成一个apk文件供用户安装&a…

反编译与反汇编

反编译做的就是编译的相反动作。举例来说,例如一个程序用C语言来写,写完之后要编译成CPU可以识别和运行的机器代码,也就是生成EXE程序。而反编译是反过来,把EXE反编译成编程源代码,也就是C程序,不过一般反编…

VS的反编译

痛点: ● 在使用系统库或者第三方库遇到问题,感觉自己写的没问题,怀疑源码有BUG,非要钻牛角尖 ● 求知欲旺盛,很想知道别人的代码怎么实现的 ● 反编译工具安装难,源码定位难(主要是懒) 其实宇…

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

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

反编译基础知识

!!! 严正声明 本文相关反编译技术仅限于技术研究使用,不能用于非法目的,否则后果自负. 1. apktool 逆向APK文件的工具 官方网站 apktool主要用于逆向apk文件,可以将资源解码,并在修改之后可以重新构建它们.它还可以用来重新构建apk. 1.1 功能 将资源解码成近乎原始的形式…

Android安全攻防战,反编译与混淆技术完全解析(上)

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/49738023 之前一直有犹豫过要不要写这篇文章,毕竟去反编译人家的程序并不是什么值得骄傲的事情。不过单纯从技术角度上来讲,掌握反编译功能确实是一项非常有用的技能&…

通知(Notifications)

通知(Notifications) 如需转载,请注明地址http://blog.csdn.net/carrey1989/article/details/9027585 我们可以通过notification来在应用UI之外的地方来向用户展示信息。当你告诉系统来发布一个notification的时候,系统会首先在notification area里展示一…

解读Notification

综述 status bar notification添加一个图标(和一条可选的ticker-text消息)到系统的status bar(状态条),并且显示一个notification message(通知消息)在系统的notifications window(消息窗口)中。当用户选择了消息窗口中的一条消息,Android系统就发出一个…

Android-自定义Notification

Android-自定义Notification 2014年4月26日 消息栏的消息,想必各位Android发烧友很清楚知道是什么,比如我们下载了一个应用,它可能会定时推送些消息到我们的手机中,比如微信消息送达的时候,可能会在通知栏显示。本博文…

notification新旧用法 notification builder

api 11 版本之前: //显示通知信息protected void showNotification() {NotificationManager notificationManager (NotificationManager) getSystemService(NOTIFICATION_SERVICE); // Notification notification new Notification(this,R.drawable.ic_launche…

Android Notification 详解

下图是我对 Notification 做的思维导图,也是本文的主要逻辑。 本文主要讲述 Notification 的基本操作部分,进阶部分的内容还在学习ing~ Notification 概述 Notification,是一种具有全局效果的通知,可以在系统的通知栏…

Android Notification

日记月累第四天。发现做事情坚持真的很重要,其实我今天都有点凌乱了,不想记录了,在坚持一下吧,毕竟才第四天。今天对昨天同事所说的Notification进行了一下温故今天主要是拿来主意,明天代码实践。今天公司又有同事分享…

HTML5 桌面通知:Notification API

Notification API 是 HTML5 新增的桌面通知 API,用于向用户显示通知信息。该通知是脱离浏览器的,即使用户没有停留在当前标签页,甚至最小化了浏览器,该通知信息也一样会置顶显示出来。 用户权限 想要向用户显示通知消息&#xf…

Android自定义Notification

Notification是一种让你的应用程序在不使用Activity的情况下警示用户,Notification是看不见的程序组件警示用户有需要注意的事件发生的最好途径。 作为UI部分,Notification对移动设备来说是最适合不过的了。用户可能随时都带着手机在身边。一般来说&…

Notification-通知

Notification-通知 通知是一种消息,这种消息呈现在应用UI之外,通过通知可以对用户进行提醒、可以和其他用户收发信息等。通过点击通知,可以唤起app页面或者直接在通知上执行一些操作。下面介绍通知的一些常用用法。 展示一条普通通知 先来…

全面解析Notification

Notification在Android中使用的频率可以说是非常高的,本篇博客,我将围绕着Notification的各方面进行解析,使大家对Notification有更好的认识。 Notification的使用步骤 1.获取NotificationManager NotificationManager mNotificationManager = (NotificationManager) get…

Android Notification使用

Android 通知栏适配 前言正文一、Android中通知的变化1. Android 4.1,API 162. Android 4.4,API 19 和 203. Android 5.0,API 214. Android 7.0,API 245. Android 8.0,API 266. Android 12.0,API 31 二、创…

Android之Notification的多种用法

我们在用手机的时候,如果来了短信,而我们没有点击查看的话,是不是在手机的最上边的状态栏里有一个短信的小图标提示啊?你是不是也想实现这种功能呢?今天的Notification就是解决这个问题的。 我们也知道Android系统也是…