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)
  • 相关阅读:
    初识DJango框架
    web框架基础
    前端——JavaScript
    前端——css(下)
    前端——css(上)
    前端——html
    spring注解
    spring boot 详解(1)spring boot +mybatis+mysql+jsp
    spring 事务控制
    maven pom文件管理
  • 原文地址:https://www.cnblogs.com/0xHack/p/11588110.html
Copyright © 2011-2022 走看看