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

文章目录

  • 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
  • 伪代码分析
  • 脚本
  • 验证

伪代码分析



这里利用函数名字来进行hook操作:

 check_symbol='check_equals_ORSDDWXHZURJRBDH'

然后把相应的hook替换函数进行申明:

 p.hook_symbol(check_symbol,mySimPro())

实现替换函数:

 class mySimPro(angr.SimProcedure):def run(self,user_input,user_input_length):angr_bvs=self.state.memory.load(user_input,user_input_length)desired='ORSDDWXHZURJRBDH'return claripy.If(desired==angr_bvs,claripy.BVV(1,32),claripy.BVV(0,32))

脚本

import angr
import sys
import claripy
def main(argv):bin_path=argv[1]p=angr.Project(bin_path)init_state=p.factory.entry_state()class mySimPro(angr.SimProcedure):def run(self,user_input,user_input_length):angr_bvs=self.state.memory.load(user_input,user_input_length)desired='ORSDDWXHZURJRBDH'return claripy.If(desired==angr_bvs,claripy.BVV(1,32),claripy.BVV(0,32))check_symbol='check_equals_ORSDDWXHZURJRBDH'p.hook_symbol(check_symbol,mySimPro())sm=p.factory.simgr(init_state)def is_good(state):return b'Good Job.' in state.posix.dumps(1)def is_bad(state):return b'Try again.' in state.posix.dumps(1)sm.explore(find=is_good,avoid=is_bad)if sm.found:found_state=sm.found[0]password=found_state.posix.dumps(0)print("Solution:{}".format(password.decode("utf-8")))else:raise Exception("Solution not found")if __name__=='__main__':main(sys.argv)

MSWKNJNAVTTOZMRY

验证

angr学习笔记(11)(SimProcedure)相关推荐

  1. SpringMVC:学习笔记(11)——依赖注入与@Autowired

    SpringMVC:学习笔记(11)--依赖注入与@Autowired 使用@Autowired 从Spring2.5开始,它引入了一种全新的依赖注入方式,即通过@Autowired注解.这个注解允许 ...

  2. Hadoop学习笔记—11.MapReduce中的排序和分组

    Hadoop学习笔记-11.MapReduce中的排序和分组 一.写在之前的 1.1 回顾Map阶段四大步骤 首先,我们回顾一下在MapReduce中,排序和分组在哪里被执行: 从上图中可以清楚地看出 ...

  3. HALCON 20.11:深度学习笔记(11)---目标检测

    HALCON 20.11:深度学习笔记(11)---目标检测 HALCON 20.11.0.0中,实现了深度学习方法. 本章讲解了如何使用基于深度学习的对象检测. 通过对象检测,我们希望在图像中找到不 ...

  4. 台大李宏毅Machine Learning 2017Fall学习笔记 (11)Convolutional Neural Network

    台大李宏毅Machine Learning 2017Fall学习笔记 (11)Convolutional Neural Network 本博客主要整理自: http://blog.csdn.net/x ...

  5. 华为HCIA-datacom 学习笔记11——AAA原理与配置

    华为HCIA-datacom 学习笔记11--AAA原理与配置 AAA原理与配置 1.AAA概述 认证(authentication):验证用户是否获得访问权,确定哪些用户可以访问网络 授权(auth ...

  6. 点云学习笔记11——VoxelNet算法+代码运行

    点云学习笔记11--VoxelNet算法+代码运行 一.算法分析 摘要 介绍 相关工作 1.2. 贡献 2.VoxelNet 2.1.特征学习网络 2.1.1 特征学习网络 二.代码复现 2.1.环境 ...

  7. 凸优化学习笔记 11:对偶原理 拉格朗日函数

    前面讲了凸优化问题的定义,以及一些常见的凸优化问题类型,这一章就要引入著名的拉格朗日函数和对偶问题了.通过对偶问题,我们可以将一些非凸问题转化为凸优化问题,还可以求出原问题的非平凡下界,这对复杂优化问 ...

  8. Python学习笔记11:函数修饰符

    Python学习笔记11:函数修饰符 Python有很多有趣的特性,其中函数修饰符就是一个. 我们在之前的那个web应用示例中用过如下写法: @web.route('/log') @符号后边的,就是一 ...

  9. MIPS汇编语言学习笔记11:整数减法 (mult方法)

    任务:整数相乘,并输出打印. 代码: .dataintA: .word 5intB: .word 2 .textli $v0, 1lw $a1, intAlw $a2, intBmult $a1, $ ...

  10. 从零写一个具有IOC-AOP-MVC功能的框架---学习笔记---11. MVC功能之http请求处理器的编写---简易框架最后一公里!

    从零写一个具有IOC-AOP-MVC功能的框架-学习笔记 专栏往期文章链接: IOC功能相关章节: 从零写一个具有IOC-AOP-MVC功能的框架-学习笔记-01.项目初始化 从零写一个具有IOC-A ...

最新文章

  1. (转)iOS开发资源:推送通知相关开源项目--PushSharp、APNS-PHP以及Pyapns等
  2. oracle database 9i/10g/11g 编程艺术 源代码下载
  3. 大数据时代第一部分思维导图_大数据时代总结思维导图模板分享
  4. 求助:一个物理专业的在做GPU的人
  5. hdu 5062(dp)
  6. 研发和人力资源发展模式对比研究
  7. html5游戏制作入门系列教程(五)
  8. python 复数幂_python基础学习——运算符(1)
  9. JS开发之Factory(工厂)模式解析
  10. 性别政治和零和博弈:滴滴事件教会了我们什么?
  11. 百度、阿里、美团、头条…论剑AI,这里有开发者想知道的未来
  12. ssm项目之第三方QQ登陆
  13. React 问题总结
  14. scrcpy-将Android手机屏幕实时投射到电脑
  15. 一文搞懂 php 中的 DI 依赖注入
  16. 狼人杀暂时未连接到语音服务器,狼人杀iOS10用户无法连接到服务器 无法更新解决办法...
  17. 微型计算机硬件配置主要包括,2012年会计证考试微型计算机的基本构成3
  18. 一篇文章搞懂Django项目创建运行
  19. 长铗:搭积木无法建筑DeFi摩天楼,Bytom用工程思维构建MOV宇宙
  20. java输出九乘九乘法表

热门文章

  1. 成功解决ERROR: Could not install packages due to an EnvironmentError: [Errno 28] No space left on device
  2. CV之API:利用Face++的人体识别接口,实现摄像头实时手势识别
  3. 成功解决 keras\callbacks.py:999: UserWarning: `epsilon` argument is deprecated and will be removed, use
  4. ML之NN:利用神经网络的BP算法解决XOR类(异或非)问题(BP solve XOR Problem)
  5. Py:python利用easygui实现最简单GUI带你学习区块链技术的发展和由来
  6. 未完全关闭数据库导致ORA-01012: not logged的解决
  7. 元素、属性、标题、段落、文本格式化
  8. 洛谷 - P1433 - 吃奶酪 - dfs
  9. python-day2~3
  10. 37.递推:Pell数列