当前位置: 首页>>代码示例>>Java>>正文


Java ProcessManifest类代码示例

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


ProcessManifest类属于soot.jimple.infoflow.android.manifest包,在下文中一共展示了ProcessManifest类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: addTemporalManifestChanges

import soot.jimple.infoflow.android.manifest.ProcessManifest; //导入依赖的package包/类
private void addTemporalManifestChanges(ProcessManifest androidManifest) {
	File manifestFile = null;
	try{
		//temporarily save the modified AndroidManifest
		manifestFile = File.createTempFile("AndroidManifest.xml", null);		
		FileOutputStream fos = new FileOutputStream(manifestFile.getPath());
		byte[] output = androidManifest.getOutput();
		fos.write(output);
		fos.close();
		
		ArrayList<File> files = new ArrayList<File>();
		files.add(manifestFile);
		HashMap<String, String> paths = new HashMap<String, String>();
		paths.put(manifestFile.getAbsolutePath(), "AndroidManifest.xml");
		//add the modified AndroidManifest into the original APK
		androidManifest.getApk().addFilesToApk(files, paths);
	}catch(Exception ex) {
		LoggerHelper.logEvent(MyLevel.EXCEPTION_ANALYSIS, ex.getMessage());
		ex.printStackTrace();
		System.exit(-1);
	}
	finally {
		if (manifestFile != null && manifestFile.exists())
			manifestFile.delete();
	}
}
 
开发者ID:srasthofer,项目名称:FuzzDroid,代码行数:27,代码来源:Instrumenter.java

示例2: addMaxPrioForSMSReceiver

import soot.jimple.infoflow.android.manifest.ProcessManifest; //导入依赖的package包/类
@SuppressWarnings("unchecked")
private static void addMaxPrioForSMSReceiver(ProcessManifest manifest) {
	for(AXmlNode receiver : manifest.getReceivers()) {
		for(AXmlNode receiverChild : receiver.getChildren()) {
			if(receiverChild.getTag().equals("intent-filter")) {
				//search for SMS receiver
				for(AXmlNode childChild : receiverChild.getChildren()) {
					if(childChild.getTag().equals("action")) {
						if(childChild.hasAttribute("name") && ((String)childChild.getAttribute("name").getValue()).equalsIgnoreCase("android.provider.Telephony.SMS_RECEIVED")){
							//prepare the priority filter
							if(receiverChild.hasAttribute("priority")) 
								((AXmlAttribute<Integer>)receiverChild.getAttribute("priority")).setValue(Integer.MAX_VALUE);
							else {
								AXmlAttribute<Integer> attr = new AXmlAttribute<Integer>("priority", Integer.MAX_VALUE, ANDROID_NAMESPACE);
								receiverChild.addAttribute(attr);
							}
						}
					}
				}
			}
		}
	}
}
 
开发者ID:srasthofer,项目名称:FuzzDroid,代码行数:24,代码来源:UtilApk.java

示例3: extractApkInfo

import soot.jimple.infoflow.android.manifest.ProcessManifest; //导入依赖的package包/类
public static void extractApkInfo(String apkPath)
{
	GlobalRef.apkPath = apkPath;
	
	try 
	{
		ProcessManifest manifest = new ProcessManifest(apkPath);
		
		GlobalRef.pkgName = manifest.getPackageName();
		GlobalRef.apkVersionCode = manifest.getVersionCode();
		GlobalRef.apkVersionName = manifest.getVersionName();
		GlobalRef.apkMinSdkVersion = manifest.getMinSdkVersion();
		GlobalRef.apkPermissions = manifest.getPermissions();
	} 
	catch (Exception e) 
	{
		e.printStackTrace();
	}
}
 
开发者ID:serval-snt-uni-lu,项目名称:DroidRA,代码行数:20,代码来源:DroidRAUtils.java

示例4: internalTransform

import soot.jimple.infoflow.android.manifest.ProcessManifest; //导入依赖的package包/类
@Override
protected void internalTransform(String phaseName, Map<String, String> options) 
{
	try
	{	
		ProcessManifest processMan = new ProcessManifest(apkFileLocation);
		Set<String> entrypoints = processMan.getEntryPointClasses();
		
		SootMethod mainMethod = generateMain(entrypoints);
		
		System.out.println(mainMethod.retrieveActiveBody());
	}
	catch (Exception ex)
	{
		ex.printStackTrace();
	}
}
 
开发者ID:serval-snt-uni-lu,项目名称:DroidRA,代码行数:18,代码来源:DummyMainGenerator.java

示例5: generateDummyMain

import soot.jimple.infoflow.android.manifest.ProcessManifest; //导入依赖的package包/类
public static SootMethod generateDummyMain(String apkFileLocation)
{
	SootMethod mainMethod = null;
	
	try
	{	
		ProcessManifest processMan = new ProcessManifest(apkFileLocation);
		Set<String> entrypoints = processMan.getEntryPointClasses();
		
		DummyMainGenerator dmGenerator = new DummyMainGenerator(apkFileLocation);
		
		mainMethod = dmGenerator.generateMain(entrypoints);
		
		System.out.println(mainMethod.retrieveActiveBody());
	}
	catch (Exception ex)
	{
		ex.printStackTrace();
	}
	
	return mainMethod;
}
 
