针对angr提供的练习题,现在进行求解10_angr_simprocedures,它是关于Hooking Symbols的问题,需要使用angr求解出正确密码。但是需要提供排除地址以减少路径求解时间。
具体代码如下所示

import angr
import claripy
import sysdef main(argv):path_to_binary = argv[1]project = angr.Project(path_to_binary)initial_state = project.factory.entry_state()#定义一个类,它继承angr.SimProcedureclass ReplacementCheckEquals(angr.SimProcedure):#用此函数进行替换def run(self, to_check, length):user_input_buffer_address = to_checkuser_input_buffer_length = length#使用self.state找到SimProcedure中的系统状态,从该状态的内存中提取出数据user_input_string = self.state.memory.load(user_input_buffer_address,user_input_buffer_length)check_against_string = 'ORSDDWXHZURJRBDH'#claripy.If(expression, ret_if_true, ret_if_false)的含义是:如果表达式expression为真则输出ret_if_true,否则输出ret_if_false return claripy.If(user_input_string==check_against_string, claripy.BVV(0,32),claripy.BVV(1,32))#使用具体符号名定位到需要hook的函数位置check_equals_symbol = 'check_equals_ORSDDWXHZURJRBDH' # :stringproject.hook_symbol(check_equals_symbol, ReplacementCheckEquals())simulation = project.factory.simgr(initial_state)def is_successful(state):stdout_output = state.posix.dumps(sys.stdout.fileno())return b'Good Job.' in stdout_outputdef should_abort(state):stdout_output = state.posix.dumps(sys.stdout.fileno())return b'Try again.' in stdout_outputsimulation.explore(find=is_successful, avoid=should_abort)if simulation.found:solution_state = simulation.found[0]solution = solution_state.posix.dumps(sys.stdin.fileno())print('solution is: {0}'.format(solution.decode('utf-8')))else:raise Exception('Could not find the solution')if __name__ == '__main__':main(sys.argv)

使用Project.hook_symbol通过符号名来Hook函数所有的调用地址,从而实现代码替换即使用自定义代码来替代check_equals_ORSDDWXHZURJRBDH函数。

下面验证实验结果
执行刚刚写好的程序,保存为scaffold10.py,并将其与10_angr_simprocedures放于同一文件夹中,具体如下图所示。

再执行10_angr_simprocedures,然后需要我们输入angr刚刚求解出的密码,结果为Good Job。

至此,求解10_angr_simprocedures已全部完成。

Angr安装与使用之使用篇(十一)相关推荐

  1. 详解centos7虚拟机安装elasticsearch5.0.x-安装篇(自己做测试了,es启动有错误可以在这上面找)

    本篇文章主要介绍了centos7虚拟机安装elasticsearch5.0.x-安装篇,具有一定的参考价值,感兴趣的小伙伴们可以参考一下. centos7虚拟机安装elasticsearch5.0.x ...

  2. 安装加密中间件 crypto - 命令篇

    安装加密中间件 crypto - 命令篇 安装加密中间件 -- crypto 项目需要,有时候需要安装中间加密件,比如 crypto 一. cmd命令: 先cd到根目录:cd ...略 ...\boo ...

  3. MongoDB安装中断问题 - 踩坑篇

    中断了安装?再重新安装已经报错? 是不是会弹框报错:"An installation for MongoDB 3.6.9 2008R2Plus SSL is currently suspen ...

  4. jsp的安装,何志强篇

    <script type="text/javascript"> google_ad_client = "pub-8800625213955058"; ...

  5. asp功放怎么装_汽车音响安装全攻略--功放篇

    汽车音响安装全攻略--功放篇 安装功放比安装接收机或扬声器更需要一些技巧,但并不意味着不可操作.事先了解注意事项,可以减少发生故障的机率. 安 装 第一步:作好准备工作 功放与接收机间必须保持至少90 ...

  6. venue 11 pro linux,平板垃圾佬 篇十一:【个人叨叨向】目前阶段的笔记本选择趋势和大众真香型号推荐...

    平板垃圾佬 篇十一:[个人叨叨向]目前阶段的笔记本选择趋势和大众真香型号推荐 2020-01-27 14:48:46 112点赞 446收藏 107评论 创作立场声明:捡垃圾一直爽,一直捡垃圾一直爽. ...

  7. 使用anaconda安装pytorch——看这一篇就行了

    开门见山 我的电脑里有python编译器 如何装pytorch框架? 答--用anaconda进行安装 翻阅了n多的文章 发现一个真理 看得越多 越容易出问题 那这里我针对每一个需要实现的目的 只放一 ...

  8. [网络安全自学篇] 十一.虚拟机VMware+Kali安装入门及Sqlmap普及

    这是作者的系列网络安全自学教程,主要是关于网安工具和实践操作的在线笔记,特分享出来与博友共勉,希望您们喜欢,一起进步.前文分享了Web漏洞及端口扫描之Nmap.ThreatScan和DirBuster ...

  9. Fedora/Redhat 在线安装更新软件包,yum 篇 ── 给新手指南 (转载)

    源地址:http://fedora.linuxsir.org/main/?q=node/31 ==================================================== ...

  10. 块存储服务(Cinder)安装配置,这一篇就够了!

    本实验是一个比较综合的实验,需要结合前面所学的OpenStack基础环境安装配置,身份认证服务(Keystone)安装配置等一些基础的实验来做这个块存储服务(Cinder)安装配置实验.为了更好地理解 ...

最新文章

  1. 简单的路由协议分析和配置
  2. 读书笔记 | 墨菲定律(一)
  3. 解密module_init幕后的故事
  4. 掌握ADO.NET的十个热门技巧
  5. 2018年第九届省赛C/C++A组第4题——第几个幸运数
  6. 冒泡排序-----选择排序1-2
  7. flexible.js淘宝移动端rem自适应用法
  8. 你见过哪些令你瞠目结舌的 JavaScript 代码技巧?
  9. Square(hdu 1511)
  10. 新兴IT企业特斯拉(二)——特斯拉的诞生
  11. 分布式ID生成器解决方案
  12. 服务器系统 usb不识别u盘,无法识别的usb设备怎么办(实测成功解决U盘修复教程)...
  13. 计算机应用技术专业与计算机网络技术专业的区别
  14. 如何面对科技性失业?
  15. 非安全黑客手册0911PDF电子书 下载
  16. JimuReport 1.4.0-beta 里程碑版本发布,免费的低代码报表
  17. 项目生命周期管理-瀑布模型
  18. Latex表格换行垂直居中对齐
  19. 云服务器安装MYSQL
  20. 中国中产阶级“被中产”?

热门文章

  1. [导入]意外的,博客被点名了。参与游戏吧。
  2. 数据库事务的特性及其实现原理
  3. 段上的等待事件 —— enq: HW - contention(oracle)
  4. mapinfo开发资料(转)
  5. python爬虫学习整理——爬虫入门(1)
  6. 采用Eclipse中间Maven构建Web项目错误(一)
  7. Sicily 1049. Mondriaan 解题报告
  8. 【入门经典】准备工作
  9. 正则表达式匹配EXCEL地址字符串
  10. Android常用组件