public class ChangeResource {
public static HashMap<String,String> keys=new HashMap<String,String>();
public static void main(String[] args){
File file=new File("R.java");
try {
readFile(file);
replaceResource(new File("E:\\program2\\qie\\src"));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static void replaceResource(File source){
try {
if(source.isDirectory()){
File[] flist=source.listFiles();
for(File f:flist)
replaceResource(f);
}
else{
File outFile=new File(source.getAbsolutePath().replace(source.getName(),"_"+source.getName()));
if(!outFile.exists())
outFile.createNewFile();
replaceResource(source,outFile,"gbk");
String name=source.getAbsolutePath();
source.delete();
outFile.renameTo(new File(name));
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//public static final int grid_view_brightness = 0x7f08000a;
public static void readFile(File file) throws Exception{
BufferedReader in=new BufferedReader(new InputStreamReader(new FileInputStream(file)));
String line="";
Pattern p=Pattern.compile("int (.+) = ([^;]+)");
Pattern p2=Pattern.compile("static final class (.+)");
Matcher m;
Matcher m2;
String currentTag = null;
while((line=in.readLine())!=null){
m2=p2.matcher(line);
if(m2.find()){
currentTag=m2.group(1);
continue;
}
m=p.matcher(line);
if(m.find()){
String str=m.group(2);
keys.put(str,"R."+currentTag+"."+m.group(1));
}
}
in.close();
}
public static void replaceResource(File file,File oFile,String charset) throws Exception{
BufferedReader in=new BufferedReader(new InputStreamReader(new FileInputStream(file),charset));
BufferedWriter out=new BufferedWriter(new OutputStreamWriter(new FileOutputStream(oFile),charset));
String line="";
Pattern p=Pattern.compile("0x[^),]+");
Matcher m;
while((line=in.readLine())!=null){
m=p.matcher(line);
if(m.find()){
String res=m.group();
if(keys.containsKey(res)){
line=line.replaceAll(res,keys.get(res));
}
}
out.write(line);
out.newLine();
}
in.close();
out.flush();
out.close();
}
}
Android 资源文件逆向
最新推荐文章于 2022-07-11 07:35:00 发布