radare2 常用操作总结

radare2 简介

radare2是一个用C语言编写的跨平台的二进制分析工具,支持ARM、MIPS、X86等平台,支持分析多种格式的二进制文件如ELF、Mach-O、Fatmach-O, PE、PE+、 MZ、 COFF等,同时也支持多种操作系统如Windows (since XP)、GNU/Linux、GNU/Darwin、GNU/Hurd、Apple’s 等等,总之就是巨屌。

核心功能:

  • 16进制编辑器
  • 调试器,可对源来自于磁盘、网络连接、内核驱动程序、正在运行的进程进行调试
  • 汇编、反汇编
  • 程序模拟
  • 二进制修补
  • 数据分析比较、搜索、替换和可视化

结构图

在这里插入图片描述

常用命令总结

本文总结的常用命令只是对我我在实际使用过程中常用操作的总结,仅供参考

官方手册见:https://book.rada.re/index.html

在radare2总获取帮助的命令是"?",在命令模式下输入一个命令并紧跟一个“?”就可以获取这个命令的帮助信息

基础命令

  • 移动 :s
命令简介备注
s 0x10移动到当前文件 0x10出
s +4以当前位置为基地址向前移动4字节
s -移动到上一次在的位置
sf function移动到function函数处
s?查看s命令帮助信息
  • sections 相关的

    iS打印二进制文件中所有的段
    om打印二进制文件中段的映射
  • 打印: p

px 0x10以16进制格式从当前位置打印0x10个字节,并以byte为单位显示
pxw 0x10以16进制格式从当前位置打印0x10个字节,并以word为单位显示
pd把当前位置开始的数据看做指令编码反汇编并显示
ps把当前位置开始的数据看做字符串并打印
pd @ 0x12006c874临时跳转到0x12006c874执行打印,并返回
p?查看p命令帮助信息
  • 搜索: /

    /w test在当前文件中搜索”test“字符串
    /a move fp, sp汇编move fp, sp,并在当前文件中搜索
    /m在当前文件中搜索magic,可以找出当前二进制文件中包含的其他文件

    在搜索命中时自动打印例子:

    [0x12006c874]> e cmd.hit = pd 1
    [0x12006c874]> /a lui gp, 0x5f
    Searching 4 bytes in [0x120658830-0x120a83ce0]
    hits: 0
    Searching 4 bytes in [0x1206254a8-0x120658830]
    hits: 0
    Searching 4 bytes in [0x120000000-0x1206154a4]
    hits: 105
    0x120060d28 hit3_0 5f001c3c;-- hit1_0:;-- hit3_0:0x120060d28      5f001c3c       lui gp, 0x5f               ; '_'
    0x120060d80 hit3_1 5f001c3c;-- hit1_1:;-- hit3_1:0x120060d80      5f001c3c       lui gp, 0x5f               ; '_'
    0x120060dc8 hit3_2 5f001c3c;-- hit1_2:;-- hit3_2:0x120060dc8      5f001c3c       lui gp, 0x5f               ; '_'
    
  • 分析: a

    radare2在打开一个二进制文件时处于效率考虑,不会默认对二进制文件进行分析,需要用户手动分析

    aaa对打开的二进制文件进行全面分析
    af sym.main对main函数进行分析
  • 二进制信息:i

    ie显示目标文件entry的信息
    ih显示目标文件的Headers信息
    iI显示目标文件二进制相关信息
    is显示目标文件的所有符号
    iS.显示当前所在的Sention信息
    it计算目标文件的hashes
    iM显示main函数的地址

可视化模式

radare2支持可视化模式,在可视化模式下很多操作和VIM相同。输入V进入可视化模式,输入q退出可视化模式

按键
p切换显示模式
Tab在当前模式下,切换显示的信息
j向下滚屏
k向上滚屏
:在可视化模式下使用命令(与VIM类似)
bF显示函数列表
b1进入bit编辑模式
1-9跳转到调用的函数
空格打印函数的调用图(需要先执行aaa)

可视化编辑

按c进入cursor mode ,选中要修改的数据,按i进入编辑模式进行修改

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Could NOT find SDL_image (missing:SDL_IMAGE_LIBRARIES SDL_IMAGE_INCLUDE_DIRS)

sudo apt-get install libsdl-image1.2-dev转载于:https://www.cnblogs.com/sea-stream/p/9792496.html

Erlang TCP Socket的接收进程的2种方案

转自:http://blog.csdn.net/summerhust/article/details/8740973 一旦打开了一个使用TCP连接的套接字,它就始终保持打开状态,直至任何一方关闭它或因为一个错误而终止。在建立一个连接时,一般为…

序列化与反序列化(1)Serializable —— Java原生态方法

摘自:序列化与反序列化(1)Serializable —— Java原生态方法 作者:丶PURSUING 发布时间: 2021-05-08 19:20:21 网址:https://blog.csdn.net/weixin_44742824/article/details/116503261 本文为学习笔记&…

极路由4刷机

准备工作 https://www.right.com.cn/forum/thread-161906-1-1.html https://breed.hackpascal.net/ 在第二个链接里下载路由器对应的breed固件,固件的说明见第一个链接,下文以极路由4为例演示 由于极路由官方挂了,无法进行root&#xff0…

背景颜色及背景图片相关的属性

1.background-color   设置背景颜色,取颜色值   注意:     1.所有元素默认的背景颜色都是透明色,新建窗口的白色不是body的背景色,是浏览器渲染的     2. 背景颜色从边框位置开始绘制     3. 如果元素添加内边距&…

