用Python库angr来分析二进制文件

最近在学习二进制分析,了解到二进制加载器,于是跟着AI一起,学习了这个python可用的二进制加载器分析器angr,并写了这篇介绍的文章,儿童卡通风格,哈哈。


亲爱的代码侠客们,今天我们要一起踏上探索二进制文件神秘世界的冒险。

忘掉那些复杂的汇编语言教程,收起你的十六进制编辑器,让我们拥抱angr,一个神奇的Python库,它能让你像遛狗一样遛二进制!

1. 二进制文件的迷宫

闪光的ELF:二进制文件简介

二进制文件就像是那些神秘的迷宫,堆满了宝藏(数据)和陷阱(指令)。它们是程序的灵魂,以一种只有机器能够理解的方式存在。

探险的理由:为何需要分析二进制文件

分析二进制文件,就像是阅读古老的卷轴,解锁前人的智慧。无论是软件安全分析,病毒研究,还是仅仅出于好奇,了解二进制文件总能让你获得超凡的力量。

2. angr的魔法书

angr,你的魔法棒

angr是一本强大的魔法书,它使用Python的力量来分析二进制文件。它能自动化许多复杂的分析任务,让你轻松走出迷宫。

解析咒语:angr可以做些什么

angr能够执行符号执行,控制流分析,数据依赖性分析等一系列强大的咒语。它能帮助你找到隐藏的路径,解开复杂的谜题。

3. 施法前的准备

施法前的冥想:准备工作

在你开始施法之前,你需要准备好你的环境。确保你的系统中安装了Python和一些必要的工具。

咏唱魔法:安装过程

安装angr就像咏唱一个简单的咒语:

pip install angr

一行命令,世界就变了。

如果安装不成功,还可以加上两个注释--break-system-packages--trusted-host如下:

python3 -m pip install angr --break-system-packages --trusted-host mirrors.aliyun.com

4. angr的咒语实践

基础咒语:加载与分析

首先,让我们学习如何打开二进制文件的大门。在angr的世界里,这是非常简单的

这行代码就如同施了一个让门缓缓打开的咒语,让你得以窥视二进制文件的奥秘。

实战咒语:实际操作

找到特定函数在代码迷宫中的位置是一项看似艰巨的任务,但有了angr,这不过是举手之劳。让我们来看一个简单的例子,使用angr的符号执行功能来揭示特定函数的秘密。

首先,我们需要创建一个初始状态,这个状态是程序执行的起点:

initial_state = project.factory.entry_state()

紧接着,我们构造一个SimulationManager,这是我们的指挥棒,它能够指挥状态如何转移:

sim_manager = project.factory.simulation_manager(initial_state)

现在,我们向SimulationManager下达寻找命令,它会在二进制文件的迷宫中寻找通往目标函数的路径:

# 假设我们要找的函数地址是0x400710 sim_manager.explore(find=0x400710)

如果一切顺利,如同法术成功施展,我们将在found列表中获取到达目标的状态:

if sim_manager.found: found_state = sim_manager.found[0] print("Eureka! We've found the function!") else: print("Alas! The function remains elusive.")
高级法术:高级技巧

随着你对angr的了解加深,你将能够施展更多高级咒语。比如使用钩子(hooking)来修改函数的行为,利用路径裁剪(path pruning)技术来优化搜索效率,甚至是用符号执行来自动化漏洞挖掘。

在这个神秘的二进制世界里,angr就是你的魔杖,等待你去发现更多的可能。所以,加油,勇敢的探险家,让我们继续在代码的迷宫中探索前行!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/421880.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CloudCanal x Hive 构建高效的实时数仓

简述 CloudCanal 最近对于全周期数据流动进行了初步探索,打通了Hive 目标端的实时同步,为实时数仓的构建提供了支持,这篇文章简要做下分享。 基于临时表的增量合并方式基于 HDFS 文件写入方式临时表统一 Schema任务级的临时表 基于临时表的…

蓝桥杯算法题汇总

一.线性表:链式 例题:旋转链表 二.栈: 例题:行星碰撞问题 三.队列 三.数组和矩阵 例题:

蓝灵娥驾到!国漫小师妹的魅力大揭晓!

在国漫中,有非常多出众的小师妹形象,如同璀璨的星辰,以其独特的魅力吸引着无数观众的目光。她们形象各异,或纯真善良,或勇敢智慧,或刁蛮任性,其魅力经久不衰。今天,就让我们以玄机科…

网络编程 io_uring

io_uring 1、概述 io_uring是Linux(内核版本在5.1以后)在2019年加入到内核中的一种新型的异步I/O模型; io_uring使用共享内存,解决高IOPS场景中的用户态和内核态的切换过程,减少系统调用;用户可以直接向…

2024年腾讯云会员老用户续费优惠活动,可领代金券

腾讯云优惠活动2024新春采购节活动上线,云服务器价格已经出来了,云服务器61元一年起,配置和价格基本上和上个月没什么变化,但是新增了8888元代金券和会员续费优惠,腾讯云百科txybk.com整理腾讯云最新优惠活动云服务器配…

数电实验之流水灯、序列发生器

