记录下angr初使用
这道题是很简单的逻辑
32位
我们提取opcode
(你可以用convert)
我是用的IDApython\
import idc
adr=0x00403040
step=4#距离
op=[]
n=10#多少个数据
while(n):
op.append(hex(idc.get_wide_dword(adr)))
adr+=step
n-=1
print(op)
然后我又下断点,提取每个"i"的值
import idaapi
# 假设我们有一个eax的值
eax_val = idaapi.get_reg_val("eax")
# 获取AL的值(eax的最低8位)
al_val = eax_val & 0xFF
# 打印AL的值
print(hex(al_val), end=',')
正向的话
对着操作就可以了
0x4,0x8,0x3,0x1,0x4,0x8,0x5,0x1,0x3,0x8,0xb,0x1,0xc,0x8,0x4,0x1,0x5,0x8,0x3,0x1,0xb,0x8,0xb,0x1,0x4,0x8,0x3,0x1,0x2,0x8,0x4,0x1,0xc,0x8,0xb,0x1,0x5,0x8,0x2,0x1,0x2,0x8,0x4,0x1,0x2,0x8,0x5,0x1,0x5,0x8,0x2,0x1,0x4,0x8,0x3,0x1,0x2,0x8,0xc,0x1,0x7,0x7,0x7,0x7,0x7,0x7,0x7,0x7,0x7,0x7,0x7,0x7,0x7,0x7,0x7
(只用15个就行)
_________________
angr方法::
[re]符号执行一把梭:2020网鼎杯青龙组re_signal_wp_网鼎杯re-signal真题-CSDN博客
我是看这个哥的博客学习的
这是我们想得到的
这是我们想避免的(加上比较有帮助,没有也行)
python脚本
import angr
p = angr.Project(r'C:\Users\ASUS\Desktop\signal.exe')
state = p.factory.entry_state()
simgr = p.factory.simgr(state)
simgr.explore(find=0x004017A5 ,avoid=0x004016E6)
flag = simgr.found[0].posix.dumps(0)[:15]
print(flag)
这是window上跑的,我window没完成
import angr
p = angr.Project('./signal.exe') #指定angr跑的程序
state = p.factory.entry_state() #新建一个SimState的对象,得到一个初始化到二进制入口函数的SimState对象。
simgr = p.factory.simgr(state) #创建simulation manager,angr的主要入口
simgr.explore(find=0x004017A5 ,avoid=0x004016E6) #争取跑到输出成功的地址,避免跑到输出wrong的地址
flag = simgr.found[0].posix.dumps(0)[:15] #得到flag
print(flag)
这是我在ubutu上用的
# 创建一个名为myenv的虚拟环境 python3 -m venv myenv
# 激活虚拟环境 source myenv/bin/activate
# 现在,在这个虚拟环境中安装angr pip install angr
这是配置的命令
然
就ok了
这个我理解的原来
应该就是爆破吧
我也看不懂,反正就是高级
_