• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

Java DexBuilder类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了Java中org.jf.dexlib2.writer.builder.DexBuilder的典型用法代码示例。如果您正苦于以下问题:Java DexBuilder类的具体用法?Java DexBuilder怎么用?Java DexBuilder使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



DexBuilder类属于org.jf.dexlib2.writer.builder包,在下文中一共展示了DexBuilder类的19个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Java代码示例。

示例1: buildFile

import org.jf.dexlib2.writer.builder.DexBuilder; //导入依赖的package包/类
private void buildFile(String fileName, DexBuilder dexBuilder)
        throws AndrolibException, IOException {
    File inFile = new File(mSmaliDir, fileName);
    InputStream inStream = new FileInputStream(inFile);

    if (fileName.endsWith(".smali")) {
        try {
            if (!SmaliMod.assembleSmaliFile(inFile,dexBuilder, false, false)) {
                throw new AndrolibException("Could not smali file: " + fileName);
            }
        } catch (IOException | RecognitionException ex) {
            throw new AndrolibException(ex);
        }
    } else {
        LOGGER.warning("Unknown file type, ignoring: " + inFile);
    }
    inStream.close();
}
 
开发者ID:imkiva,项目名称:AndroidApktool,代码行数:19,代码来源:SmaliBuilder.java


示例2: buildCode

import org.jf.dexlib2.writer.builder.DexBuilder; //导入依赖的package包/类
public static Set<String> buildCode(File smaliDir, File dexFile, DexDiffInfo info) throws IOException,
        RecognitionException {
    Set<String> classes = new HashSet<String>();
    Set<DexBackedClassDef> classDefs = new HashSet<DexBackedClassDef>();
    classDefs.addAll(info.getModifiedClasses());
    classDefs.addAll(info.getAddedClasses());
    final ClassFileNameHandler outFileNameHandler = new ClassFileNameHandler(smaliDir, ".smali");
    final ClassFileNameHandler inFileNameHandler = new ClassFileNameHandler(smaliDir, ".smali");
    DexBuilder dexBuilder = DexBuilder.makeDexBuilder();
    File smaliFile;
    String className;
    for (DexBackedClassDef classDef : classDefs) {
        ApkPatch.currentClassType = classDef.getType();
        className = TypeGenUtil.newType(classDef.getType());
        AfBakSmali.disassembleClass(classDef, outFileNameHandler, getBuildOption(classDefs, 19), false, false);
        smaliFile = inFileNameHandler.getUniqueFilenameForClass(className);
        classes.add(className.substring(1, className.length() - 1).replace('/', '.'));
        SmaliMod.assembleSmaliFile(smaliFile, dexBuilder, true, true);
    }

    dexBuilder.writeTo(new FileDataStore(dexFile));

    return classes;
}
 
开发者ID:alibaba,项目名称:atlas,代码行数:25,代码来源:SmaliDiffUtils.java


示例3: buildFile

import org.jf.dexlib2.writer.builder.DexBuilder; //导入依赖的package包/类
private void buildFile(String fileName, DexBuilder dexBuilder)
        throws AndrolibException, IOException {
    File inFile = new File(mSmaliDir, fileName);
    InputStream inStream = new FileInputStream(inFile);

    if (fileName.endsWith(".smali")) {
    	if(isVerbose){
    		LOGGER.info("Smaling: " + fileName);
    	}
        try {
            if (!SmaliMod.assembleSmaliFile(inFile,dexBuilder, false, false)) {
                throw new AndrolibException("Could not smali file: " + fileName);
            }
        } catch (IOException | RecognitionException ex) {
            throw new AndrolibException(ex);
        }
    } else {
        LOGGER.warning("Unknown file type, ignoring: " + inFile);
    }
    inStream.close();
}
 
开发者ID:4455jkjh,项目名称:apktool-android,代码行数:22,代码来源:SmaliBuilder.java


示例4: build

import org.jf.dexlib2.writer.builder.DexBuilder; //导入依赖的package包/类
private void build() throws AndrolibException {
    try {
        DexBuilder dexBuilder = DexBuilder.makeDexBuilder();

        for (String fileName : mSmaliDir.getDirectory().getFiles(true)) {
            buildFile(fileName, dexBuilder);
        }
        dexBuilder.writeTo(new FileDataStore( new File(mDexFile.getAbsolutePath())));
    } catch (IOException | DirectoryException ex) {
        throw new AndrolibException(ex);
    }
}
 
开发者ID:imkiva,项目名称:AndroidApktool,代码行数:13,代码来源:SmaliBuilder.java


