Exemplo n.º 1
0
    def __init__(self, bar, BinInfo, FuncInfo, BBInfo):
        Functions.__init__(self, bar, BinInfo, FuncInfo)
        self.BasicBlockLayout = []
        self.lookupByVA = dict()

        # Unpack the basic block information
        self.BBSize, self.BBFixupCnt, self.BBFallThrough, self.BBOffsetFromSection, \
                self.BBSec, self.BBPadding, self.BBAssembleType = BBInfo
        self.numFixups = sum(self.BBFixupCnt)
        self.numBasicBlocks = len(self.BBSize)

        # binpang, add
        self.BBSecVA = [self.secVA[sec_name] for sec_name in self.BBSec]

        # BB X belongs to Func Y; dict(X:Y)
        self.BB2Func = util.buildLookupTbl(self.funcBBCnt)

        # self.BBOffset = util.getOffset(self.BBSize)
        self.BBOffsetFromFunc = util.getOffsetFromAccordingOffset(
            self.funcBBCnt, self.BBOffsetFromSection)
        self.BBOffsetFromBase = util.computeOffsetFromBase(
            self.BBOffsetFromSection, self.BBSecVA, self.base)
        self.BBVA = util.computeRelaOffset(self.BBOffsetFromBase, self.base)

        self.generateBasicBlockList(bar)
Exemplo n.º 2
0
    def __init__(self, bar, BinInfo, FuncInfo):
        BinaryInfo.__init__(self, BinInfo)
        self.FunctionLayout = []
        self.lookupByVA = dict()

        # Unpack the function information
        self.funcSize, self.funcBBCnt, self.funcOffsetFromSection, self.funcSec, self.funcType = FuncInfo
        self.numBBs = sum(self.funcBBCnt)
        self.numFunctions = len(self.funcSize)

        # binpang, add
        self.funcSecVA = [self.secVA[sec_name] for sec_name in self.funcSec]

        # Func X belongs to Obj Y; dict(X:Y)
        # self.func2Obj = util.buildLookupTbl(self.objFuncCnt)

        #self.funcOffset = util.getOffset(self.funcSize)
        #self.funcOffsetFromObj = util.getOffsetFromAccordingOffset(self.objFuncCnt, self.funcOffsetFromSection)
        # self.funcOffsetFromSection = util.computeRelaOffset(self.funcOffset, self.reorderObjStartFromText)
        self.funcOffsetFromBase = util.computeOffsetFromBase(
            self.funcOffsetFromSection, self.funcSecVA, self.base)
        self.funcVA = util.computeRelaOffset(self.funcOffsetFromBase,
                                             self.base)

        self.generateFunctionList(bar)
Exemplo n.º 3
0
    def __init__(self, bar, BinInfo, ObjInfo):
        BinaryInfo.__init__(self, BinInfo)
        self.objectLayout = []
        self.lookupByVA = dict()

        # Unpack the object information
        self.objSize, self.objFuncCnt, self.srcKind = ObjInfo
        self.numObjects = len(self.objSize)
        self.numFuncs = sum(self.objFuncCnt)

        self.objOffset = util.getOffset(self.objSize)
        self.objOffsetFromSection = util.computeRelaOffset(self.objOffset, self.reorderObjStartFromText)
        self.objOffsetFromBase = util.computeRelaOffset(self.objOffsetFromSection, self.baseOffsetFromFile)
        self.objVA = util.computeRelaOffset(self.objOffsetFromBase, self.base)

        self.generateObjectList(bar)
Exemplo n.º 4
0
    def __init__(self, bar, BinInfo, ObjInfo, FuncInfo):
        Objects.__init__(self, bar, BinInfo, ObjInfo)
        self.FunctionLayout = []
        self.lookupByVA = dict()
    
        # Unpack the function information
        self.funcSize, self.funcBBCnt = FuncInfo
        self.numBBs = sum(self.funcBBCnt)
        self.numFunctions = len(self.funcSize)

        # Func X belongs to Obj Y; dict(X:Y)
        self.func2Obj = util.buildLookupTbl(self.objFuncCnt)

        self.funcOffset = util.getOffset(self.funcSize)
        self.funcOffsetFromObj = util.getOffsetFrom(self.objFuncCnt, self.funcSize)
        self.funcOffsetFromSection = util.computeRelaOffset(self.funcOffset, self.reorderObjStartFromText)
        self.BBOffsetFromBase = util.computeRelaOffset(self.funcOffsetFromSection, self.baseOffsetFromFile)
        self.funcVA = util.computeRelaOffset(self.BBOffsetFromBase, self.base)

        self.generateFunctionList(bar)
Exemplo n.º 5
0
    def __init__(self, bar, BinInfo, ObjInfo, FuncInfo, BBInfo):
        Functions.__init__(self, bar, BinInfo, ObjInfo, FuncInfo)
        self.BasicBlockLayout = []
        self.lookupByVA = dict()

        # Unpack the basic block information
        self.BBSize, self.BBFixupCnt, self.BBFallThrough = BBInfo
        self.numFixups = sum(self.BBFixupCnt)
        self.numBasicBlocks = len(self.BBSize)

        # BB X belongs to Func Y; dict(X:Y)
        self.BB2Func = util.buildLookupTbl(self.funcBBCnt)

        self.BBOffset = util.getOffset(self.BBSize)
        self.BBOffsetFromFunc = util.getOffsetFrom(self.funcBBCnt, self.BBSize)
        self.BBOffsetFromObj = util.getOffsetFrom(self._getObjBBCnt(), self.BBSize)
        self.BBOffsetFromSection = util.computeRelaOffset(self.BBOffset, self.reorderObjStartFromText)
        self.BBOffsetFromBase = util.computeRelaOffset(self.BBOffsetFromSection, self.baseOffsetFromFile)
        self.BBVA = util.computeRelaOffset(self.BBOffsetFromBase, self.base)

        self.generateBasicBlockList(bar)