Exemple #1
0
    def __init__(self, themes, width, height, data, cursor, widget=None):
        super(BinViewMode, self).__init__()

        self.dataModel = data
        self.addHandler(self.dataModel)
        self.themes = themes

        self.width = width
        self.height = height

        self.cursor = cursor
        self.widget = widget

        self.refresh = True

        self.selector = TextSelection.DefaultSelection(themes, self)

        # background brush
        self.backgroundBrush = QtGui.QBrush(self.themes['background'])

        self.font = self.themes['font']

        # font metrics. assume font is monospaced
        self.font.setKerning(False)
        self.font.setFixedPitch(True)
        fm = QtGui.QFontMetrics(self.font)
        self._fontWidth = fm.width('a')
        self._fontHeight = fm.height()

        self.textPen = QtGui.QPen(self.themes['pen'], 0, QtCore.Qt.SolidLine)
        self.resize(width, height)

        self.Paints = {}
        self.newPix = None
        self.Ops = []
Exemple #2
0
    def __init__(self, width, height, data, cursor, widget=None, plugin=None):
        super(DisasmViewMode, self).__init__()

        self.plugin = plugin

        self.dataModel = data
        self.addHandler(self.dataModel)


        self.width = width
        self.height = height

        self.cursor = cursor
        self.widget = widget

        self.refresh = True

        self.selector = TextSelection.DefaultSelection(self)

        # background brush
        self.backgroundBrush = QtGui.QBrush(QtGui.QColor(0, 0, 128))

        # text font
        self.font = QtGui.QFont('Terminus', 11, QtGui.QFont.Light)

        # font metrics. assume font is monospaced
        self.font.setKerning(False)
        self.font.setFixedPitch(True)
        fm = QtGui.QFontMetrics(self.font)
        self._fontWidth  = fm.width('a')
        self._fontHeight = fm.height()

        self.textPen = QtGui.QPen(QtGui.QColor(192, 192, 192), 0, QtCore.Qt.SolidLine)
        self.resize(width, height)

        self.Paints = {}

        self.Ops = []
        self.newPix = None

        self.FlowHistory = []
        self.OPCODES = []

        self.selector = TextSelection.DisasmSelection(self)

        self.init_disassembler_engine()
Exemple #3
0
def get():
    _init()
    fileSelContext = FileSelection.get()
    textSelContext = TextSelection.get()

    sel_dict = textSelContext.getSelection()

    files = fileSelContext.getSelectedFiles()
    if files:
        sel_dict[ "files" ] = files

    return sel_dict
Exemple #4
0
    def __init__(self, width, height, data, cursor, widget=None, plugin=None):
        super(HexViewMode, self).__init__()

        self.dataModel = data
        self.width = width
        self.height = height

        self.refresh = True
        self.selector = TextSelection.HexSelection(self)
        self.widget = widget

        self.addHandler(self.dataModel)

        # background brush
        self.backgroundBrush = QtGui.QBrush(QtGui.QColor(0, 0, 128))

        # text font
        self.font = QtGui.QFont('Terminus', 11, QtGui.QFont.Light)

        # font metrics. assume font is monospaced
        self.font.setKerning(False)
        self.font.setFixedPitch(True)
        fm = QtGui.QFontMetrics(self.font)
        self._fontWidth = fm.width('a')
        self._fontHeight = fm.height()

        self.Special = string.ascii_letters + string.digits + ' .;\':;=\"?-!()/\\_'

        self.textPen = QtGui.QPen(QtGui.QColor(192, 192, 192), 1,
                                  QtCore.Qt.SolidLine)

        self.cursor = cursor

        self.HexColumns = [1, 4, 8, 16, 32, 36, 40]
        self.idxHexColumns = 3  # 32 columns

        self.newPix = None
        self.Ops = []
        self.gap = 5
        self.plugin = plugin

        self.highpart = True
        self.resize(width, height)

        self.ann_w = Annotation(self.widget, self)
Exemple #5
0
    def __init__(self, themes, width, height, data, cursor, widget=None):
        super(DisasmViewMode, self).__init__()

        self.themes = themes

        self.dataModel = data
        self.addHandler(self.dataModel)

        self.width = width
        self.height = height

        self.cursor = cursor
        self.widget = widget

        self.refresh = True

        # background brush
        self.backgroundBrush = QtGui.QBrush(self.themes['background'])

        # text font
        self.font = themes['font']

        # font metrics. assume font is monospaced
        self.font.setKerning(False)
        self.font.setFixedPitch(True)
        fm = QtGui.QFontMetrics(self.font)
        self._fontWidth = fm.width('a')
        self._fontHeight = fm.height()

        self.FlowHistory = []
        self.CACHE_OPCODES = []
        self.CACHE_IDX_OPCODES = {}
        self.CACHE_IDX_OPCODES_OFF = {}

        self.OPCODES = []

        vm_analysis = self.dataModel.current_class.CM.get_vmanalysis()

        methods = [i for i in self.dataModel.current_class.get_methods()]
        print methods
        methods = sorted(methods, key=lambda x: x.get_address(), reverse=True)

        offset = 0
        cnt = 0
        for method in methods:
            mx = vm_analysis.get_method(method)
            for DVMBasicMethodBlockInstruction in method.get_instructions():
                #for DVMBasicMethodBlock in mx.basic_blocks.gets():
                #    for DVMBasicMethodBlockInstruction in DVMBasicMethodBlock.get_instructions():
                ins = InstructionView(DVMBasicMethodBlockInstruction)
                self.CACHE_OPCODES.append(ins)
                self.CACHE_IDX_OPCODES[offset] = ins
                self.CACHE_IDX_OPCODES_OFF[offset] = cnt
                offset += ins.get_length()
                cnt += 1

        self.max_offset = offset

        print sorted(self.CACHE_IDX_OPCODES_OFF.keys())

        self.textPen = QtGui.QPen(self.themes['pen'], 0, QtCore.Qt.SolidLine)
        self.resize(width, height)

        self.Paints = {}

        self.Ops = []
        self.newPix = None

        self.selector = TextSelection.DisasmSelection(themes, self)
Exemple #6
0
def set( sel_dict ):
    _init()
    textSelContext = TextSelection.get()
    
    # Trying to "set" a file selection doesn't do anything.
    textSelContext.replaceSelection( sel_dict )