angr学习笔记(6)(内存地址单元符号化)

本文详细介绍使用angr工具进行符号执行的过程,包括如何符号化内存单元、设置条件及求解变量等内容。通过具体示例讲解了如何初始化状态、设置内存变量并最终找到程序中的正确路径。

angr系列

00_angr_find

01_angr_avoid

02_angr_find_condition

03_angr_symbolic_registers

04_angr_symbolic_stack

05_angr_symbolic_memory

06_angr_symbolic_dynamic_memory

07_angr_symbolic_file

08_angr_constraints

09_angr_hooks

10_angr_simprocedures

13_angr_static_binary

分析伪代码

在这里插入图片描述

.text:080485C0 push    offset user_input ; s
.text:080485C5 call    _memset
.text:080485CA add     esp, 10h
.text:080485CD sub     esp, 0Ch
.text:080485D0 push    offset aEnterThePasswo ; "Enter the password: "
.text:080485D5 call    _printf
.text:080485DA add     esp, 10h
.text:080485DD sub     esp, 0Ch
.text:080485E0 push    offset unk_A1BA1D8
.text:080485E5 push    offset unk_A1BA1D0
.text:080485EA push    offset unk_A1BA1C8
.text:080485EF push    offset user_input
.text:080485F4 push    offset a8s8s8s8s ; "%8s %8s %8s %8s"
.text:080485F9 call    ___isoc99_scanf
.text:080485FE add     esp, 20h
.text:08048601 mov     [ebp+var_C], 0
.text:08048608 jmp     short loc_8048637

一个字符是一字节,8个字符也就是8字节,也就是64位。需要符号化的内存单元地址为:

.text:080485E0 push    offset unk_A1BA1D8
.text:080485E5 push    offset unk_A1BA1D0
.text:080485EA push    offset unk_A1BA1C8
.text:080485EF push    offset user_input

所以这里需要去符号化这四个内存地址单元

  1. 先申请四个变量
 	p1=init_state.solver.BVS('p1',64)  
    p2=init_state.solver.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寻梦&之璐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值