Ejemplo n.º 1
0
def export_apps_to_format(a, output, dot=None, _format=None):
    output_name = output
    if output_name[-1] != "/":
        output_name = output_name + "/"

    for vm in a.get_vms():
        x = analysis.VMAnalysis(vm)
        for method in vm.get_methods():
            filename = output_name + valid_class_name(method.get_class_name())
            if filename[-1] != "/":
                filename = filename + "/"

            descriptor = method.get_descriptor()
            descriptor = descriptor.replace(";", "")
            descriptor = descriptor.replace(" ", "")
            descriptor = descriptor.replace("(", "-")
            descriptor = descriptor.replace(")", "-")
            descriptor = descriptor.replace("/", "_")

            filename = filename + method.get_name() + descriptor

            buff = method2dot(x.get_method(method))

            if dot:
                fd = open(filename + ".dot", "w")
                fd.write(buff)
                fd.close()

            if _format:
                method2format(filename + "." + _format, _format, raw=buff)
Ejemplo n.º 2
0
def export_apps_to_format( a, output, dot=None, _format=None ) :
    output_name = output
    if output_name[-1] != "/" :
        output_name = output_name + "/"

    for vm in a.get_vms() :
        x = analysis.VMAnalysis( vm )
        for method in vm.get_methods() :
            filename = output_name + valid_class_name( method.get_class_name() )
            if filename[-1] != "/" :
                filename = filename + "/"

            descriptor = method.get_descriptor()
            descriptor = descriptor.replace(";", "")
            descriptor = descriptor.replace(" ", "")
            descriptor = descriptor.replace("(", "-")
            descriptor = descriptor.replace(")", "-")
            descriptor = descriptor.replace("/", "_")

            filename = filename + method.get_name() + descriptor


            buff = method2dot( x.get_method( method ) )

            if dot :
                fd = open( filename + ".dot", "w")
                fd.write( buff )
                fd.close()

            if _format :
                method2format( filename + "." + _format, _format, raw = buff )
Ejemplo n.º 3
0
 def method2xdot(self):
     import pydot
     self.buff = "digraph code {\n"
     self.buff += "graph [bgcolor=white];\n"
     self.buff += "node [color=lightgray, style=filled shape=box fontname=\"Courier\" fontsize=\"8\"];\n"
     self.buff += "splines=ortho"
     self.buff += bytecode.method2dot(self.vmx.get_method(self.method))
     self.buff += "}"
     d = pydot.graph_from_dot_data(self.buff)
     if d:
         self.xdot = d.create_xdot()
Ejemplo n.º 4
0
    def method2xdot(self):
        import pydot

        self.buff = "digraph code {\n"
        self.buff += "graph [bgcolor=white];\n"
        self.buff += 'node [color=lightgray, style=filled shape=box fontname="Courier" fontsize="8"];\n'
        self.buff += "splines=ortho"
        self.buff += bytecode.method2dot(self.vmx.get_method(self.method))
        self.buff += "}"
        d = pydot.graph_from_dot_data(self.buff)
        if d:
            self.xdot = d.create_xdot()
Ejemplo n.º 5
0
    def method2xdot(self):
        import pydot
        self.buff = "digraph code {\n"
        self.buff += "graph [bgcolor=white];\n"
        self.buff += "node [color=red, style=filled shape=box fontname=\"Courier\" fontsize=\"8\"];\n"
        self.buff += "splines=ortho"
        self.buff += bytecode.method2dot(self.vmx.get_method(self.method))
        self.buff += "}"
        d = pydot.graph_from_dot_data(self.buff)
        if d:
            self.xdot = d.create_xdot()
            print "method2xdot\n"
#            print self.buff
            file = open('method2dot.txt','w')
            file.write("%s\n" % self.xdot)
            file.close
Ejemplo n.º 6
0
 def method2xdot(self):
     import pydot
     self.buff = "digraph code {\n"
     self.buff += "graph [bgcolor=white];\n"
     self.buff += "node [color=red, style=filled shape=box fontname=\"Courier\" fontsize=\"8\"];\n"
     self.buff += "splines=ortho"
     self.buff += bytecode.method2dot(self.vmx.get_method(self.method))
     self.buff += "}"
     d = pydot.graph_from_dot_data(self.buff)
     if d:
         self.xdot = d.create_xdot()
         print "method2xdot\n"
         #            print self.buff
         file = open('method2dot.txt', 'w')
         file.write("%s\n" % self.xdot)
         file.close
Ejemplo n.º 7
0
VALUES = [ "Lorg/t0t0/androguard/TC/TCA; <init> ()V",
           "Lorg/t0t0/androguard/TC/TCE; equal (I Ljava/lang/String;)Ljava/lang/String;" ]


def test(got, expected):
    if got == expected:
        prefix = ' OK '
    else:
        prefix = '  X '

    print '\t%s got: %s expected: %s' % (prefix, repr(got), repr(expected))

a = androguard.AndroguardS( TEST_CASE )
ax = analysis.VMAnalysis( a.get_vm() )

for method in a.get_methods() :
    key = method.get_class_name() + " " + method.get_name() + " " + method.get_descriptor()

    if key not in VALUES :
        continue

    bytecode.set_pretty_show( 0 )
    method.pretty_show( ax )

    bytecode.set_pretty_show( 1 )
    method.pretty_show( ax )

    bytecode.method2dot( ax.get_method(method) )
    #bytecode.method2png( "test.png", ax.get_method( method ) )
Ejemplo n.º 8
0
]


def test(got, expected):
    if got == expected:
        prefix = ' OK '
    else:
        prefix = '  X '

    print '\t%s got: %s expected: %s' % (prefix, repr(got), repr(expected))


a = androguard.AndroguardS(TEST_CASE)
ax = analysis.VMAnalysis(a.get_vm())

for method in a.get_methods():
    key = method.get_class_name() + " " + method.get_name(
    ) + " " + method.get_descriptor()

    if key not in VALUES:
        continue

    bytecode.set_pretty_show(0)
    method.pretty_show(ax)

    bytecode.set_pretty_show(1)
    method.pretty_show(ax)

    bytecode.method2dot(ax.get_method(method))
    #bytecode.method2png( "test.png", ax.get_method( method ) )