как использовать ANGR BVS для поиска аргументов

Я хочу найти входное значение, которое выполняет TIFFGetField функция в двоичном файле opj_compress

двоичный файл opj_compress принимает файлы в качестве входных данных, например opj_compress -i inputfile -o outputfile

и если расширение входного файла - '.tif', функция будет выполнена, поэтому я хочу найти opj_compress -i in.tif -o out.j2k

Я пробовал этот код

proj = angr.Project('opj_compress', load_options={"auto_load_libs":False})
sym_arg1 = claripy.BVS("sym_arg1", 5*8)
sym_arg2 = claripy.BVS("sym_arg2", 5*8)
state = proj.factory.blank_state(addr=main_addr, args=argv)
simgr = proj.factory.simulation_manager(state)
simgr = simgr.explore(find = func_addr,enable_veritesting=True)
f = simgr.found[0]
result = f.solver.eval(argv[1], cast_to=bytes)
result = result[:result.index(b'\x00')]
print(result)

Я ожидал blah.tif, но это вызывает ошибку нехватки памяти. Какой лучший способ? Есть ли проблема с тем, что входным значением является имя файла, который необходимо открыть, а не строковое значение? Что я должен делать?

0 ответов

Другие вопросы по тегам