from angr import * p = Project("./happyVM",auto_load_libs=False) # file name s = p.factory.entry_state() sm = p.factory.simulation_manager(s) r = sm.explore(find = 0x400786,avoid = 0x40078D) # address print r.found[0].posix.dumps(0) # hgame{3Z_VM_W0NT_5T0P_UR_PR0GR355}
def AND1(c): '''constrain 1: printable''' return claripy.And(33 <= c , c <= 126)
def AND2(c): '''returns constraints s.t. c is printable''' return claripy.And(65 <= c , c <= 90)
def AND3(c): '''returns constraints s.t. c is printable''' return claripy.And(97 <= c , c <= 122)
p = angr.Project('prodkey')
verify_function = 0x00400c99 state = p.factory.blank_state(addr=verify_function)
length = 29 flag = claripy.BVS('flag', length*8)
for i in range(length): state.solver.add( AND1(flag.get_byte(i)) ) # state.solver.add( AND2(flag.get_byte(i)) ) # state.solver.add( AND3(flag.get_byte(i)) )
def AND1(c): '''constrain 1: printable''' claripy.And(65 <= c, c <= 90) claripy.And(95 <= c, c <= 125) return claripy.And(48 <= c, c <= 57)
p = angr.Project('happyVM')
mainaddr = 0x0040070E state = p.factory.blank_state(addr=mainaddr)
length = 34 flag = claripy.BVS('flag', length * 8)
for i in range(length): state.solver.add(AND1(flag.get_byte(i))) # state.solver.add( AND2(flag.get_byte(i)) ) # state.solver.add( AND3(flag.get_byte(i)) )