Java Code Examples for soot.jimple.infoflow.android.manifest.ProcessManifest#getPackageName()
The following examples show how to use
soot.jimple.infoflow.android.manifest.ProcessManifest#getPackageName() .
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: DroidRAUtils.java From DroidRA with GNU Lesser General Public License v2.1 | 6 votes |
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(); } }
Example 2
Source File: ICCLinker.java From soot-infoflow-android-iccta with GNU Lesser General Public License v2.1 | 6 votes |
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(); } }
Example 3
Source File: Instrumenter.java From FuzzDroid with Apache License 2.0 | 4 votes |
private void initializeHooking(ProcessManifest manifest) { String applicationName = manifest.getApplicationName(); //case 1 if(applicationName != null) { if(applicationName.startsWith(".")) { String packageName = manifest.getPackageName(); if(packageName == null) throw new RuntimeException("There is a problem with the package name"); applicationName = packageName + applicationName; } SootClass applicationSootClass = Scene.v().getSootClass(applicationName); if(applicationSootClass != null) { String attachMethodName = String.format("<%s: void attachBaseContext(android.content.Context)>", applicationName); SootMethod attachMethod = Scene.v().grabMethod(attachMethodName); //case 1 if(attachMethod != null) { Body body = attachMethod.getActiveBody(); Local contextParam = body.getParameterLocal(0); List<Unit> unitsToInstrument = new ArrayList<Unit>(); String hookingHelperApplicationClassAttachMethodName = String.format("<%s: void initializeHooking(android.content.Context)>", UtilInstrumenter.HOOKER_CLASS); SootMethod hookingHelperApplicationClassAttachMethod = Scene.v().getMethod(hookingHelperApplicationClassAttachMethodName); if(hookingHelperApplicationClassAttachMethod == null) throw new RuntimeException("this should not happen"); SootMethodRef ref = hookingHelperApplicationClassAttachMethod.makeRef(); InvokeExpr invExpr = Jimple.v().newStaticInvokeExpr(ref, contextParam); unitsToInstrument.add(Jimple.v().newInvokeStmt(invExpr)); Unit instrumentAfterUnit = null; for(Unit unit : body.getUnits()) { if(unit instanceof InvokeStmt) { InvokeStmt invStmt = (InvokeStmt)unit; if(invStmt.getInvokeExpr().getMethod().getSubSignature().equals("void attachBaseContext(android.content.Context)")) { instrumentAfterUnit = unit; break; } } } if(instrumentAfterUnit == null) throw new RuntimeException("this should not happen"); body.getUnits().insertAfter(unitsToInstrument, instrumentAfterUnit); } //case 2 else { attachMethodName = String.format("<%s: void attachBaseContext(android.content.Context)>", UtilInstrumenter.HELPER_APPLICATION_FOR_HOOKING); attachMethod = Scene.v().grabMethod(attachMethodName); if(attachMethod == null) throw new RuntimeException("this should not happen"); List<Type> params = new ArrayList<Type>(); SootClass contextClass = Scene.v().getSootClass("android.content.Context"); params.add(contextClass.getType()); SootMethod newAttachMethod = new SootMethod("attachBaseContext", params, VoidType.v()); newAttachMethod.setModifiers(soot.Modifier.PROTECTED); newAttachMethod.setActiveBody(attachMethod.getActiveBody()); applicationSootClass.addMethod(newAttachMethod); } //there is no need for our Application class Scene.v().getSootClass(UtilInstrumenter.HELPER_APPLICATION_FOR_HOOKING).setLibraryClass(); } else { throw new RuntimeException("There is a problem with the Application class!"); } } //case 3 else{ //there is no need for any instrumentation since the Application class is set to application-class. } }
Example 4
Source File: SetupApplication.java From JAADAS with GNU General Public License v3.0 | 4 votes |
/** * Calculates the sets of sources, sinks, entry points, and callbacks methods for the given APK file. * * @param sourcesAndSinks * A provider from which the analysis can obtain the list of * sources and sinks * @throws IOException * Thrown if the given source/sink file could not be read. * @throws XmlPullParserException * Thrown if the Android manifest file could not be read. */ public void calculateSourcesSinksEntrypoints(ISourceSinkDefinitionProvider sourcesAndSinks) throws IOException, XmlPullParserException { // To look for callbacks, we need to start somewhere. We use the Android // lifecycle methods for this purpose. this.sourceSinkProvider = sourcesAndSinks; ProcessManifest processMan = new ProcessManifest(apkFileLocation); this.appPackageName = processMan.getPackageName(); this.entrypoints = processMan.getEntryPointClasses(); // Parse the resource file long beforeARSC = System.nanoTime(); ARSCFileParser resParser = new ARSCFileParser(); resParser.parse(apkFileLocation); logger.info("ARSC file parsing took " + (System.nanoTime() - beforeARSC) / 1E9 + " seconds"); this.resourcePackages = resParser.getPackages(); // Add the callback methods LayoutFileParser lfp = null; if (enableCallbacks) { lfp = new LayoutFileParser(this.appPackageName, resParser); calculateCallbackMethods(resParser, lfp); // Some informational output System.out.println("Found " + lfp.getUserControls() + " layout controls"); } System.out.println("Entry point calculation done."); // Clean up everything we no longer need soot.G.reset(); // Create the SourceSinkManager { Set<SootMethodAndClass> callbacks = new HashSet<>(); for (Set<SootMethodAndClass> methods : this.callbackMethods.values()) callbacks.addAll(methods); sourceSinkManager = new AccessPathBasedSourceSinkManager( this.sourceSinkProvider.getSources(), this.sourceSinkProvider.getSinks(), callbacks, layoutMatchingMode, lfp == null ? null : lfp.getUserControlsByID()); sourceSinkManager.setAppPackageName(this.appPackageName); sourceSinkManager.setResourcePackages(this.resourcePackages); sourceSinkManager.setEnableCallbackSources(this.enableCallbackSources); } entryPointCreator = createEntryPointCreator(); }
Example 5
Source File: Test.java From soot-infoflow-android-iccta with GNU Lesser General Public License v2.1 | 4 votes |
public static void main(final String[] args) { apkPath = args[0]; androidJars =args[1]; System.out.println("[IccTA]" + apkPath + ", " + androidJars); parseConfig(); try { DB.setJdbcPath("res/jdbc.xml"); ProcessManifest processMan = new ProcessManifest(apkPath); Test.appPackageName = processMan.getPackageName(); System.out.println("[IccTA]" + "ICC Provider is " + iccProviderStr); if (iccProviderStr.equals("ic3")) { ICCLinker.buildLinks(Test.appPackageName); } if (apkPath.contains(APK_COMBINER)) { if (apkPath.contains("/")) { int startPos = apkPath.lastIndexOf('/'); String filename = apkPath.substring(startPos+1); filename = filename.replace(".apk", ""); Test.appPackageNames = filename.split(Test.APK_COMBINER); } } AndroidIPCManager ipcManager = new AndroidIPCManager("res/IPCMethods.txt", Test.appPackageName); if (Test.appPackageNames != null) { ipcManager = new AndroidIPCManager("res/IPCMethods.txt", Test.appPackageNames); } ipcManager.setIccProvider(iccProviderStr); InfoStatistic mostBeginning = new InfoStatistic("Beginning"); ipcManager.addJimpleUpdater(mostBeginning); InfoStatistic mostEnding = new InfoStatistic("Ending"); ipcManager.addPostJimpleUpdater(mostEnding); SharedPreferencesUpdater sharedPreferencesUpdater = new SharedPreferencesUpdater(); ipcManager.addJimpleUpdater(sharedPreferencesUpdater); //JimpleReduceStaticFieldsTransformer jrsf = new JimpleReduceStaticFieldsTransformer(); //ipcManager.addJimpleUpdater(jrsf); JimpleIndexNumberTransformer jinTransformer = new JimpleIndexNumberTransformer(); ipcManager.addJimpleUpdater(jinTransformer); ApplicationClassSet acs = new ApplicationClassSet(); ipcManager.addJimpleUpdater(acs); //ExtraMapping extraMapping = new ExtraMapping(ApplicationClassSet.applicationClasses); //ipcManager.addJimpleUpdater(extraMapping); ExtraExtractor extraExtractor = new ExtraExtractor(); ipcManager.addJimpleUpdater(extraExtractor); FlowDroidLauncher.setIPCManager(ipcManager); FlowDroidLauncher.main(args); } catch (Exception ex) { ex.printStackTrace(); } }