`

修改jar包里面的class的包名

 
阅读更多
参考文章
http://blog.csdn.net/hexin373/article/details/6669813

工具
http://www.ej-technologies.com/products/jclasslib/overview.html

修改class文件的代码
package com.kaka.modify;

import java.io.DataInput;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.ArrayList;

import org.gjt.jclasslib.io.ClassFileWriter;
import org.gjt.jclasslib.structures.CPInfo;
import org.gjt.jclasslib.structures.ClassFile;
import org.gjt.jclasslib.structures.InvalidByteCodeException;
import org.gjt.jclasslib.structures.constants.ConstantUtf8Info;

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		ArrayList<String>  list = refreshFileList
			("E:\\javaDev\\反编译工程\\miidicredit_android_2_1_5\\net\\miidi\\credit\\view\\a");
		for (int i = 0; i < list.size(); i++) {
			modify(list.get(i));
		}
            
	}
	
	private static void modify(String filePath){
		FileInputStream fis;
		try {
			fis = new FileInputStream(filePath);
	        DataInput di = new DataInputStream(fis);     
	        ClassFile cf = new ClassFile();     
	        cf.read(di);     
	        CPInfo[] infos = cf.getConstantPool();     
	             
	        int count = infos.length;     
	        for (int i = 0; i < count; i++) {     
	            if (infos[i] != null) {     
	                System.out.print(i);     
	                System.out.print("|");     
	                // 名
	                String str = infos[i].getVerbose();
	                System.out.print(str);     
	                System.out.print("|");
	                // 类型
	                System.out.println(infos[i].getTagVerbose());     
	                if(str!=null && str.length()>0){    
	                	if(infos[i] instanceof ConstantUtf8Info){
		                	ConstantUtf8Info uInfo = (ConstantUtf8Info)infos[i]; 
		                    if(str.contains("/miidi/")){
			                    String str1 = str.replaceAll("/miidi/","/angela/");
			                    uInfo.setString(str1);    
			                    infos[i]=uInfo; 
		                    }
	                	}
	                }     
	            }     
	        }     
	        cf.setConstantPool(infos);     
	        fis.close();     
	        File f = new File(filePath);     
	        ClassFileWriter.writeToFile(f, cf);  
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (InvalidByteCodeException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} 
	}

	private static ArrayList<String> refreshFileList(String strPath) { 
		ArrayList<String> filelist = new ArrayList<String>(); 
        File dir = new File(strPath); 
        File[] files = dir.listFiles(); 
        if (files == null) 
            return null; 
        for (int i = 0; i < files.length; i++) { 
            if (files[i].isDirectory()) { 
                refreshFileList(files[i].getAbsolutePath()); 
            } else { 
                String strFileName = files[i].getAbsolutePath();//.toLowerCase();
                System.out.println("---"+strFileName);
                filelist.add(files[i].getAbsolutePath());              
            } 
        } 
        return filelist;
    }
}
分享到:
评论

相关推荐

    jclasslib修改jar包里面的class文件包含jar

    jclasslib修改jar包里面的class文件包含jar

    修改Jar包工具

    导入jar包中的部分代码可能会有冲突,这就需要我们修改jar包中的内容

    Java打包插件(fatjar)

    Class后点Browse像Export一样它也会列出你项目中的主类,选择后其它默认即可,Next后会列出你要打包的所有内容,这个插件的优势就是可以将你项目中的外部jar也打进来,有三个先项,其中Export ANT是生成build.xml...

    Linux下apk反编译工具包集合(apktool、dex2jar、jd-gui)

    apk反编译说明 1. 将aapt,apktool,apktool.jar拷贝到/usr/local/bin下(在root权限下才可以,修改属性chmod)。...第三步: 使用jd-linux下的jd-gui浏览反编译的*_dex2jar.jar包(里面是*.class文件)

    jclasslib修改class文件工具.rar

    需要把别人jar包里面的class修改一下信息 配置文件*.properties MANIFEST.MF 这些东西可以直接用记事本打开修改 然后替换掉就OK.. 在网上游荡了半天,找到合适的方法

    在Android源码中编译出指定jar包的操作

    今天想把android源码/vendor/letv/frameworks/base/java下的源码编译成 framework-letv.jar供乐乐语音客户端使用,编译完后,发现jar包文件虽然生成了,但包里面并没有相关的源码class文件,无法正常使用。...

    Linux下apk反编译工具包(apktool、dex2jar、jd-gui)

    apk反编译说明 1. 将aapt,apktool,apktool.jar拷贝到/usr/local/bin下(在root权限下才可以,修改属性chmod)。...第三步: 使用jd-linux下的jd-gui浏览反编译的*_dex2jar.jar包(里面是*.class文件)

    在应用中集成AXMLPrinter,从apk文件中提取包名,版本等信息

    在应用中集成AXMLPrinter,从apk文件中提取包名,版本等信息。 AnalysisApk.java是从apk中提取...这需要修改里面的包名。把android.content.res改为android.content.res2。 附件文件是我修改好的,直接导入工程即可。

    JClassLib_windows 3.0

    修改jar包工具,修改class工具;直接修改别人jar包里面的class文件

    Excel数据操纵-jar包-jxl.jar

     (很大总是不能很好的加载,我想补充一下:把你下载好的JXL.JAR包放入D:\JAVA\jre\lib\ext中(我的是JDK1.6)就OK了。我相信在配置TOMCAT时也需要把相关的三个包放到这里面。)  基本操作  一、创建文件  拟...

    jclasslib 工具修改.class文件,同时需要jad.exe做辅助

    修改jar包中变量 或者长量 步骤如下: 1.用jd-gui打开该jar 怎么打开不用我说了吧? 打开之后找到 要修改提示信息 的class文件 这里找到的是GenEntity 找到对应需要修改的代码所在的方法名 我这里包含提示信息的这段...

    jclasslib工具

    http://blog.csdn.net/hexin373/article/details/6669813 直接修改别人jar包里面的class文件 工具:jclasslib

    反编译APK文件的利器,集合了编译classes文件、xml文件、class文件的压缩包

    用于反编译APK文件的法宝,3大利器合一。你!值得拥有!(注:里面jar包的使用方法请摆渡,用jar包的名字一摆渡能出来一大片。)

    hadoop-core-1.2.1.jar

    已经修改了此 jar包,把org/apache/hadoop/fs/FileUtil.java里面的checkReturnValue,注释掉了。 修改的文件保护两个 FileUtil$CygPathCommand.class 与 FileUtil.class 方便在windows 下调试hadoop 而不报错。

    linux下反编译apk

    看到网上apk反编译文档很多,但很零散,本人将其一起打包,方便大家。 apk反编译说明 1. 将aapt,apktool,apktool.jar拷贝到/usr/...第三步: 使用jd-linux下的jd-gui浏览反编译的*_dex2jar.jar包(里面是*.class文件)

    java android 反编译工具大全

    ClassyShark是一款可以查看Android可执行文件的浏览工具,支持.dex, .aar, .so, .apk, .jar, .class, .xml 等文件格式,分析里面的内容包括classes.dex文件,包、方法数量、类、字符串、使用的NativeLibrary等。...

    common-tools-hotswap.zip

    1、需要用到的agent/commons-agent.jar为hotswap打出来的包(HotSwapManager中定义) 2、需要用到lombok插件 3、测试的class为 DemoTestClazz 4、定时检测热更的class为CheckHotwapSchedule 5、热更后...

    EclipseADT-24.2.0-支持jdk8.zip

    4.里面已经包含了build-tools\25.0.3的dx.jar修改后文件 参考链接: https://blog.csdn.net/BeautifulCarol/article/details/80709025 https://blog.csdn.net/BeautifulCarol/article/details/80762158

    Java反编译工具

    Java反编译工具,可以将jar 包等,取出里面的.class文件 但是不能对.class文件本身做修改

    maven的优缺点 项目

    在仓库中生成相应的目录,里面的放的是jar包和war包 Maven-clean:会把项目中的class文件和jar包war包删除 Maven-test:运行所的测试类,取决于位置,必须放到src/test下面;在运行的(install)跳过,运行的时候会执行...

Global site tag (gtag.js) - Google Analytics