Skip to content

Dynamic binary instrumentation

讲解关于动态打桩工具的道与术

概述

参考的材料

是什么

已知的比较有名气的动态打桩工具有:

  • pin
  • valgrind
  • dynamorio
  • qemu

比较新的工具

  • triton
  • qbdi

为什么

  • 更精细的调试技术
  • 深化对CPU执行指令过程的理解
  • 最大化分析程序运行的状态:性能、能耗

一些应用

Dynamic Binary Visualization

youtube上有相关的介绍,略

怎么做

用QBDI上手实践

准备一个简单的动态库,比如实现一个算法的c++代码,将代码编译成so文件:

shell
g++ -c -fPIC demo.cpp -o demo.o
g++ -shared -Wl,-soname,mylib.so -o mylib.so demo.o

# 查看so中的动态符号
nm -D mylib.so

了解QBDI的原理

LLVM-BASED优化理论基础

通俗来说,程序执行本身的执行有两种策略

在程序执行时的编译成为Just In Time compilation。在程序执行之前则称为Ahead of TIME compilation。然而,有一种将机器码转移成高级别代码表示的技术,称为反编译/lifting,将机器码转换为相同的或者是不同的CPU架构一般称为binary rewriting,

透明动态重写

image-20240114185835248

了解LLVM-BASED的二进制优化工具:Rellume

知识在于积累