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)
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 )
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()
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()
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
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
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 ) )
] 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 ) )