• ghidra


    https://github.com/NationalSecurityAgency/ghidra

    ghidra是一个so的逆向工具,功能和jadx-gui类似,但是和jadx-gui专注于java层的不同,ghidra专注于native层的代码反编译(从二进制到c语言)。

    一、 安装

    1. 准备好java17的环境(mac: brew install openjdk@17,软件基于java,是跨平台的)
    2. Github下载,从github上的release下载最新版本的ghidra,解压,执行 ./ghidraRun 即可打开。

    使用zsh可以在~/.zshrc中配置这个alias,可以快速打开:)

    alias ghidra=“/Users/${your_name}/Applications/ghidra_11.0.3_PUBLIC/ghidraRun”

    二、基本使用

    1. 打开后点击file new project,按指引选中项目和存放暂存文件的目录。

    2. 选中import file,导入要逆向的so,比如如下导入了libyeshen.so

    3. 双击so即打开工程

    4. mac用户注意下打开允许使用

    5. 功能区说明:
      a. 左边是导出的方法,我是从入口方法开始看起,下面还有Functions,也是一堆堆方法
      b. 中间部分是静态地址和汇编指令。静态地址很关键,运行时hook、查看入参出参都需要对这个地址做操作。点击 “G” 按键可以输入地址,回车即可跳到目标地址。
      c. 反编译出来的C代码,含有程序的逻辑信息,看起来是比较辛苦,当时可以看个大概大概…
      d. 搜索so中的字符串信息可以这样搜索:

       i. 点击search 点击memory
       ii. 找到地址上的数据
       iii. 右键Reference -> show reference to DAT_xxxxx
       iv. 双击看到的地址,即可跳到使用这个地址的地方
      
    6. 备注和修改名字,都是右键出菜单,选中改名/改备注。考虑到复杂一点的so可能一天分析不完,所以增加备注,修改函数名字可以加速分析、暂存分析过程。

  • 相关阅读:
    VUE获取当前日期的周日和周六
    商用字体网站,再也不用怕侵权
    TCP的可靠性之道:确认重传和流量控制
    STM32F105RBT6 使用定时器TIM3输出PWM波
    【数据结构】链表相关OJ题 (万字详解)
    nRF52832 SDK15.3.0 基于ble_app_uart demo FreeRTOS移植
    ==和equals的对比
    快慢指针思想(Hare & Tortoise 算法)
    Kubernetes部署集群碰到的问题解决
    JVM(十九)—— 垃圾回收(五)
  • 原文地址:https://blog.csdn.net/yeshennet/article/details/139563347