精华内容
下载资源
问答
  • 修改jar中内容.rar

    2015-10-29 11:57:16
    修改jar中内容.rar
  • 修改jar中包结构,修改jar包包名

    千次阅读 2017-12-08 17:31:18
    这次呢,给大家一个冷门的技术方案,一般情况下是碰不到...之前在网上看到一个工具,编辑两个文档,通过cmd命令行直接修改jar包里面的包名 举例说明jar包中原包名是org.apache.http.**,可以替换成别的(org.apache.htt

    这次呢,给大家一个冷门的技术方案,一般情况下是碰不到的,也是给自己巩固一下,避免以后忘了


    平时在开发中,用第三方的jar,有时候会出现不同jar包,包名一致的情况,这种情况下修改起来就比较复杂了

    之前在网上看到一个工具,编辑两个文档,通过cmd命令行直接修改jar包里面的包名

    举例说明jar包中原包名是org.apache.http.**,可以替换成别的(org.apache.http.c.@1)(com.example.http.carry.@1)

    废话不多说,下面开始说步骤

    1.新建文件夹,把你要修改的jar放到文件夹中  博主以worklight-android.jar为例,把这个jar放到一个空的文件夹中

    2.下载jarjar-1.1.jar包,放到这个文件夹下面 下载链接

       http://download.csdn.net/download/yozhangxin/10151433

    3.在当前文件夹下新建rule.txt文本文档,在rule.txt中写入rule org.apache.http.**  org.apache.http.c.@1
       org.apache.http.** 为修改前的包名; org.apache.http.c.@1为修改后的包名
    4.在文件夹地址栏中输入cmd,回车 输入"java -jar jarjar-1.1.jar process rule.txt worklight-android.jar worklight-android_2.jar"

       输入完成后回车,会在当前文件夹下重新生成一个worklight-android_2.jar,这个就是修改包名后的jar了

      其中 jarjar-1.1.jar为工具类的名字,rule.txt为新建txt文档的名字  worklight-android.jar是原jar名字  worklight-android_2.jar"是修改后的jar的名字

    好了,介绍到此结束,有不懂的小伙伴们欢迎评论沟通,下面附上整个文件夹的下载连接


    http://download.csdn.net/download/yozhangxin/10151462

    展开全文
  • 修改jar内容

    2015-05-09 12:27:57
    修改jar中的代码内容,从而达到我们的效果
  • 修改jar中代码步骤

    千次阅读 2015-12-01 15:07:17
    1.用jd-gui查看jar中修改的class文件 2.解压jar文件 3.在解压的文件夹下,新建与class文件同名的java文件,把class代码,复制到java; 并修改需要修改的代码。 4.在dos切换目录至解压的文件夹 5.输入javac -...
    一、修改所需的class文件
    
    1.用jd-gui查看jar中要修改的class文件
    2.解压jar文件
    3.在解压的文件夹下,新建与class文件同名的java文件,把class代码,复制到java中;
    并修改需要修改的代码。
    4.在dos中切换目录至解压的文件夹中
    5.输入javac -classpath . ./目录/要修改的.java 生成class文件
    二、打包成jar文件
    1.dos中切换目录至解压的文件夹中
    2.删除java文件
    3.dos中输入jar cvf asmack.jar.
    4.搞定收工

    展开全文
  • 修改Jar包工具

    2018-07-04 16:42:07
    导入jar包中的部分代码可能会有冲突,这就需要我们修改jar包中的内容
  • 修改jar中的class:杀戮尖塔修改教程

    千次阅读 2019-10-08 13:36:48
    缘起 作为一只程序猿,游戏自然是标配。自从入了杀戮尖塔的坑,几年来陆陆续续玩...杀戮尖塔是用java开发,其主程序是一个.jar文件。现在要修改铁甲战士的基础卡:打击。 打击的基础伤害是6,目标是将其修改为60...

    缘起

    作为一只程序猿,游戏自然是标配。自从入了杀戮尖塔的坑,几年来陆陆续续玩了几百小时。然而steam上的成就至今没刷完,发牌员和各路小怪次次都在针对我。在第 n n {n^n} nn次死于通往进阶20的三层小怪之手后,我感受到了出离的愤怒
    于是我决定,用技术它。

    思路

    杀戮尖塔是用java开发,其主程序是一个.jar文件。现在要修改铁甲战士的基础卡:打击。
    在这里插入图片描述
    打击的基础伤害是6,目标是将其修改为60。

    1. 使用Java Decompiler反编译.jar文件,找到目标class文件和目标代码。
    2. 使用jclasslib的byecode viewer或插件分析目标class文件,对目标代码进行定位。
    3. 创建java工程,引入jclasslib的jar包,载入目标class文件并进行修改。
    4. 将最终生成的新class文件替换到主程序的.jar中。

    分析

    Java Decompiler反编译

    打开游戏目录,可以看到一个desktop-1.0.jar。这就是游戏的主程序。
    首先使用Java Decompiler对其进行反编译。打开jd-gui,将desktop-1.0.jar拖进来:
    在这里插入图片描述
    如上,进入目录:

    desktop-1.0\com\megacrit\cardcrawl\cards\red\

    这是卡片目录,red即红色,也就是铁甲战士的红色卡。
    第一个文件叫Anger.class,也就是愤怒。我们向下找,可以到找到文件Strike_Red.class,从名称看,这就是要找的打击了。
    在这里插入图片描述
    选中后可以看到右侧的源码,其构造函数中有这样一行代码:

    this.baseDamage = 6;
    

    这行代码设置了打击的基础伤害是6。我们的目标是将其修改为60。
    然而,Java Decompiler只能查看class文件反编译后的结果,并不能对其进行修改。
    并且由于该class文件import了众多库,无法直接使用javac命令来对单个文件进行编译。于是就需要借助jclasslib。

    jclasslib byecode viewer分析class文件

    使用winrar对游戏目录下的desktop-1.0.jar进行解压。
    在这里插入图片描述
    上面已经定位了Strike_Red.class的路径。在解压desktop-1.0.jar后生成的文件夹中找到该class文件,打开jclasslib byecode viewer,将class拖进来。
    在这里插入图片描述
    可以看到这里是用Java虚拟机的结构来查看class文件的。此部分内容可以参考《Java虚拟机规范》。
    左侧的Constatnt Pool即常量池,Methods即方法。
    通过前面的分析可知,要修改的内容位于构造函数中。
    于是打开Methods,其下的0号元素<init>即构造函数。
    在这里插入图片描述
    注意上面右侧的信息,包含两个重要的内容:

    • Name: <init>
    • Descriptor: ()V

    打开<init>,其下的0号属性是Code(很重要),这就是构造函数的代码。点击Code,可以在右侧面板查看其具体的实现:
    在这里插入图片描述

    同样,右侧上方的Generic info中包含了一个重要信息:

    • Attribute name index: cp_info #58

    其中#58指的是常量池的58号索引位置。其名称叫Attribute name index
    右侧下方是构造函数的虚拟机代码。里面的指令借助栈和变量表及常量表进行了各种操作。我们需要关心的就是哪一行为变量赋值了6。
    很明显地,可以看到如下代码:

    27 aload_0
    28 bipush 6
    30 putfield #11 <com/megacrit/cardcrawl/cards/red/Strike_Red.baseDamage>
    

    关键是中间的28 bipush 6。该行代码的含义是:

    • 该指令从code的第28号索引开始。
    • 指令为入栈一个int。
    • 入栈的int值为6。

    同时要明确:

    • code是以byte为单位。
    • 每个指令占一个字节,比如这里的bipush
    • 参考下一行代码,可知该行代码占2个字节,即28和29。

    将code看做一个byte数组,28号索引即code[28],其内容为bipush指令。code[29]就是入栈的int值6。
    于是,只要我们能拿到code[29],并将其修改为60即可。
    注意这里入栈的int值只占1个字节,且为带符号数,因此其值不应超过127。
    byecode viewer只能进行查看,不能进行修改。

    修改

    要修改class文件有两种方式:

    1. 借助二进制文件修改工具。
    2. 创建一个java工程,使用第三方库。

    对于方式1,看似简单,实际需要直接分析代码的十六进制值,且要考虑到文件的字节对齐和加密等情况。
    对于方式2,需借助第三方库。而第三方库必须集成到java中使用。故而需要创建一个java的工程。

    这里使用方式2。故而先打开Intellij IDEA,新建一个JBoss工程。

    依赖库安装

    java常用于修改class文件内容的库有2个:jclasslib和javassist。

    • jclasslib:可通过虚拟机汇编方式查看class文件内容,且提供的jar能够对class文件进行修改。
    • javassist:常用于动态编程。

    两个库的安装方式如下。本篇采用jclasslib进行修改。

    安装jclasslib

    下载并安装

    打开jclasslib的官方github进行下载:

    https://github.com/ingokegel/jclasslib/releases

    这里选择exe安装版本。下载后安装。
    在这里插入图片描述

    安装后,lib目录下为所有必要的jar包,修改class时需要将该文件夹导入到工程中作为依赖。

    导入依赖到工程中

    打开:
    File→Project Structure...
    左侧选择Modules,右侧选择Dependencies标签,点最右侧**+**号,选择JARs or directories…,在弹出的窗口中选择jclasslib安装目录下的lib文件夹。
    在这里插入图片描述

    安装javassist

    下载并安装

    打开javassist的官方github进行下载:

    http://www.javassist.org/

    下载后是个zip压缩包,解压并复制到指定目录下。

    导入依赖到工程中

    打开:
    File→Project Structure...
    左侧选择Modules,右侧选择Dependencies标签,点最右侧 + 号,选择JARs or directories…,在弹出的窗口中选择javassist目录下的javassist.jar文件。

    修改class

    准备工作

    1. 在桌面上创建一个Test文件夹,并将Strike_Red.class复制到这里。
    2. 在Test文件夹下创建一个Change文件夹,用于存放修改后生成的Strike_Red.class文件。

    编程进行修改和保存

    实现代码:

    import org.gjt.jclasslib.io.ClassFileWriter;
    import org.gjt.jclasslib.structures.AttributeInfo;
    import org.gjt.jclasslib.structures.ClassFile;
    import org.gjt.jclasslib.structures.MethodInfo;
    import org.gjt.jclasslib.structures.attributes.CodeAttribute;
    import java.io.DataInput;
    import java.io.DataInputStream;
    import java.io.File;
    import java.io.FileInputStream;
    
    public class Main {
        public static void main(String[] args) throws Exception {
            String filePath = "C:\\Users\\Administrator\\Desktop\\Test\\Strike_Red.class";
            FileInputStream fis = new FileInputStream(filePath);
            DataInput di = new DataInputStream(fis);
    
            ClassFile cf = new ClassFile();
            cf.read(di); // 载入类文件数据
    
            // 获取构造函数
            MethodInfo mi = cf.getMethod("<init>", "()V");
            // 方法的所有属性
            AttributeInfo[] attributes = mi.getAttributes();
            // 0号属性为Code
            CodeAttribute codeAttribute = (CodeAttribute)attributes[0];
    
            byte[] code = codeAttribute.getCode();  // 获取Code的二进制内容
            code[29] = 60;  // 修改29号索引内容
            codeAttribute.setCode(code);    // 重设方法的Code内容
    
            fis.close();
            // 保存修改后的ClassFile
            File f = new File("C:\\Users\\Administrator\\Desktop\\Test\\Change\\Strike_Red.class");
            ClassFileWriter.writeToFile(f, cf);
        }
    }
    

    整体思路为:

    1. 创建一个ClassFile,将class文件载入进来。
    2. 获取构造函数,存放到一个MethodInfo对象中。这里用到的参数为构造函数的NameDescriptor,前面的分析已经得知这两个值。
    3. 获取构造函数所有的属性。0号属性即为Code,前面已经分析过。将获取到的0号属性转换为CodeAttribute
    4. 获取Code的二进制内容,是一个byte数组。要修改的内容位于29号索引,将其修改为60。这里若修改为>127的值IDEA会提示错误。
    5. 将修改后的Code设置回构造函数的属性中。于是构造函数内容被修改,也就是当前ClassFile被修改。
    6. 将修改后的ClassFile保存在Test/Change下。

    运行后,即会在Test/Change下生成Strike_Red.class文件。
    将这个生成的文件拖入到Byecode viewer中,查看构造函数的Code,可以看到baseDamage已经修改为60:
    在这里插入图片描述

    替换

    现在需要将Strike_Red.class替换回desktop-1.0.jar
    首先将Java Decompiler和Byecode viewer都关闭,以防止对正在打开的文件进行修改。
    然后用winrar打开desktop-1.0.jar(是打开不是解压),找到Strike_Red.class所在的路径:
    com\megacrit\cardcrawl\cards\red
    将上一步生成的修改后的Strike_Red.class直接拖进来,替换。
    这样修改就完成了。运行游戏看一下:
    在这里插入图片描述

    It’s Hammer Time!

    展开全文
  • jarjar.jar修改java jar文件包名的工具,可以轻松把jar包的包名修改为你想要的,简单易用。 通过源码来改包名不方便、易出错、修改成本高,有了jarjar.jar,你就可以轻松搞定你的问题了。 重新打包(重命名)的...
  • linux 修改jar中配置文件

    千次阅读 2018-10-11 16:06:57
    在工作遇到一种情况,一个运行的监控程序jar文件,因为值班人员的变化,需要进行修改jar包中的一个配置文件mail.properties 在windows 服务器下,用360解压缩打开,修改,保存,自动就保存了 在linux 服务器怎么...

    在这里插入图片描述
    2018/10/11 15:35

    在工作遇到一种情况,一个运行的监控程序jar文件,因为值班人员的变化,需要进行修改该jar包中的一个配置文件mail.properties
    在windows 服务器下,
    用360解压缩打开,修改,保存,自动就保存了

    在linux 服务器怎么更改呢?

    1、vim test.jar
    2、输入斜杠 \ 后面跟上 mail 回车 ,会自动定位到 mail.properties ,相当于一个搜索功能
    3、定位到该文件,Enter 回车打开该文件
    4、输入 I ,就可以进行修改文件了
    5、修改完毕后,esc 按钮后,输入 :wq 用以保存退出。
    6、再esc , :q 退出,即可
    7、之后就是重启你的程序了。

    linux jar可以不用停程序,而直接修改文件内容,没有程序占用这一说。
    window 则不行,必须要先停程序,才能改jar包内容。

    改进方案:
    这个邮件其实应该配置在redis中,发送监控邮件,就可以读取redis 文件中的发件人。
    以后就不会因为值班人员的离职或者变更,而去改服务器上的代码。也不用重启。这样风险太高,也麻烦

    展开全文
  • jarjar-方便Java打包工具,自定义修改jar包包名,包括jarjar-1.4.jar,jarjar-1.4-javadoc.jar,jarjar-src-1.4.zip三个文件
  • 修改JAR中的配置文件

    2014-03-18 16:17:46
    一、在JAR外新建一个daoconfig.txt文件并修改JAR迁移要修改的参数 比如数据库用户名 密码 神马的 二、用解压软件打开JAR文件 在JAR包中找到daoconfig.txt所在目录并将其删除 然后将修改好的daoconfig.txt文件拖...
  • jclasslib修改jar包里面的class文件包含jar
  • 修改maven中jar

    千次阅读 2019-08-13 17:38:55
    修改jar中代码 把jar包解压,再把要修改的class替换进去,再压缩即可。下面以ignite-core-2.6.0.jarorg.apache.ignite.internal.util.IgniteUtils#filterReachable类的修改为例 编译后替换源码 这样就完成了...
  • jar包冲突解决--jarjar工具修改jar包名

    千次阅读 2018-07-29 21:07:09
    3.8.jar,项目原先有poi包,但是版本太低,没有我需要用到的方法,项目一些原来的功能需要老版本支持,又不能删掉原来的poi包,为了解决导入新的poi包后jar包冲突问题,使用jarjar.jar工具修改poi-3.8jar的包名...
  • 2、解压jar包,然后使用jar命令(比如jar -uvf)重新打包 失败,能打包,但是以可执行文件(./xxx.jar start)运行时提示:jar: cannot execute binary file 最终我用下面方案成功了: 将jar包文件解压,导入...
  • linux下修改jar中的文件 解压修改后再打包 解压:jar xvf xxx.jar 打包:jar cvfm0 xxx.jar META-INF/MANIFEST.MF ./ 注: -m参数可以将 一个具体的mainfest文件打包进入jar内生成mainfest文件,否则运行jar会报...
  • 调整修改jar包名称重新生成新名词jar包
  • Linux中修改jar包中的配置文件

    万次阅读 2018-09-28 15:11:00
    原文地址:修改jar包中的配置文件 打包以及修改jar包 cd genesys_data_etl mvn clean package -Poffline -Dmaven.test.skip=true 日志如下: [INFO] --- maven-jar-plugin:2.6:jar (default-jar) @ genesys_data_...
  • vim修改jar

    千次阅读 2020-09-01 17:31:26
    发现项目数据库配置不对,但是只有一个jar,没法重新编译,这里只是修改配置yml文件,采用直接方式修改: 通过vim命令直接编辑jar vim xxx.jar 该命令首先会列出全部文件,可以通过输入/abc来搜索,定位到对应的abc...
  • 在linux直接修改jar包内的文件

    千次阅读 2020-12-22 23:36:45
    (2)解压jar中修改的文件 eg:jar xvf springboot.jar(要修改jar包) com/config/1.txt(步骤一种获取的完整路径名) (3)将修改好的文件重新打包到jar包中 eg:jar uvf springboot.jar(要修改jar包) ...
  • 当有些文件上传到服务器调试的时候,为了方便修改jar包里的东西可以直接在服务器上进行修改,不需要每次都打包上传。 (1)使用jar tvf jar名称 | grep 目标文件名 查询出目标文件在jar包中的目录 jar tvf service...
  • 在某Java Application,所引用的lib下的某jar包,知道其源码,怎样修改其源码,然后将项目jar包替换为修改后的jar包。 注: 博客主页:https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿...
  • 怎么修改jar包中的源代码的类

    千次阅读 2021-02-23 18:56:15
    所以如果我们在实际开发需要修改某个类来完成对应的业务需求,那我们可以打开这个jar包中的这个文件,查看它的包名和类名,然后去我们自己的工程创建一个相同路径的文件,那么jar包中的文件就会被覆盖。...
  • rule com.google.gson.** com.google.mygson.@1 上面写的就是修改规则,我们将包名的 gson 修改为 mygson。打开命令行,输入如下命令。 java -jar jarjar.jar process rule.txt gson.jar mygson.jar 命令
  • 修改jar包源码,成功编译,应用到项目

    万次阅读 多人点赞 2017-07-05 16:46:57
    前言:  在公司项目,想要修改项目所引用的... 在本次修改jar包源码,本人发现了两种应用方式,现在一一为大家讲解。 方式一:  1、找到jar包中你想要修改的类  在本步骤,若此jar包是开源的,并且已经把
  • java修改jar

    千次阅读 2019-03-30 08:59:09
    1.vim编辑的方式修改 可以使用vim xxx.jar的方式列出jar包文件内的目录,然后出入/来搜索我们要编辑的文件名, 定位后回车即可,然后按i编辑, :wq保存 2.jar命令先提取要更改的文件,编辑后再更新回去 1.列出jar...
  • Android中修改第三方Jar

    千次阅读 2018-07-26 16:45:35
    一.简述 最近工作,客户项目出现了一个问题,根据日志...如何修改jar 导出项目工程 找到相关插件Jar 通过Android Studio 查看Jar源码 再Src目录下新建 要修改java文件,包名也必须相同 要修改的java文件目...
  • Jar包包名修改

    2017-12-15 02:16:53
    jar包包名修改一键搞定; 最小巧好用的jar包包名修改工具
  • Android 修改jar包内容

    千次阅读 2019-05-07 17:06:11
    首先打开需要修改的.class文件(直接在android studio打开就行),查看包名 新建对应的java文件 : 将childHelper的内容拷贝过来。进行修改即可。 删除原来的class文件: 选择对应的jar包,重命名zip后缀,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 532,702
精华内容 213,080
关键字:

修改jar中的图