Как ограничить поиск в программе angr

Скажем, у меня есть программа, которая пытается взломать флаг, как эта в Python, использующая angr:

      #!/usr/bin/env python

import angr
import claripy

FLAG_LEN = 15
STDIN_FD = 0
find_addr = 0x001016af
avoid_addr = 0x00100fab
base_addr = 0x00100000

proj = angr.Project("./runnable", main_opts={'base_addr': base_addr}) 
flag_chars = [claripy.BVS('flag_%d' % i, 8) for i in range(FLAG_LEN)]
flag = claripy.Concat( *flag_chars + [claripy.BVV(b'\n')]) 

state = proj.factory.full_init_state(
       args=['./runnable'],
       add_options=angr.options.unicorn,
       stdin=flag,
)


simgr = proj.factory.simulation_manager(state)
simgr.explore(find=find_addr, avoid=avoid_addr)


if (len(simgr.found) > 0):
   for found in simgr.found:
       print(found.posix.dumps(STDIN_FD))

Мои коды в настоящее время ничего не возвращают, но я знаю, что строка имеет длину 16, и я знаю, какие первые 6 символов секретной строки. Как я могу ограничить поиск этой секретной строки чем-то, что начинается с 6 знаков, которые я знаю?

0 ответов

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