def get_app_methods(app, pid):
    """
    info:获得app中的方法
    """
    dump_result = class_dump_utils.dump_app(app)
    methods = api_helpers.extract(dump_result)
    # for m in methods:
    #    ret_methods = ret_methods.union(set(m["methods"]))
    # 保留class_name信息
    return methods
Exemple #2
0
def get_app_variables(app, pid):
    "get all variables, properties, and interface name"
    dump_result = class_dump_utils.dump_app(app)

    var_file_name = 'dump_var_' + os.path.basename(app) or 'dump_var'
    cur_dir = os.getcwd()
    var_file_name = os.path.join(cur_dir, "tmp/" + pid + '/' + var_file_name)

    var_file = open(var_file_name + ".txt", "w")
    print >> var_file, dump_result  #将strings内容输出到文件中

    interface = re.compile("^@interface (\w*).*")
    protocol = re.compile("@protocoli (\w*)")
    private = re.compile("^\s*[\w <>]* [*]?(\w*)[\[\]\d]*;")
    prop = re.compile(
        "@property\([\w, ]*\) (?:\w+ )*[*]?(\w+); // @synthesize \w*(?:=([\w]*))?;"
    )
    res = set()
    lines = dump_result.split("\n")
    wait_end = False
    for line in lines:
        l = line.strip()
        if l.startswith("}"):
            wait_end = False
            continue
        if wait_end:
            r = private.search(l)
            if r:
                res.add(r.groups()[0])
            continue
        r = interface.search(l)
        if r:
            res.add(r.groups()[0])
            wait_end = True
            continue
        r = protocol.search(l)
        if r:
            res.add(r.groups()[0])
            wait_end = True
            continue
        r = prop.search(l)
        if r:
            m = r.groups()
            res.add(m[0])
            res.add("set" + m[0].title() + ":")
            #print "set" + m[0].title() + ":"
            if m[1] != None:
                # res.add("V"+m[1])
                res.add(m[1])
    return res
def get_app_variables(app, pid):
    "get all variables, properties, and interface name"
    dump_result = class_dump_utils.dump_app(app)

    var_file_name  = 'dump_var_' + os.path.basename(app) or 'dump_var'
    cur_dir = os.getcwd()
    var_file_name = os.path.join(cur_dir, "tmp/" + pid + '/' + var_file_name)
    
    var_file = open(var_file_name + ".txt", "w")
    print >>var_file, dump_result #将strings内容输出到文件中

    interface = re.compile("^@interface (\w*).*")
    protocol = re.compile("@protocoli (\w*)")
    private = re.compile("^\s*[\w <>]* [*]?(\w*)[\[\]\d]*;")
    prop = re.compile("@property\([\w, ]*\) (?:\w+ )*[*]?(\w+); // @synthesize \w*(?:=([\w]*))?;")
    res = set()
    lines = dump_result.split("\n")
    wait_end = False 
    for line in lines:
        l = line.strip()
        if l.startswith("}"):
            wait_end = False
            continue
        if wait_end:
            r = private.search(l)
            if r:
                res.add(r.groups()[0])
            continue
        r = interface.search(l)
        if r:
            res.add(r.groups()[0])
            wait_end = True
            continue
        r = protocol.search(l)
        if r:
            res.add(r.groups()[0])
            wait_end = True
            continue
        r = prop.search(l)
        if r:
            m = r.groups()
            res.add(m[0])
            res.add("set" + m[0].title() + ":")
            #print "set" + m[0].title() + ":"
            if m[1] != None:
                # res.add("V"+m[1])
                res.add(m[1])
    return res
def get_app_methods(app, pid):
    '''
    info:获得app中的方法
    '''
    dump_result = class_dump_utils.dump_app(app)
    methods_file_name  = 'method_' + os.path.basename(app) or 'app_methods'
    cur_dir = os.getcwd()
    methods_file_name = os.path.join(cur_dir, "tmp/" + pid + '/' + methods_file_name)
    
    strings = open(methods_file_name + ".txt", "w")
    #print methods_file_name
    print >>strings, dump_result 
    #ret_methods = set()
    methods = api_helpers.extract(dump_result)
    #for m in methods:
    #    ret_methods = ret_methods.union(set(m["methods"]))
    #保留class_name信息
    return methods
Exemple #5
0
def get_app_methods(app, pid):
    '''
    info:获得app中的方法
    '''
    dump_result = class_dump_utils.dump_app(app)
    methods_file_name  = 'method_' + os.path.basename(app) or 'app_methods'
    cur_dir = os.getcwd()
    methods_file_name = os.path.join(cur_dir, "tmp/" + pid + '/' + methods_file_name)
    
    strings = open(methods_file_name + ".txt", "w")
    #print methods_file_name
    print >>strings, dump_result 
    #ret_methods = set()
    methods = api_helpers.extract(dump_result)
    #for m in methods:
    #    ret_methods = ret_methods.union(set(m["methods"]))
    #保留class_name信息
    return methods
def get_app_variables(app):
    "get all variables, properties, and interface name"
    dump_result = class_dump_utils.dump_app(app)

    interface = re.compile("^@interface (\w*).*")
    protocol = re.compile("@protocoli (\w*)")
    private = re.compile("^\s*[\w <>]* [*]?(\w*)[\[\]\d]*;")
    prop = re.compile(
        "@property\([\w, ]*\) (?:\w+ )*[*]?(\w+); // @synthesize \w*(?:=([\w]*))?;"
    )
    res = set()
    lines = dump_result.split("\n")
    wait_end = False
    for line in lines:
        l = line.strip()
        if l.startswith("}"):
            wait_end = False
            continue
        if wait_end:
            r = private.search(l)
            if r:
                res.add(r.groups()[0])
            continue
        r = interface.search(l)
        if r:
            res.add(r.groups()[0])
            wait_end = True
            continue
        r = protocol.search(l)
        if r:
            res.add(r.groups()[0])
            wait_end = True
            continue
        r = prop.search(l)
        if r:
            m = r.groups()
            res.add(m[0])
            res.add("set" + m[0].title() + ":")
            # print "set" + m[0].title() + ":"
            if m[1] != None:
                # res.add("V"+m[1])
                res.add(m[1])

    return res
def get_app_variables(app):
    "get all variables, properties, and interface name"
    dump_result = class_dump_utils.dump_app(app)
    
    interface = re.compile("^@interface (\w*).*")
    protocol = re.compile("@protocoli (\w*)")
    private = re.compile("^\s*[\w <>]* [*]?(\w*)[\[\]\d]*;")
    prop = re.compile("@property\([\w, ]*\) (?:\w+ )*[*]?(\w+); // @synthesize \w*(?:=([\w]*))?;")
    res = set()
    lines = dump_result.split("\n")
    wait_end = False 
    for line in lines:
        l = line.strip()
        if l.startswith("}"):
            wait_end = False
            continue
        if wait_end:
            r = private.search(l)
            if r:
                res.add(r.groups()[0])
            continue
        r = interface.search(l)
        if r:
            res.add(r.groups()[0])
            wait_end = True
            continue
        r = protocol.search(l)
        if r:
            res.add(r.groups()[0])
            wait_end = True
            continue
        r = prop.search(l)
        if r:
            m = r.groups()
            res.add(m[0])
            res.add("set" + m[0].title() + ":")
            # print "set" + m[0].title() + ":"
            if m[1] != None:
                # res.add("V"+m[1])
                res.add(m[1])

    return res
def get_dump_result(app):
    """
    get app class-dump result, and cache it
    """
    dump_result = class_dump_utils.dump_app(app)
    return dump_result
Exemple #9
0
def get_dump_macho_result(app_path):
    """
     dump app 可执行文件
    """
    result = class_dump_utils.dump_app(app_path)
    return result
Exemple #10
0
def get_dump_result(app):
    """
    get app class-dump result, and cache it
    """
    dump_result = class_dump_utils.dump_app(app)
    return dump_result