示例5: assembleSmaliFile

import org.jf.dexlib2.writer.builder.DexBuilder; //导入依赖的package包/类
public static boolean assembleSmaliFile(InputStream is,DexBuilder dexBuilder, boolean verboseErrors,
                                        boolean printTokens, File smaliFile) throws IOException, RecognitionException {

    // copy our filestream into a tmp file, so we don't overwrite
    File tmp = File.createTempFile("BRUT",".bak");
    tmp.deleteOnExit();

    OutputStream os = new FileOutputStream(tmp);
    IOUtils.copy(is, os);
    os.close();

    return assembleSmaliFile(tmp,dexBuilder, verboseErrors, printTokens);
}
 
开发者ID:imkiva,项目名称:AndroidApktool,代码行数:14,代码来源:SmaliMod.java


示例6: assembleSmaliFile

import org.jf.dexlib2.writer.builder.DexBuilder; //导入依赖的package包/类
/**
 * 将smali文件夹转换为dex文件
 * @param smaliFolder
 * @param outDexFile
 * @return
 */
public static boolean assembleSmaliFile(File smaliFolder,File outDexFile) throws IOException, RecognitionException {
    Collection<File> smaliFiles =  FileUtils.listFiles(smaliFolder, new String[]{"smali"}, true);
    if(null!= smaliFiles && smaliFiles.size() > 0){
        DexBuilder dexBuilder = DexBuilder.makeDexBuilder();
        for(File smaliFile:smaliFiles){
            SmaliMod.assembleSmaliFile(smaliFile, dexBuilder, true, true);
        }
        dexBuilder.writeTo(new FileDataStore(outDexFile));
        return true;
    }else{
        return false;
    }
}
 
开发者ID:alibaba,项目名称:atlas,代码行数:20,代码来源:SmaliUtils.java


示例7: StmtVisitor

import org.jf.dexlib2.writer.builder.DexBuilder; //导入依赖的package包/类
public StmtVisitor(SootMethod belongingMethod, DexBuilder belongingFile) {
	this.belongingMethod = belongingMethod;
	this.belongingFile = belongingFile;
	constantV = new ConstantVisitor(belongingFile, this);
	regAlloc = new RegisterAllocator();
	exprV = new ExprVisitor(this, constantV, regAlloc, belongingFile);
	insns = new ArrayList<Insn>();
	switchPayloads = new ArrayList<SwitchPayload>();
}
 
开发者ID:flankerhqd,项目名称:JAADAS,代码行数:10,代码来源:StmtVisitor.java


示例8: ExprVisitor

import org.jf.dexlib2.writer.builder.DexBuilder; //导入依赖的package包/类
public ExprVisitor(StmtVisitor stmtV, ConstantVisitor constantV,
		RegisterAllocator regAlloc, DexBuilder dexFile) {
	this.dexFile = dexFile;
	this.stmtV = stmtV;
	this.constantV = constantV;
	this.regAlloc = regAlloc;

	regAlloc.resetImmediateConstantsPool();
}
 
开发者ID:flankerhqd,项目名称:JAADAS,代码行数:10,代码来源:ExprVisitor.java


示例9:

import org.jf.dexlib2.writer.builder.DexBuilder; //导入依赖的package包/类
protected static BuilderFieldReference toFieldReference
   		(SootField f, DexBuilder belongingDexFile) {
   	FieldReference fieldRef = new ImmutableFieldReference
   			(SootToDexUtils.getDexClassName(f.getDeclaringClass().getName()),
   			f.getName(),
   			SootToDexUtils.getDexTypeDescriptor(f.getType()));
   	return belongingDexFile.internFieldReference(fieldRef);
}
 
开发者ID:flankerhqd,项目名称:JAADAS,代码行数:9,代码来源:DexPrinter.java


示例10: BuilderMutableMethodImplementation

import org.jf.dexlib2.writer.builder.DexBuilder; //导入依赖的package包/类
public BuilderMutableMethodImplementation(DexBuilder dexBuilder, int registerCount) {
    this.dexBuilder = dexBuilder;
    this.registerCount = registerCount;
}
 
开发者ID:weiwenqiang,项目名称:GitHub,代码行数:5,代码来源:BuilderMutableMethodImplementation.java


示例11: compile

