1 2import sys 3import os 4import time 5 6import angr 7from angr import options as so 8 9test_location = os.path.join(os.path.dirname(os.path.realpath(__file__)), '..', '..') 10 11def perf_unicorn_0(): 12 p = angr.Project(os.path.join(test_location, 'binaries', 'tests', 'x86_64', 'perf_unicorn_0')) 13 14 s_unicorn = p.factory.entry_state(add_options=so.unicorn | {so.STRICT_PAGE_ACCESS}, remove_options={so.LAZY_SOLVES}) # unicorn 15 16 sm_unicorn = p.factory.simulation_manager(s_unicorn) 17 18 start = time.time() 19 sm_unicorn.run() 20 elapsed = time.time() - start 21 22 print("Elapsed %f sec" % elapsed) 23 print(sm_unicorn.one_deadended) 24 25def perf_unicorn_1(): 26 p = angr.Project(os.path.join(test_location, 'binaries', 'tests', 'x86_64', 'perf_unicorn_1')) 27 28 s_unicorn = p.factory.entry_state(add_options=so.unicorn | {so.STRICT_PAGE_ACCESS}, remove_options={so.LAZY_SOLVES}) # unicorn 29 30 sm_unicorn = p.factory.simulation_manager(s_unicorn) 31 32 start = time.time() 33 sm_unicorn.run() 34 elapsed = time.time() - start 35 36 print("Elapsed %f sec" % elapsed) 37 print(sm_unicorn.one_deadended) 38 39if __name__ == "__main__": 40 if len(sys.argv) > 1: 41 for arg in sys.argv[1:]: 42 print('perf_' + arg) 43 globals()['perf_' + arg]() 44 45 else: 46 for fk, fv in globals().items(): 47 if fk.startswith('perf_') and callable(fv): 48 print(fk) 49 res = fv() 50