评论安装_评论送|机电安装监理质量控制要点130页

来源:网络整理, 如有侵权请联系删除因本文篇幅有限,只能展示60页,全部130页需要您对本文进行精彩评论或者转发分享,加微信dahe0608送给您本文的ppt原件因本文篇幅有限,只能展示60页,全部130页需…

积跬步-java任职要求

2019独角兽企业重金招聘Python工程师标准>>> 1.JAVA基础扎实,熟悉io、多线程、集合等基础框架,熟悉分布式、缓存、消息、搜索等机制; 2.四年以上使用java进行web开发的经验,熟练使用spring 、MVC等框架,熟悉…

MIPS内联汇编

0X0 近几天使用内联汇编来完成部分功能,下面总结下基础知识点,以便以后查询 语法基本结构 __asm__ __volatile__("汇编语句\n\t""汇编语句\n\t":输出寄存器:输入寄存器:寄存器破坏表);‘:’把内联汇编分割为了4个部分 第一部分 如…

安卓APP_ 控件(11)webView —— 简单应用:显示网页

摘自:安卓APP_ 控件(11)webView —— 简单应用:显示网页 作者:丶PURSUING 发布时间: 2021-05-11 11:50:52 网址:https://blog.csdn.net/weixin_44742824/article/details/116602469 目录 简单了…

Python 抓取数据存储到Mysql中

# -*- coding: utf-8 -*- import os,sys import requests import bs4 import pymysql#import MySQLdb#连接MYSQL数据库 db pymysql.connect(host127.0.0.1,userroot,passwordmysql,dbtest,port3306,charsetutf8) #db MySQLdb.connect(127.0.0.1,root,mysql,test,coon.set_cha…

ios 去掉底部状态栏_iOS 隐藏状态栏

1.整个项目隐藏状态栏在Targets->General->勾选中Hide status bar2.单个界面隐藏状态栏,例如登录注册页面1.首先在info.plist里面View controller-based status bar appearance 设置为 NO.2.在需要调控状态栏的ViewController类中添加以下代码://进入时隐藏-(void)viewWi…

QT应用开发基础

目录前言Windows上搭建开发环境C基础什么是C什么是面向对象,什么又是面向过程c的灵魂:c的类对象:类的实例化怎么访问类的成员类的函数成员类的访问修饰符函数的重载构造函数和析构函数类的继承虚函数和纯虚函数制作一个简单的QT界面创建工程U…

meson构建系统

简介 Meson是一个构建系统,它被设计成在不牺牲性能的前提下尽可能的友好。这方面的主要工具是用户用来描述构建结构的自定义语言。这种语言的主要设计目标是简单、清晰和简洁。很多灵感都来自于Python编程语言,它被认为是非常易读的,即使对以…

射灯安装方法图解_江苏天筑不锈钢雕塑厂家格栅射灯安装方法,格栅射灯安装注意事项...

格栅射灯安装方法,您是否已经学会了呢?不管您会不会,今天江苏天筑不锈钢雕塑厂家就结合这个问题,一起来为大家详细介绍这部分内容的一些相关的注意事项,南方的天气比较潮湿,所以我们尽量不要把格栅射灯安装…

在centos8 stream启用 Extra Packages

前言 最近把一台机器装了centos8 stream,centos8 的维护周期将会在2021-12-31结束 而centos8 stream和centos8有什么区别呢?我参考官方的描述简单总结下 由下游变更到上游 centos8是RHEL的rebuild版本,所以是处在下游的,意思是收…

ARM体系结构简介 —— 迅为

目录单片机和ARM处理器内存管理单元(MMU)高速缓冲存储器(CACHE)指令集ARM的指令系统ARM处理器工作模式ARM处理器的内部寄存器ARM处理器的异常ARM中断向量ARM架构的发展单片机和ARM处理器 内存管理单元(MMU)…

getElementById() getElementsByName() getElementsByTagName()

http://www.cnblogs.com/winner/archive/2007/03/28/593028.html1、getElementById()getElementById()可以访问DOCUMENT中的某一特定元素,顾名思义,就是通过ID来取得元素,所以只能访问设置了ID的元素。比如说有一个DIV的ID为docid&#xff1a…

网口扫盲二:Mac与Phy组成原理的简单分析(转)

1. general 下图是网口结构简图.网口由CPU、MAC和PHY三部分组成.DMA控制器通常属于CPU的一部分,用虚线放在这里是为了表示DMA控制器可能会参与到网口数据传输中. 对于上述的三部分,并不一定都是独立的芯片,根据组合形式,可分为下列三种方案: CPU集成MAC与PHY;CPU集成MAC,PHY采用…

python拼接两个数组_在Python中连接两个数组

根据你的描述,你的案子看起来像:In [344]: a[np.arange(5),np.arange(5)]In [345]: b[np.arange(5),np.arange(3)]In [346]: aOut[346]: [array([0, 1, 2, 3, 4]), array([0, 1, 2, 3, 4])]In [347]: bOut[347]: [array([0, 1, 2, 3, 4]), array([0, 1, …

设置git协议clone代理

0x0 最近在clone yaffs2仓库时发现clone的异常缓慢,就算开了代理也是,搜索一番发现网上大多都是将设置http、https、ssh协议的代理,对于git协定的代理讲的很少,下面分享下如何让git协议走socks代理 以下内容前提是里已经在电脑上…