开发者ID:serval-snt-uni-lu,项目名称:DroidRA,代码行数:23,代码来源:DummyMainGenerator.java

示例6: main

import soot.jimple.infoflow.android.manifest.ProcessManifest; //导入依赖的package包/类
public static void main(String[] args) 
{
	DB.setJdbcPath("res/jdbc.xml");

	String apkPath = args[0];
	
	try 
	{
		ProcessManifest processMan = new ProcessManifest(apkPath);
		String pkgName = processMan.getPackageName();
		
		buildLinks(pkgName);
	} 
	catch (Exception e) 
	{
		e.printStackTrace();
	}
	
}
 
开发者ID:lilicoding,项目名称:soot-infoflow-android-iccta,代码行数:20,代码来源:ICCLinker.java

示例7: initializePePInAllPossibleClasses

import soot.jimple.infoflow.android.manifest.ProcessManifest; //导入依赖的package包/类
/**
 * This is a kind of hack and includes much more instrumentation which is necessary;
 * But it is still sound ;-).
 * @param apkFileLocation: apk file path
 */
public static void initializePePInAllPossibleClasses(String apkFileLocation){
	try {
		ProcessManifest manifest = new ProcessManifest(apkFileLocation);		
		Set<String> entryClasses = manifest.getEntryPointClasses();
		 
		for(String entryClass : entryClasses){
			SootClass sc = Scene.v().getSootClass(entryClass);
			
			List<SootClass> allSuperClasses = Scene.v().getActiveHierarchy().getSuperclassesOf(sc);
		 	for(SootClass subclass : allSuperClasses)
		 		if(subclass.getName().equals("android.content.Context")){
		 			initializePeP(sc);
		 			break;
		 		}
		}
	}
	catch (IOException | XmlPullParserException ex) {
		System.err.println("Could not read Android manifest file: " + ex.getMessage());
		throw new RuntimeException(ex);
	}
}
 
开发者ID:secure-software-engineering,项目名称:DroidForce,代码行数:27,代码来源:Util.java

示例8: isLaunchableAcitivity

import soot.jimple.infoflow.android.manifest.ProcessManifest; //导入依赖的package包/类
private boolean isLaunchableAcitivity(SootClass sc, ProcessManifest manifest) {
	Set<AXmlNode> launchableActivities = manifest.getLaunchableActivities();
	for(AXmlNode node : launchableActivities) {
		if(node.hasAttribute("name")) {
			String activityName = (String)node.getAttribute("name").getValue();
			activityName = getFullyQualifiedName(manifest, activityName);
			
			if(activityName.equals(sc.getName()))
				return true;
		}
	}
	return false;
}
 
开发者ID:srasthofer,项目名称:FuzzDroid,代码行数:14,代码来源:FrameworkEventManager.java

示例9: manipulateAndroidManifest

import soot.jimple.infoflow.android.manifest.ProcessManifest; //导入依赖的package包/类
public static void manipulateAndroidManifest(ProcessManifest androidManifest) {
	// process old manifest
	addHookinHelperAsApplicationIfNecessary(androidManifest);
	addInternetPermissionIfNecessary(androidManifest);
	addTracingService(androidManifest);
	addComponentCallerService(androidManifest);
	addMaxPrioForSMSReceiver(androidManifest);
	addPermissionIfNecessary("android.permission.READ_EXTERNAL_STORAGE", androidManifest);
	addPermissionIfNecessary("android.permission.WRITE_EXTERNAL_STORAGE", androidManifest);
	addPermissionIfNecessary("android.permission.WRITE_CONTACT", androidManifest);
}
 
开发者ID:srasthofer,项目名称:FuzzDroid,代码行数:12,代码来源:UtilApk.java

示例10: addPermissionIfNecessary

import soot.jimple.infoflow.android.manifest.ProcessManifest; //导入依赖的package包/类
private static void addPermissionIfNecessary(String permission, ProcessManifest androidManifest) {
	Set<String> allPermissions = androidManifest.getPermissions();
	for(String perm : allPermissions) {
		if(perm.equals(permission))
			//do nothing in case the sdcard-permission already exists
			return;
	}
	
	androidManifest.addPermission(permission);
}
 
开发者ID:srasthofer,项目名称:FuzzDroid,代码行数:11,代码来源:UtilApk.java

示例11: addComponentCallerService

