zoukankan      html  css  js  c++  java
  • Angr—造轮子

    from angr import *
    import claripy
    
    #装载一个项目,即进程不加载Lib
    p = Project("./Your_Process",auto_load_libs=False) 
    
    #创建一个SimState对象,即程序状态
    state=p.factory.entry_state()  
    
    #创建一个100*8(bit)的符号argv1
    argv1 = claripy.BVS("argv1",100*8) 
    
    #创建一个程序状态参数输入为argv1
    initial_state = p.factory.entry_state(args=["./Your_Process",argv1])
    
    #为上面对象创建模拟器
    sm=p.factory.simulation_manager(state) 
    
    #利用explore求解,find为到达,avoid为避免达到
    ##step()表示向下执行一个block(42bytes),step()函数产生active状态,表示该分支在执行中;
    ##run()表示运行到结束,run()函数产生deadended状态,表示分支结束;
    ##explore()可以对地址进行限制以减少符号执行遍历的路径,产生found状态.
    res=sm.explore(find=0x4005fb,avoid=[0x400607,0x400599]) 
    
    
    
    #打印找到的结果,found[1]为第二个解 
    #res.found[0].posix.dumps(0)代表该状态执行路径的所有输入 
    #res.found[0].posix.dumps(1)代表该状态执行路径的所有输出  
    print len(res.found) 
    if len(res.found) > 0:
        print res.found[0].posix.dumps(0)
  • 相关阅读:
    Linux学习路径 -- 1、文件目录操作命令
    第一次认识Postman
    接口测试的基础理论
    浅浅记录一哈HTTP接口
    Linux 的安装和使用
    QTP11 安装笔记:win10
    fiddler的下载安装与配置
    adb 下载安装
    maven 下载 安装 环境配置
    idea 2018.3.4安装破解
  • 原文地址:https://www.cnblogs.com/0xHack/p/11588110.html
Copyright © 2011-2022 走看看