Exemple #1
0
    def ParseManifest(self, ManifestFile):
        ap = AXMLPrinter(open(ManifestFile, "rb").read())
        xml = minidom.parseString(ap.getBuff())
        package = xml.documentElement.getAttribute("package")

        classes = set()
        classnames = set()

        for tag_name in ["activity", "service", "receiver", "provider"]:
            for item in xml.getElementsByTagName(tag_name):
                value = item.getAttribute("android:name")

                if len(value) > 0:
                    if value[
                            0] == ".":  # Short form with implicit package name
                        classes.add(package + value)
                        classnames.add(value.split('.')[-1])
                    else:  # Fully-qualified name
                        classes.add(value)
                        classnames.add(value.split('.')[-1])
                        # Hack: Some apke does not follow this rule as set in the SDK
                        # As a workround treat them as short form as well
                        classes.add(package + '.' + value)

        return classes, classnames
Exemple #2
0
    def ParseManifest(self, ManifestFile):
        ap = AXMLPrinter(open(ManifestFile, "rb").read())
        xml = minidom.parseString(ap.getBuff())
        package = xml.documentElement.getAttribute( "package" )

        classes = set()
        classnames = set()

        for tag_name in ["activity", "service", "receiver", "provider"]:
            for item in xml.getElementsByTagName(tag_name) :
                value = item.getAttribute("android:name")
               
                if len(value) > 0 :
                    if value[0] == "." : # Short form with implicit package name
                        classes.add(package + value)
                        classnames.add(value.split('.')[-1])
                    else : # Fully-qualified name
                        classes.add(value)
                        classnames.add(value.split('.')[-1])
                        # Hack: Some apke does not follow this rule as set in the SDK
                        # As a workround treat them as short form as well
                        classes.add(package + '.' + value)
                        
        return classes, classnames
Exemple #3
0
import re
import sys, os
import codecs
#http://androguard.blogspot.com/2011/03/androids-binary-xml.html
from apk import AXMLPrinter
from xml.dom import minidom

if sys.argv[1] != '-':
    ap = AXMLPrinter(open(sys.argv[1], "rb").read())
else:
    ap = AXMLPrinter(sys.stdin.read())
    
xml = minidom.parseString(ap.getBuff())

if sys.argv[2] != '-':
    xml.writexml(codecs.open(sys.argv[2], "wb", "utf-8"))
else:
    xml.writexml(codecs.getwriter('utf-8')(sys.stdout))