jdgui反编译+javac编译=无源文件修改代码

首先我们要知道,打包好的Java程序中都是编译好的字节码文件(*.class),这些class文件会在运行的时候被加载到JVM中。

若想替换掉某一个类,那么只需要将该类的源码重新编译然后再替换之前的class文件即可。

那么如果没有源代码怎么办呢?这个时候我们可以用反编译软件来反编译class文件,反编译软件中比较有名是jd-GUI,可以从官网上下载到最新的版本

我这里使用的是jd-gui-0.3.6.windows

下载完之后将class文件或者jar包拖到jd-gui的窗口中就可以看到反编译出来的代码了~NICE,这样第一步就做好了

第二步:我们可以将代码复制出来,比如在该class文件夹中创建一个xxx.java文件并将xxx.class反编译出来的代码复制到其中。

第三步:我们将代码修改一下保存,并且用javac编译一下

这里补充一下如何使用javac来编译java文件

一般情况下直接javac + 文件路径 就可以了,但是若存在一些依赖关系就需要使用 -classpath这个选项了

比如 我们这里来编译 一个名为 ImportUI.java的文件,解压jar包之后的目录格式如下:

这里可以看到gmsimport文件夹下就是存放class文件的地方,它就是这个项目的classpath,所以在编译其中的文件时需要加上这个文件夹

另外我们还看到了2个jar包,对于jar包的引用我们需要另外写,比如我们这里来编译一个ImportUI.java文件(当前目录就在)

javac -classpath D:\gmsimport;D:\gmsimport\DatePicker-V0.99-2006.09.01.jar; com\test\gmslic\ImportUI.java

这样就编译好了,且生成的class文件默认的路径就是和该java文件相同的目录

试试用java命令来启动一下,也需要带上-classpath选项哦~

java -classpath D:\gmsimport;D:\gmsimport\DatePicker-V0.99-2006.09.01.jar; com.test.gmslic.ImportUI

已经是修改后的效果了吧?NICE,最后打个包就可以替换之前的版本了~

对了,上面的-classpath也可以简写成-cp~

时间: 2024-11-05 23:31:48

jdgui反编译+javac编译=无源文件修改代码的相关文章

Mac版 反编译apk 获取资源文件和源代码

准备工作 下载反编译工具apktool.dex2jar jar查看工具jd-gui for mac 下载地址:http://download.csdn.net/detail/linsen618/8668209 1.反编译出资源文件 打开终端cd到存放apktool的目录(可以使用ls 查看当前目录下的文件夹,然后一直查找cd到apktool) 输入 chmod +x apktool  修改apktool为可执行 输入 ./apktool d xx.apk  执行反编译操作 2.反编译出源码 将a

使用jd-gui+javassist修改已编译好的class文件

1.原因:因为公司代码管理不当导致源码丢失,只好已编译好的class文件进行修改 2.首先先在myeclipse中新建java项目并导入javassist 3.将需要修改的文件放到指定文件夹下 4..在项目中添加以下代码 package dtj; import javassist.ClassPool; import javassist.CtClass; import javassist.CtMethod; import javassist.NotFoundException; public cl

反编译C#的dll文件并修改,再重新生成dll

1.把dll文件导入到ildasm工具中,ildasm是由微软提供的.net程序反编译工具,位于“C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin” 2.在ildasm中File->dump,把dll文件转储为*.il文件存到某个指定文件夹里,得到*.il和*.res两个文件,有时也会有*.resource文件 3.打开得到的*.il文件,找到对应的方法,进行修改(如果修改的代码太多,那则需要先学习一下“C#反编译之IL语法”),具体情况具体分析

Android - 使用JD-GUI反编译Android代码

使用JD-GUI反编译Android代码 本文地址: http://blog.csdn.net/caroline_wendy Android程序出现Bug时,需要根据Bug寻找问题出错的地方; 需要使用工具dex2jar.sh和JD-GUI,并把dex2jar.sh添加进系统路径; 把需要反编译的apk包修改为zip文件, 解压, 找到".dex"文件, "classes.dex"; 使用命令: sh dex2jar.sh ~/Desktop/ChunyuDocto

【java】javac编译多个有依赖关系的java文件为class文件

历史文章: [java]javac命令在win10不可用,提示javac不是内部或外部命令,也不是可运行的程序[解决方法] [javac命令不能使用,提示不是内部命令或外部命令,请查看历史文章] =================需求说明========================== 之前的文章中,仅说明了单个的java文件,没有多的外部依赖的单个java文件编译成class文件. 1.现在有个需求: 在使用一个mybatis-gen-1.2.jar包完成 自动代码生成过程中,[jar包中

(转载)反编译android的apk文件步骤

下面的方法我已经尝试过,完全可以成功,重点的步骤我在这里说一下 1.必须要有java环境,记得配置好环境变量 2.如果只查看class中的函数文件,只需要下载dex2jar和jd-gui 3.下载地址 dex2jar:http://code.google.com/p/dex2jar/downloads/list jd-gui:http://dl.iteye.com/topics/download/b99d0351-87d8-3ed1-a875-441e0eea0ce4 相信很多开发者都知道反编译

详解Javac将java文件编译为class文件的过程

Java编译器总的来说分为前端编译器,JIT(just in time compiler)编译器,AOT(Ahead Of Time Compiler)编译器三种. 前端编译器: 将Java文件编译为class文件的编译器,目前主要有以下两个,Sun提供的Javac 和Eclipse JDT中的增量式编译器(ECJ) JIT编译器: 虚拟机后端运行期编译器,把字节码转换为机器码的过程.HotSpot Vm中提供的C1, C2编译器 AOT编译器:直接把Java文件转换为本地机器码的过程. GNU

反混淆后的.net文件编译

因为工作的需要,研究一下别人的软件.这篇文章主要是分享一下过程,其中没有什么技术性的东西,只是想告诉那些和我一样深深被反编译出来的代码,在编译过程中显示出来的错误数量惊呆的小伙伴们,这些错误或许没有你想象的那么厉害,当然,你必须要要有足够的基础去修改那些错误. 首先,打开reflector,发现代码被混淆过,看到那些乱七八糟的方法名称,你懂得.下载de4dot-3.0.3,反混淆后,将文件反编译成c#工程,本来想弄成mc++,但这种托管的c++和我最熟悉的vc6差距大着,悲剧,还是c#看着舒服.

jd-gui反编译报错// INTERNAL ERROR //

最近在反编译class和jar包的时候,发现部分class无法反编译出来,换了最新版本的jd-gui和多个版本都不行,只能放弃了 解决方案:GitHub上找Luyten这个工具反编译 luyten是Procyon的GUI,是一款操作简单.功能实用的java反编译工具,软件支持*.JAR.*.zip.*.class等类型文件的反编译操作,还原度非常高,支持更多功能设置,如显式导入.类型.合成组件等等, 用户可根据不同的需求选择合适的显示项目,结果更明了. 下载地址:https://github.c