【【反调试】花指令patch与原理分析】https://www.bilibili.com/video/BV1mK411A75G?vd_source=7ad69e0c2be65c96d9584e19b0202113
B站这个视频和这道题的花指令一样的
这个call百分之一万是辣鸡
重编译u他
经典辣鸡花指令
nop掉
下面一共有四处,一样的操作
然后回到main函数按p重新编译就正常了
进来之后就是一片的机械操作
这道题明显是angr的使用
但是这道题怎么存入数据我是真的不会
import angr
import claripy
p = angr.Project("./fun", load_options={"auto_load_libs": False})
f = p.factory
state = f.entry_state(addr=0x400605)
flag = claripy.BVS("flag", 8*32)
state.memory.store(0x300+5, flag)
state.regs.rdx = 0x300
state.regs.rdi = 0x300+10
sm = p.factory.simulation_manager(state)
print("[+] init ok")
sm.explore(find=0x401DAE)
if sm.found:
print("[+] found!")
x = sm.found[0].solver.eval(flag, cast_to=bytes)
print(x)
两个寄存器
地址的话,随便找个可以写的数据段就行(可以可以慢慢试,我就是试的)
但是这个rdi一定要写进去
但是我也不是很懂寄存器和地址这一步,如果有大哥知道麻烦给我讲讲