import org.jf.dexlib2.writer.builder.DexBuilder; //导入依赖的package包/类
public static byte[] compile(List<String> smaliTexts, int apiLevel)
    throws RecognitionException, IOException {
  DexBuilder dexBuilder = new DexBuilder(Opcodes.forApi(apiLevel));

  for (String smaliText : smaliTexts) {
    Reader reader = new StringReader(smaliText);

    LexerErrorInterface lexer = new smaliFlexLexer(reader);
    CommonTokenStream tokens = new CommonTokenStream((TokenSource) lexer);

    smaliParser parser = new smaliParser(tokens);
    parser.setVerboseErrors(true);
    parser.setAllowOdex(false);
    parser.setApiLevel(apiLevel);

    smaliParser.smali_file_return result = parser.smali_file();

    if (parser.getNumberOfSyntaxErrors() > 0 || lexer.getNumberOfSyntaxErrors() > 0) {
      throw new RuntimeException(
          "Error occured while compiling text:\n" + StringUtils.join(smaliTexts, "\n"));
    }

    CommonTree t = result.getTree();

    CommonTreeNodeStream treeStream = new CommonTreeNodeStream(t);
    treeStream.setTokenStream(tokens);

    smaliTreeWalker dexGen = new smaliTreeWalker(treeStream);
    dexGen.setApiLevel(apiLevel);
    dexGen.setVerboseErrors(true);
    dexGen.setDexBuilder(dexBuilder);
    dexGen.smali_file();

    if (dexGen.getNumberOfSyntaxErrors() > 0) {
      throw new RuntimeException("Error occured while compiling text");
    }
  }

  MemoryDataStore dataStore = new MemoryDataStore();

  dexBuilder.writeTo(dataStore);

  // TODO(sgjesse): This returns the full backingstore from MemoryDataStore, which by default
  // is 1024k bytes. Our dex file reader does not complain though.
  return dataStore.getData();
}
 
开发者ID:inferjay,项目名称:r8,代码行数:47,代码来源:Smali.java


示例12: getBelongingFile

import org.jf.dexlib2.writer.builder.DexBuilder; //导入依赖的package包/类
protected DexBuilder getBelongingFile() {
	return belongingFile;
}
 
开发者ID:flankerhqd,项目名称:JAADAS,代码行数:4,代码来源:StmtVisitor.java


示例13: DexPrinter

import org.jf.dexlib2.writer.builder.DexBuilder; //导入依赖的package包/类
public DexPrinter() {
	dexFile = DexBuilder.makeDexBuilder(19);
	//dexAnnotation = new DexAnnotation(dexFile);
}
 
开发者ID:flankerhqd,项目名称:JAADAS,代码行数:5,代码来源:DexPrinter.java


示例14: ConstantVisitor

import org.jf.dexlib2.writer.builder.DexBuilder; //导入依赖的package包/类
public ConstantVisitor(DexBuilder dexFile, StmtVisitor stmtV) {
	this.stmtV = stmtV;
	this.dexFile = dexFile;
}
 
开发者ID:flankerhqd,项目名称:JAADAS,代码行数:5,代码来源:ConstantVisitor.java


示例15: assembleSmaliFile

import org.jf.dexlib2.writer.builder.DexBuilder; //导入依赖的package包/类
private static boolean assembleSmaliFile(File smaliFile, DexBuilder dexBuilder, boolean verboseErrors,
                                         boolean printTokens, boolean allowOdex, int apiLevel)
        throws Exception {
    CommonTokenStream tokens;

    LexerErrorInterface lexer;

    FileInputStream fis = new FileInputStream(smaliFile.getAbsolutePath());
    InputStreamReader reader = new InputStreamReader(fis, "UTF-8");

    lexer = new smaliFlexLexer(reader);
    ((smaliFlexLexer)lexer).setSourceFile(smaliFile);
    tokens = new CommonTokenStream((TokenSource)lexer);

    if (printTokens) {
        tokens.getTokens();
        
        for (int i=0; i<tokens.size(); i++) {
            Token token = tokens.get(i);
            if (token.getChannel() == smaliParser.HIDDEN) {
                continue;
            }

            System.out.println(smaliParser.tokenNames[token.getType()] + ": " + token.getText());
        }
    }

    smaliParser parser = new smaliParser(tokens);
    parser.setVerboseErrors(verboseErrors);
    parser.setAllowOdex(allowOdex);
    parser.setApiLevel(apiLevel);

    smaliParser.smali_file_return result = parser.smali_file();

    if (parser.getNumberOfSyntaxErrors() > 0 || lexer.getNumberOfSyntaxErrors() > 0) {
        return false;
    }

    CommonTree t = result.getTree();

    CommonTreeNodeStream treeStream = new CommonTreeNodeStream(t);
    treeStream.setTokenStream(tokens);

    smaliTreeWalker dexGen = new smaliTreeWalker(treeStream);
    dexGen.setVerboseErrors(verboseErrors);
    dexGen.setDexBuilder(dexBuilder);
    dexGen.smali_file();

    return dexGen.getNumberOfSyntaxErrors() == 0;
}
 
