package parser.dex;
import com.googlecode.dex2jar.reader.DexFileReader;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
/**
* Created by acgmohu on 14-7-3.
*/
public class DEX {
private DexFileReader dexFileReader;
private List<DexClass> dexClasses = new ArrayList<>();
public DEX(File file) throws IOException {
dexFileReader = new DexFileReader(file);
dexFileReader.accept(new DexFileAdapter(dexClasses),
DexFileReader.SKIP_DEBUG | DexFileReader.SKIP_ANNOTATION);
}
public List<DexClass> getDexClasses() {
return dexClasses;
}
/**
* 获取所有类/方法/内容
* La/b/c;->mtd;
*
* @return 方法Map <method : method body>
*/
public HashMap<String, String> getMethods() {
HashMap<String, String> methods = new HashMap<>();
for (DexClass dexClass : dexClasses) {
if (dexClass.methodMap.size() > 0) {
for (String key : dexClass.methodMap.keySet()) {
methods.put(key, dexClass.methodMap.get(key));
}
}
}
return methods;
}
/**
* 获得 DEX 中存在的字符
*
* @return 获取字符串
*/
public List<String> getStrings() {
return dexFileReader.loadStrings();
}
}