zoukankan      html  css  js  c++  java
  • 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:gmsimportDatePicker-V0.99-2006.09.01.jar; com	estgmslicImportUI.java

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

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

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

    已经是改动后的效果了吧?NICE,最后打个包就能够替换之前的版本号了~

    对了。上面的-classpath也能够简写成-cp~

  • 相关阅读:
    asp.net大文件(视频)上传技术
    asp.net大文件(视频)上传实例解析
    asp.net大文件(视频)上传示例
    asp.net大文件(视频)上传实例
    ubuntu电脑查看显卡型号
    ERROR: After October 2020 you may experience errors when installing or updating packages
    tensorflow各个版本需要的CUDA版本以及Cudnn的对应关系
    pycharm设置多GPU运行
    conda常用命令
    ubuntu更改.condarc文件
  • 原文地址:https://www.cnblogs.com/blfshiye/p/5410216.html
Copyright © 2011-2022 走看看