开发者ID:YaphetsH,项目名称:ZJDroid,代码行数:51,代码来源:main.java


示例16: assembleSmaliFile

import org.jf.dexlib2.writer.builder.DexBuilder; //导入依赖的package包/类
private static boolean assembleSmaliFile(File smaliFile,
		DexBuilder dexBuilder, boolean verboseErrors, boolean printTokens,
		boolean allowOdex, int apiLevel) throws Exception {
	CommonTokenStream tokens;

	LexerErrorInterface lexer;

	FileInputStream fis = new FileInputStream(smaliFile.getAbsolutePath());
	InputStreamReader reader = new InputStreamReader(fis, "UTF-8");

	lexer = new smaliFlexLexer(reader);
	((smaliFlexLexer) lexer).setSourceFile(smaliFile);
	tokens = new CommonTokenStream((TokenSource) lexer);

	if (printTokens) {
		tokens.getTokens();

		for (int i = 0; i < tokens.size(); i++) {
			Token token = tokens.get(i);
			if (token.getChannel() == smaliParser.HIDDEN) {
				continue;
			}

			System.out.println(smaliParser.tokenNames[token.getType()]
					+ ": " + token.getText());
		}
	}

	smaliParser parser = new smaliParser(tokens);
	parser.setVerboseErrors(verboseErrors);
	parser.setAllowOdex(allowOdex);
	parser.setApiLevel(apiLevel);

	smaliParser.smali_file_return result = parser.smali_file();

	if (parser.getNumberOfSyntaxErrors() > 0
			|| lexer.getNumberOfSyntaxErrors() > 0) {
		return false;
	}

	CommonTree t = result.getTree();

	CommonTreeNodeStream treeStream = new CommonTreeNodeStream(t);
	treeStream.setTokenStream(tokens);

	smaliTreeWalker dexGen = new smaliTreeWalker(treeStream);
	dexGen.setVerboseErrors(verboseErrors);
	dexGen.setDexBuilder(dexBuilder);
	dexGen.smali_file();

	return dexGen.getNumberOfSyntaxErrors() == 0;
}
 
开发者ID:YaphetsH,项目名称:ZJDroid,代码行数:53,代码来源:DexFileBuilder.java


示例17: assembleSmaliFile

import org.jf.dexlib2.writer.builder.DexBuilder; //导入依赖的package包/类
private static boolean assembleSmaliFile(File smaliFile,
		DexBuilder dexBuilder, boolean verboseErrors, boolean printTokens,
		boolean allowOdex, int apiLevel) throws Exception {
	
	Logger.log("start assemble the file = " + smaliFile.getName());
	CommonTokenStream tokens;

	LexerErrorInterface lexer;

	FileInputStream fis = new FileInputStream(smaliFile.getAbsolutePath());
	InputStreamReader reader = new InputStreamReader(fis, "UTF-8");

	lexer = new smaliFlexLexer(reader);
	((smaliFlexLexer) lexer).setSourceFile(smaliFile);
	tokens = new CommonTokenStream((TokenSource) lexer);

	if (printTokens) {
		tokens.getTokens();

		for (int i = 0; i < tokens.size(); i++) {
			Token token = tokens.get(i);
			if (token.getChannel() == smaliParser.HIDDEN) {
				continue;
			}

			System.out.println(smaliParser.tokenNames[token.getType()]
					+ ": " + token.getText());
		}
	}

	smaliParser parser = new smaliParser(tokens);
	parser.setVerboseErrors(verboseErrors);
	parser.setAllowOdex(allowOdex);
	parser.setApiLevel(apiLevel);

	smaliParser.smali_file_return result = parser.smali_file();

	if (parser.getNumberOfSyntaxErrors() > 0
			|| lexer.getNumberOfSyntaxErrors() > 0) {
		return false;
	}

	CommonTree t = result.getTree();

	CommonTreeNodeStream treeStream = new CommonTreeNodeStream(t);
	treeStream.setTokenStream(tokens);

	smaliTreeWalker dexGen = new smaliTreeWalker(treeStream);
	dexGen.setVerboseErrors(verboseErrors);
	dexGen.setDexBuilder(dexBuilder);
	dexGen.smali_file();

	return dexGen.getNumberOfSyntaxErrors() == 0;
}
 
开发者ID:mikusjelly,项目名称:HeyGirl,代码行数:55,代码来源:DexFileBuilder.java


