Esempio n. 1
0
            unsuportedSemantics[mnemonic] += 1
        else:
            print(instruction)
            unsuportedSemantics.update({mnemonic: 1})
    return


def cafter(instruction):
    Triton.reset()
    return


def cfini():
    l = list(unsuportedSemantics.items())
    l.sort(key=itemgetter(1), reverse=True)
    print('=============================================================')
    print('Unsuported Semantics')
    print('=============================================================')
    for i in l:
        print('%s: %d' %(i[0].lower(), i[1]))
    print('=============================================================')
    return


if __name__ == '__main__':
    startAnalysisFromEntry()
    insertCall(cbefore, INSERT_POINT.BEFORE)
    insertCall(cafter,  INSERT_POINT.AFTER)
    insertCall(cfini,   INSERT_POINT.FINI)
    runProgram()
Esempio n. 2
0
        else:
            print instruction
            unsuportedSemantics.update({mnemonic: 1})
    return


def cafter(instruction):
    Triton.resetEngines()
    return


def cfini():
    l = unsuportedSemantics.items()
    l.sort(key=itemgetter(1), reverse=True)
    print '============================================================='
    print 'Unsuported Semantics'
    print '============================================================='
    for i in l:
        print '%s: %d' %(i[0].lower(), i[1])
    print '============================================================='
    return


if __name__ == '__main__':
    Triton.setArchitecture(ARCH.X86_64)
    startAnalysisFromEntry()
    insertCall(cbefore, INSERT_POINT.BEFORE)
    insertCall(cafter,  INSERT_POINT.AFTER)
    insertCall(cfini,   INSERT_POINT.FINI)
    runProgram()
Esempio n. 3
0
            if nativeAddress != astAddress:
                good = False
                print("[%sKO%s] %#x: %s (%smemory error%s)" %
                      (RED, ENDC, instruction.getAddress(),
                       instruction.getDisassembly(), RED, ENDC))
                print("     Native address   : %016x" % (nativeAddress))
                print("     Symbolic address : %016x" % (astAddress))

    if len(instruction.getSymbolicExpressions()) == 0:
        print("[%s??%s] %#x: %s" % (BLUE, ENDC, instruction.getAddress(),
                                    instruction.getDisassembly()))
        return

    if good:
        print("[%sOK%s] %#x: %s" % (GREEN, ENDC, instruction.getAddress(),
                                    instruction.getDisassembly()))
        return
    else:
        #time.sleep(2)
        sys.exit(-1)

    return


if __name__ == '__main__':
    Pintool.startAnalysisFromEntry()
    Pintool.startAnalysisFromSymbol('check')
    Pintool.insertCall(cafter, Pintool.INSERT_POINT.AFTER)
    Pintool.insertCall(sbefore, Pintool.INSERT_POINT.BEFORE_SYMPROC)
    Pintool.runProgram()
Esempio n. 4
0
    for op in instruction.getOperands():
        if op.getType() == OPERAND.MEM:
            nativeAddress = op.getAddress()
            astAddress = op.getLeaAst().evaluate()
            if nativeAddress != astAddress:
                good = False
                print "[%sKO%s] %#x: %s (%smemory error%s)" %(RED, ENDC, instruction.getAddress(), instruction.getDisassembly(), RED, ENDC)
                print "     Native address   : %016x" %(nativeAddress)
                print "     Symbolic address : %016x" %(astAddress)

    if len(instruction.getSymbolicExpressions()) == 0:
        print "[%s??%s] %#x: %s" %(BLUE, ENDC, instruction.getAddress(), instruction.getDisassembly())
        return

    if good:
        print "[%sOK%s] %#x: %s" %(GREEN, ENDC, instruction.getAddress(), instruction.getDisassembly())
        return
    else:
        #time.sleep(2)
        pass

    return


if __name__ == '__main__':
    Pintool.startAnalysisFromEntry()
    #Pintool.startAnalysisFromSymbol('check')
    Pintool.insertCall(cafter,  Pintool.INSERT_POINT.AFTER)
    Pintool.insertCall(sbefore, Pintool.INSERT_POINT.BEFORE_SYMPROC)
    Pintool.runProgram()