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
所以这里需要去符号化这四个内存地址单元:
- 先申请四个变量
p1=init_state.solver.BVS('p1',64)
p2=init_state.solver.

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

被折叠的 条评论
为什么被折叠?



