参考文章
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
导入jar包中的部分代码可能会有冲突,这就需要我们修改jar包中的内容
Class后点Browse像Export一样它也会列出你项目中的主类,选择后其它默认即可,Next后会列出你要打包的所有内容,这个插件的优势就是可以将你项目中的外部jar也打进来,有三个先项,其中Export ANT是生成build.xml...
apk反编译说明 1. 将aapt,apktool,apktool.jar拷贝到/usr/local/bin下(在root权限下才可以,修改属性chmod)。...第三步: 使用jd-linux下的jd-gui浏览反编译的*_dex2jar.jar包(里面是*.class文件)
需要把别人jar包里面的class修改一下信息 配置文件*.properties MANIFEST.MF 这些东西可以直接用记事本打开修改 然后替换掉就OK.. 在网上游荡了半天,找到合适的方法
今天想把android源码/vendor/letv/frameworks/base/java下的源码编译成 framework-letv.jar供乐乐语音客户端使用,编译完后,发现jar包文件虽然生成了,但包里面并没有相关的源码class文件,无法正常使用。...
apk反编译说明 1. 将aapt,apktool,apktool.jar拷贝到/usr/local/bin下(在root权限下才可以,修改属性chmod)。...第三步: 使用jd-linux下的jd-gui浏览反编译的*_dex2jar.jar包(里面是*.class文件)
在应用中集成AXMLPrinter,从apk文件中提取包名,版本等信息。 AnalysisApk.java是从apk中提取...这需要修改里面的包名。把android.content.res改为android.content.res2。 附件文件是我修改好的,直接导入工程即可。
修改jar包工具,修改class工具;直接修改别人jar包里面的class文件
(很大总是不能很好的加载,我想补充一下:把你下载好的JXL.JAR包放入D:\JAVA\jre\lib\ext中(我的是JDK1.6)就OK了。我相信在配置TOMCAT时也需要把相关的三个包放到这里面。) 基本操作 一、创建文件 拟...
修改jar包中变量 或者长量 步骤如下: 1.用jd-gui打开该jar 怎么打开不用我说了吧? 打开之后找到 要修改提示信息 的class文件 这里找到的是GenEntity 找到对应需要修改的代码所在的方法名 我这里包含提示信息的这段...
http://blog.csdn.net/hexin373/article/details/6669813 直接修改别人jar包里面的class文件 工具:jclasslib
用于反编译APK文件的法宝,3大利器合一。你!值得拥有!(注:里面jar包的使用方法请摆渡,用jar包的名字一摆渡能出来一大片。)
已经修改了此 jar包,把org/apache/hadoop/fs/FileUtil.java里面的checkReturnValue,注释掉了。 修改的文件保护两个 FileUtil$CygPathCommand.class 与 FileUtil.class 方便在windows 下调试hadoop 而不报错。
看到网上apk反编译文档很多,但很零散,本人将其一起打包,方便大家。 apk反编译说明 1. 将aapt,apktool,apktool.jar拷贝到/usr/...第三步: 使用jd-linux下的jd-gui浏览反编译的*_dex2jar.jar包(里面是*.class文件)
ClassyShark是一款可以查看Android可执行文件的浏览工具,支持.dex, .aar, .so, .apk, .jar, .class, .xml 等文件格式,分析里面的内容包括classes.dex文件,包、方法数量、类、字符串、使用的NativeLibrary等。...
1、需要用到的agent/commons-agent.jar为hotswap打出来的包(HotSwapManager中定义) 2、需要用到lombok插件 3、测试的class为 DemoTestClazz 4、定时检测热更的class为CheckHotwapSchedule 5、热更后...
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反编译工具,可以将jar 包等,取出里面的.class文件 但是不能对.class文件本身做修改
在仓库中生成相应的目录,里面的放的是jar包和war包 Maven-clean:会把项目中的class文件和jar包war包删除 Maven-test:运行所的测试类,取决于位置,必须放到src/test下面;在运行的(install)跳过,运行的时候会执行...