import soot.jimple.infoflow.android.manifest.ProcessManifest; //导入依赖的package包/类
private static void addComponentCallerService(ProcessManifest androidManifest) {
	AXmlNode componentCallerService = new AXmlNode("service", null, androidManifest.getApplication());
	AXmlAttribute<String> nameAttribute = new AXmlAttribute<String>("name", UtilInstrumenter.COMPONENT_CALLER_SERVICE_HELPER,  ANDROID_NAMESPACE);
	AXmlAttribute<String> exportedAttribute = new AXmlAttribute<String>("exported", "false",  ANDROID_NAMESPACE);
	componentCallerService.addAttribute(nameAttribute);
	componentCallerService.addAttribute(exportedAttribute);
	
	androidManifest.addService(componentCallerService);
}
 
开发者ID:srasthofer,项目名称:FuzzDroid,代码行数:10,代码来源:UtilApk.java

示例12: addHookinHelperAsApplicationIfNecessary

import soot.jimple.infoflow.android.manifest.ProcessManifest; //导入依赖的package包/类
private static void addHookinHelperAsApplicationIfNecessary(ProcessManifest androidManifest){
	AXmlNode application = androidManifest.getApplication();
	if(!application.hasAttribute("name")) {
		AXmlAttribute<String> nameAttribute = new AXmlAttribute<String>("name", UtilInstrumenter.HELPER_APPLICATION_FOR_HOOKING,  ANDROID_NAMESPACE);
		application.addAttribute(nameAttribute);
	}
}
 
开发者ID:srasthofer,项目名称:FuzzDroid,代码行数:8,代码来源:UtilApk.java

示例13: addInternetPermissionIfNecessary

import soot.jimple.infoflow.android.manifest.ProcessManifest; //导入依赖的package包/类
private static void addInternetPermissionIfNecessary(ProcessManifest androidManifest) {
	String internetPerm = "android.permission.INTERNET";
	Set<String> allPermissions = androidManifest.getPermissions();
	for(String perm : allPermissions) {
		if(perm.equals(internetPerm))
			//do nothing in case the internet-permission already exists
			return;
	}
	
	androidManifest.addPermission(internetPerm);
}
 
开发者ID:srasthofer,项目名称:FuzzDroid,代码行数:12,代码来源:UtilApk.java

示例14: addTracingService

import soot.jimple.infoflow.android.manifest.ProcessManifest; //导入依赖的package包/类
private static void addTracingService(ProcessManifest androidManifest) {
	AXmlNode tracingService = new AXmlNode("service", null, androidManifest.getApplication());
	AXmlAttribute<String> nameAttribute = new AXmlAttribute<String>("name", UtilInstrumenter.HELPER_SERVICE_FOR_PATH_TRACKING,  ANDROID_NAMESPACE);
	AXmlAttribute<String> exportedAttribute = new AXmlAttribute<String>("exported", "false",  ANDROID_NAMESPACE);
	tracingService.addAttribute(nameAttribute);
	tracingService.addAttribute(exportedAttribute);
	
	androidManifest.addService(tracingService);
}
 
开发者ID:srasthofer,项目名称:FuzzDroid,代码行数:10,代码来源:UtilApk.java

示例15: SetupApplicationJIT

import soot.jimple.infoflow.android.manifest.ProcessManifest; //导入依赖的package包/类
public SetupApplicationJIT(String apkFileLocation, String sootCP,
		ISourceSinkDefinitionProvider sourceSinkProvider) {
	this.apkFileLocation = apkFileLocation;
	this.sootCP = sootCP;
	try {
		// Load Android callbacks
		this.androidCallbacks = Activator.getDefault().getAndroidCallbacks();

		// Process manifest
		ProcessManifest processMan = new ProcessManifest(apkFileLocation);
		this.appPackageName = processMan.getPackageName();
		this.entrypoints = processMan.getEntryPointClasses();

		// Parse the resource file
		ARSCFileParser resParser = new ARSCFileParser();
		resParser.parse(apkFileLocation);
		this.resourcePackages = resParser.getPackages();

		// LayoutFileParser
		LayoutFileParser lfp = new LayoutFileParser(this.appPackageName, resParser);
		lfp.parseLayoutFile(apkFileLocation, entrypoints);

		// Create the SourceSinkManager
		Set<SootMethodAndClass> callbacks = new HashSet<>();
		for (Set<SootMethodAndClass> methods : this.callbackMethods.values())
			callbacks.addAll(methods);
		sourceSinkManager = new AccessPathBasedSourceSinkManager(sourceSinkProvider.getSources(),
				sourceSinkProvider.getSinks(), callbacks, LayoutMatchingMode.MatchSensitiveOnly,
				lfp == null ? null : lfp.getUserControlsByID());
		sourceSinkManager.setAppPackageName(this.appPackageName);
		sourceSinkManager.setResourcePackages(this.resourcePackages);
		sourceSinkManager.setEnableCallbackSources(true);
	} catch (IOException | XmlPullParserException e) {
		LOGGER.error("Error initializing " + apkFileLocation);
	}
}
 
开发者ID:secure-software-engineering,项目名称:cheetah,代码行数:37,代码来源:SetupApplicationJIT.java


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