Esempio n. 1
0
    def work(self):
        def strip_tags(text):
            return re.sub(r'<[^><\(\)]*?>', '', text)
        proj = self.base_proj.openCopy()
        database = proj.database

        if self.scope == 'all':
            procs = sorted(database.getAll())
        elif self.scope == 'bank':
            procs = sorted(database.getAllInBank(self.bank))
        elif self.scope == 'proc':
            procs = [address.fromConventional(self.address)]
        else:
            raise AttributeError

        num_procs = len(procs)
        i = 0
        with open(self.filename, "wb") as f:

            for addr in procs:
                if self.requestCancel:
                    self.report(i, num_procs, "Cancelled")
                    return
                self.report(i, num_procs, "Analyzing proc: " + str(addr))

                renderer = HtmlRenderer(database)

                if self.mode == 'symbols':
                    if database.hasNameForAddress(addr):
                        renderer.add(str(addr) + ' ' + database.nameForAddress(addr))
                    else:
                        renderer.add(str(addr))
                elif self.mode == 'basic':
                    procedure.loadProcedureRange(proj, addr).render(renderer)
                elif self.mode == 'flow':
                    proj.flow.uncached(addr).render(renderer)
                else:
                    raise AttributeError

                print >>f, strip_tags(renderer.getContents())

                i += 1

        proj.close()
        self.report(i, num_procs, "Done!")
Esempio n. 2
0
 def load(self):
     p = self.url.split('/')
     self.addr = address.fromConventional(p[2])
     self.info = self.proj.database.procInfo(self.addr)
     self.proc = loadProcedureRange(self.proj, self.addr)
Esempio n. 3
0
 def load(self):
     p = self.url.split('/')
     self.addr = address.fromConventional(p[2])
     self.info = self.proj.database.procInfo(self.addr)
     self.proc = loadProcedureRange(self.proj, self.addr)