1. github下载angr项目
点击前往github
2. angr安装
- 网上的教程都是要安装什么虚拟环境
- 我也安装了
- 但是可能因为我是初学者
- 不知道这个虚拟环境有什么用
- 我直接在shell中用pip3安装之后也能正常使用
- 没发现什么不同
pip install angr
pip3 install angr3
3. IDA静态分析
int __cdecl main(int argc, const char **argv, const char **envp)
{
int i;
char s1[9];
unsigned int v6;
v6 = __readgsdword(0x14u);
printf("Enter the password: ");
__isoc99_scanf("%8s", s1);
for ( i = 0; i <= 7; ++i )
s1[i] = complex_function(s1[i], i);
if ( !strcmp(s1, "JACEJGCS") )
puts("Good Job.");
else
puts("Try again.");
return 0;
}
4. angr使用说明
函数 | 说明 |
---|
p = angr.Project() | 开启一个进程 |
p.factory.entry_state() | 设置初始化状态 |
p.factory.simulation_manager(init_state) | 创建模拟管理器 |
sm.explore(find=0x08048678) | find指向程序目的地,执行后angr会使用符号向量查找到达目的地的方式 |
found_state = sm.found[0] | 记录查找结果 |
found_state.posix.dumps(0) | 查看标准输入的内容 |
found_state.posix.dumps(1) | 查看标准输出的内容 |
- 我们最终要找到的地址是Good Job所在的地址
- 所有我们把find设置为0x8048678
5. exp
import angr
p = angr.Project('./00_angr_find')
init_state = p.factory.entry_state()
sm = p.factory.simulation_manager(init_state)
sm.explore(find=0x08048678)
found_state = sm.found[0]
print(found_state.posix.dumps(0))
print(found_state.posix.dumps(1))
6.运行结果