本文整理汇总了Java中soot.jimple.infoflow.android.manifest.ProcessManifest.getEntryPointClasses方法的典型用法代码示例。如果您正苦于以下问题:Java ProcessManifest.getEntryPointClasses方法的具体用法?Java ProcessManifest.getEntryPointClasses怎么用?Java ProcessManifest.getEntryPointClasses使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类soot.jimple.infoflow.android.manifest.ProcessManifest
的用法示例。
在下文中一共展示了ProcessManifest.getEntryPointClasses方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: 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();
}
}
示例2: 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;
}
示例3: 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);
}
}
示例4: 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);
}
}
示例5: getComponents
import soot.jimple.infoflow.android.manifest.ProcessManifest; //导入方法依赖的package包/类
public static Set<String> getComponents(String apkFileLocation)
{
Set<String> entrypoints = null;
try
{
ProcessManifest processMan = new ProcessManifest(apkFileLocation);
entrypoints = processMan.getEntryPointClasses();
}
catch (Exception ex)
{
ex.printStackTrace();
}
return entrypoints;
}
示例6: executeTransformers
import soot.jimple.infoflow.android.manifest.ProcessManifest; //导入方法依赖的package包/类
private void executeTransformers(ProcessManifest manifest) {
// We first need to retrieve some information from the manifest
Set<String> constructors = new HashSet<>();
for (String className : manifest.getEntryPointClasses())
constructors.add("<" + className + ": void <init>()>");
ConditionTracking conditionTracking = new ConditionTracking();
CodePositionTracking codePositionTracking = new CodePositionTracking(codePositionManager);
DynamicCallGraphTracking dynamicCallGraphTracking = new DynamicCallGraphTracking(codePositionManager);
PathExecutionTransformer pathExecutionTransformer = new PathExecutionTransformer();
GoalReachedTracking goalReachedTracking = new GoalReachedTracking(config.getAllTargetLocations());
TimingBombTransformer timingBombs = new TimingBombTransformer();
DummyMethodHookTransformer dummyMethods = new DummyMethodHookTransformer();
DynamicValueTransformer dynamicValues = new DynamicValueTransformer(true);
ClassLoaderTransformer classLoaders = new ClassLoaderTransformer();
for (SootClass sc : Scene.v().getApplicationClasses())
for (SootMethod sm : sc.getMethods())
if (sm.isConcrete()) {
Body body = sm.getActiveBody();
//todo PAPER-EVAL ONLY
codePositionTracking.transform(body);
if(!FrameworkOptions.evaluationOnly){
// conditionTracking.transform(body);
// dynamicCallGraphTracking.transform(body);
}
// if (FrameworkOptions.recordPathExecution)
// pathExecutionTransformer.transform(body);
goalReachedTracking.transform(body);
//todo PAPER-EVAL ONLY
if(!FrameworkOptions.evaluationOnly){
timingBombs.transform(body);
dummyMethods.transform(body);
dynamicValues.transform(body);
}
classLoaders.transform(body);
}
//todo PAPER-EVAL ONLY
if(!FrameworkOptions.evaluationOnly)
new CrashReporterInjection(constructors).transform();
new GlobalInstanceTransformer().transform();
}