本文整理汇总了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();
}
}
示例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);
}
}
}
}
}
}
}
}
示例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();
}
}
示例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();
}
}
示例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;
}
示例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();
}
}
示例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);
}
}
示例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;
}
示例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);
}
示例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);
}
示例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);
}
示例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);
}
}
示例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);
}
示例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);
}
示例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);
}
}