dyninst動態插樁示例

2021-07-29 10:14:11 字數 1158 閱讀 7296

dyninst動態插樁示例**:

版本:dyninst-9.3.1

gcc-4.8.4

簡述:示例**演示動態插樁,在程式執行時動態改變執行的函式。

被插裝的程式(

mutatee

)原始碼:test_dyninst.c

#include 

#include

void old()

void new()

int main()

return 0;

}

用來插裝的程式(

mutator

)的原始碼:instrument.cpp

#include 

#include

#include

#include

#include "bpatch.h"

#include "bpatch_vector.h"

#include "bpatch_process.h"

#include "bpatch_snippet.h"

int main(int argc, char **argv)

{ bpatch *bpatch = new bpatch;

std::vector

func_old; std::vector

1.編譯

$ gcc test_dyninst.c -o test_dyninst

$ g++ -std=c++11 instrument.cpp  /home/sky/dyninst-9.3.1/dyninstapi/libdyninstapi.so

2.先執行test_dyninst ,不斷輸出old()函式的「oh my god! pid is ***".

3.再執行a.out(instrument.cpp編譯結果)。test_dyninst執行結果發生變化時(輸出」hello world! pid is ***「),a.out自行退出。

程式插樁簡介

一種基本的動態測試方法,向源程式中新增一些語句實現對程式 的執行 變數的變化等情況的檢查,可以獲得程式的控制流和資料流資訊。如果我們想要了解乙個程式在某次執行中可執行語句被覆蓋的情況,或是每個語句的實際執行次數,最好的辦法就是利用插裝技術,它在軟體測試技術上占有非常高的地位。最簡單的插裝 在程式中插...

軟體測試 二進位制插樁

二進位制插樁作用 1.程式執行時攔截,在執行時向程式注入我們自己的 2.除錯程式 3.tracing and logging,分析函式呼叫關係圖,api覆蓋資料。4.提取資料,從程式中提取一些感興趣的關鍵data。5.改變程式行為,如程式打補丁,模擬資料 emulation 一般二進位制插樁方法 l...

AFL模糊測試學習(一)原始碼插樁

剛接觸模糊測試肯定是要從現在最為流行的afl開始,現在很多關於afl的改進都是針對afl的,而且afl本身因為其遺傳演算法 高吞吐量而得到很好的應用,在一些afl變異版本 如a o pfuzz collafl enfuzz等 混合模糊測試 結合模糊測試和符號化執行 在實驗對比中都拿afl當作base...