ida打開
mian 函數 不能反匯編,往下翻有一處報紅,一看是花指令,還怪長,報紅的都nop后,全選按P重新生成函數
三百多個變量,也是不太可能一個個去解了,剛好前兩天簡單練了一下 angr (符號執行)
不對,看了一下別人的exp
import angr
import claripyp=angr.Project('./attachment',load_options={"auto_load_libs": False})
f=p.factory
state = f.entry_state(addr=0x400605)#設置state開始運行時的地址
flag = claripy.BVS('flag',8*32)#要求的內容有32個,用BVS轉成二進制給flag變量
state.memory.store(0x603055+0x300+5,flag)#因為程序沒有輸入,所以直接把字符串設置到內存
state.regs.rdx=0x603055+0x300
state.regs.rdi=0x603055+0x300+5#然后設置兩個寄存器sm = p.factory.simulation_manager(state)#準備從state開始遍歷路徑print("ready")sm.explore(find=0x401DAE)#遍歷到成功的地址if sm.found:print("sucess")x=sm.found[0].solver.eval(flag,cast_to=bytes)print(x)
else:print('error')
嗯,后面的還沒學到,要繼續學。
沒有輸入,所以確實需要直接設置到內存,什么BVS,設置寄存器都還不會
把 angr_ctf刷完應該差不多了。