最近又用到了数电实验设计的一些操作和设计思想,遂整理之。 广告流水灯 实验内容 用触发器、组合函数器件和门电路设计一个广告流水灯,该流水灯由 8 个 LED 组成,工作时始终为 1 暗 7 亮,且这一个暗灯循环右移。 1) 写出设计过…

MYSQL--JDBC优化

一.JDBC优化: 优化前提: 有时候我们并不清楚某些表当中一共有多少列,以及这些列的数据类型,这个时候我们就需要提前通过一些方法提前了解到这些数据,从而更好的进行输出 具体语句: package cn.jdbc;import java.sql.*;public class JDBCDEmo1 {public static void main(String…

MySQL篇—执行计划介绍(第二篇,总共三篇)

☘️博主介绍☘️: ✨又是一天没白过,我是奈斯,DBA一名✨ ✌✌️擅长Oracle、MySQL、SQLserver、Linux,也在积极的扩展IT方向的其他知识面✌✌️ ❣️❣️❣️大佬们都喜欢静静的看文章,并且也会默默的点赞收藏加关注❣…

力扣SQL50 大的国家 查询

Problem: 595. 大的国家 Code select name,population,area from World where area > 3000000 or population > 25000000;

JS:原型与原型链(附带图解与代码)

一、原型 写在前面: 任何对象都有原型。 函数也是对象,所以函数也有原型。 1.什么是原型 在 JavaScript 中,对象有一个特殊的隐藏属性 [[Prototype]],它要么为 null,要么就是对另一个对象的引用,该对象…

数据可视化原理-腾讯-热力图

在做数据分析类的产品功能设计时,经常用到可视化方式,挖掘数据价值,表达数据的内在规律与特征展示给客户。 可是作为一个产品经理,(1)如果不能够掌握各类可视化图形的含义,就不知道哪类数据该用…

特殊设计模式

▶实现一个类,不能被拷贝 ▶实现一个类,只能在堆上创建 ❗实现一个类,只能创建在栈上 ❗设计一个不能继承的类 ❗单例模式——一个类只能生成一个对象   ❔饿汉模式——在每次程序启动都会自动生成一个对象   ❓懒汉模式——在第一次需要…

【数学建模获奖经验】2023第八届数维杯数学建模:华中科技大学本科组创新奖获奖分享

2024年第九届数维杯大学生数学建模挑战赛将于:2024年5月10日08:00-5月13日09:00举行,近期同学们都开始陆续进入了备赛阶段,今天我们就一起来看看上一届优秀的创新奖选手都有什么获奖感言吧~希望能帮到更多热爱数学建模的同学。据说点赞的大佬…

javaWebssh票据管理系统myeclipse开发mysql数据库MVC模式java编程计算机网页设计

一、源码特点 java ssh票据管理系统是一套完善的web设计系统(系统采用ssh框架进行设计开发),对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模 式开发。开发环境为TOMCAT7.0,My…

npm digital envelope routines::unsupported

问题描述:npm运行命令报错:digital envelope routines::unsupported 原因:node版本过高 解决方案:在运行命令之前加上 SET NODE_OPTIONS--openssl-legacy-provider && SET NODE_OPTIONS--openssl-legacy-provider &&a…

【机器学习基础】层次聚类-BIRCH聚类

🚀个人主页:为梦而生~ 关注我一起学习吧! 💡专栏:机器学习 欢迎订阅!相对完整的机器学习基础教学! ⭐特别提醒:针对机器学习,特别开始专栏:机器学习python实战…

【JavaEE】_Spring Web MVC简介

目录 1. Spring Web MVC简介 2. MVC简介 3. Spring MVC 1. Spring Web MVC简介 官网对于Spring Web MVC的介绍如下: 链接如下: https://docs.spring.io/spring-framework/reference/web/webmvc.html#https://docs.spring.io/spring-framework/refer…

14.网络游戏逆向分析与漏洞攻防-网络通信数据包分析工具-数据包分析工具界面与通信设计

内容参考于: 易道云信息技术研究院VIP课 上一个内容:13.如果没有工具就创造工具 码云地址(master 分支):https://gitee.com/dye_your_fingers/titan 码云版本号:fef5089bd11dfb86ae8b4e26f25cf59e85f896…

缓存穿透解决方案之布隆过滤器

布隆过滤器可以快速判断数据是否存在,避免从数据库中查询数据是否存在,减轻数据库的压力 布隆过滤器是由一个初值为0的bit数组和N个哈希函数,可以用来快速的判断某个数据是否存在 当我们想要标记某个数据是否存在时,布隆过滤器会…

《Spring Security 简易速速上手小册》第6章 Web 安全性(2024 最新版)

文章目录 6.1 CSRF 防护6.1.1 基础知识详解CSRF 攻击原理CSRF 防护机制最佳实践 6.1.2 重点案例:Spring Security 中的 CSRF 防护案例 Demo测试 CSRF 防护 6.1.3 拓展案例 1:自定义 CSRF 令牌仓库案例 Demo测试自定义 CSRF 令牌仓库 6.1.4 拓展案例 2&am…
最新文章