示例18: assembleSmaliFile

import org.jf.dexlib2.writer.builder.DexBuilder; //导入依赖的package包/类
private static boolean assembleSmaliFile(File smaliFile, DexBuilder dexBuilder, boolean verboseErrors,
                                         boolean printTokens, boolean allowOdex, int apiLevel,
                                         boolean experimental)
        throws Exception {
    CommonTokenStream tokens;

    LexerErrorInterface lexer;

    FileInputStream fis = new FileInputStream(smaliFile.getAbsolutePath());
    InputStreamReader reader = new InputStreamReader(fis, "UTF-8");

    lexer = new smaliFlexLexer(reader);
    ((smaliFlexLexer)lexer).setSourceFile(smaliFile);
    tokens = new CommonTokenStream((TokenSource)lexer);

    if (printTokens) {
        tokens.getTokens();

        for (int i=0; i<tokens.size(); i++) {
            Token token = tokens.get(i);
            if (token.getChannel() == smaliParser.HIDDEN) {
                continue;
            }

            System.out.println(smaliParser.tokenNames[token.getType()] + ": " + token.getText());
        }

        System.out.flush();
    }

    smaliParser parser = new smaliParser(tokens);
    parser.setVerboseErrors(verboseErrors);
    parser.setAllowOdex(allowOdex);
    parser.setApiLevel(apiLevel, experimental);

    smaliParser.smali_file_return result = parser.smali_file();

    if (parser.getNumberOfSyntaxErrors() > 0 || lexer.getNumberOfSyntaxErrors() > 0) {
        return false;
    }

    CommonTree t = result.getTree();

    CommonTreeNodeStream treeStream = new CommonTreeNodeStream(t);
    treeStream.setTokenStream(tokens);

    if (printTokens) {
        System.out.println(t.toStringTree());
    }

    smaliTreeWalker dexGen = new smaliTreeWalker(treeStream);
    dexGen.setApiLevel(apiLevel, experimental);

    dexGen.setVerboseErrors(verboseErrors);
    dexGen.setDexBuilder(dexBuilder);
    dexGen.smali_file();

    return dexGen.getNumberOfSyntaxErrors() == 0;
}
 
开发者ID:Sukelluskello,项目名称:VectorAttackScanner,代码行数:60,代码来源:main.java


示例19: compileSmali

import org.jf.dexlib2.writer.builder.DexBuilder; //导入依赖的package包/类
public static ClassDef compileSmali(String smaliText, int apiLevel, boolean experimental)
        throws RecognitionException, IOException {
    CommonTokenStream tokens;
    LexerErrorInterface lexer;
    DexBuilder dexBuilder = DexBuilder.makeDexBuilder(apiLevel);

    Reader reader = new StringReader(smaliText);

    lexer = new smaliFlexLexer(reader);
    tokens = new CommonTokenStream((TokenSource)lexer);

    smaliParser parser = new smaliParser(tokens);
    parser.setVerboseErrors(true);
    parser.setAllowOdex(false);
    parser.setApiLevel(apiLevel, experimental);

    smaliParser.smali_file_return result = parser.smali_file();

    if(parser.getNumberOfSyntaxErrors() > 0 || lexer.getNumberOfSyntaxErrors() > 0) {
        throw new RuntimeException("Error occured while compiling text");
    }

    CommonTree t = result.getTree();

    CommonTreeNodeStream treeStream = new CommonTreeNodeStream(t);
    treeStream.setTokenStream(tokens);

    smaliTreeWalker dexGen = new smaliTreeWalker(treeStream);
    dexGen.setApiLevel(apiLevel, experimental);
    dexGen.setVerboseErrors(true);
    dexGen.setDexBuilder(dexBuilder);
    dexGen.smali_file();

    if (dexGen.getNumberOfSyntaxErrors() > 0) {
        throw new RuntimeException("Error occured while compiling text");
    }

    MemoryDataStore dataStore = new MemoryDataStore();

    dexBuilder.writeTo(dataStore);

    DexBackedDexFile dexFile = new DexBackedDexFile(
            new Opcodes(apiLevel, experimental), dataStore.getData());

    return Iterables.getFirst(dexFile.getClasses(), null);
}
 
开发者ID:Sukelluskello,项目名称:VectorAttackScanner,代码行数:47,代码来源:SmaliTestUtils.java



注:本文中的org.jf.dexlib2.writer.builder.DexBuilder类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
Java Flag类代码示例发布时间:2022-05-22
下一篇:
Java PipeType类代码示例发布时间:2022-05-22
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap