美文网首页
IMF-apifuzz.py

IMF-apifuzz.py

作者: Dosi_X | 来源:发表于2018-04-23 16:25 被阅读0次

    一个类和一个函数

    class ApiFuzz:
        def __init__(self):
            self.apis = {}
            self.apisets = {}
            self.apis = basic.load_apis()
    
        def load_apilog(self, log_fname, limit):#调用了log.py
            以rb方式打开log_fname:
                把数据以'\n'分开,把数据的第一个到倒数第二个存到data中
            如果data的长度不是偶数:
                丢掉最后一个元素
            idx = 0
            apilogs = []
            while idx < len(data) and idx < limit * 2:
                如果data[idx]的前两位是'IN':
                    il = utils.evaluate(data[idx][2:])
                否则:utils.error('load_apilog: parse IN error')
                如果data[idx+1]的前三位是'OUT':
                    ol = utils.evaluate(data[idx+1][3:])
                否则:utils.error(''load_apilog: parse OUT error)
                apilog = log.ApiLog(self.apis[il[0]], il, ol)
                apilogs.append(apilog)
                idx+=2
          return apilogs
    
        def make_model(self, fnames, limit, path, core):#调用了Model.py
            apisets = utils.multiproc(self.load_apilog_multi(limit), fnames, core)#把fnames里的log以多线程方式传给load_apilog_multi,返回列表apisets
            model = Model(apisets)
            以wb方式打开path:
                code = model.fuzz(const.CODE_HEAD, const.CODE_TAIL)
                把code写入文件
    
        def load_apilog_multi(self, limit):
            def func(fname):
                apiseq = self.load_apilog(fname, limit)
                返回apiseq
            返回func
    

    函数get_limit,这个limit指的是log里的api个数吗?

    def get_limit(logs):
        limit = None
        log遍历logs:
            以rb方式打开log:
            n = log以'\n'分开后的数组长度-1再除以2
            如果limit为空:
                limit = n
            如果limit不等于n:
                utils.error('Invalid triaged logs')
        返回limit
    

    main函数

    fuzz = ApiFuzz()
    把命令行参数1传给log_dir
    logs = []
    fname遍历os.listdir(log_dir):
        把文件名存进列表logs中
    limit = get_limit(logs)#不懂limit的含义
    把命令行参数3传给core
    fuzz.make_model(logs, limit, sys.argv[2], core)

    相关文章

      网友评论

          本文标题:IMF-apifuzz.py

          本文链接:https://www.haomeiwen.com/subject/xlqllftx.html