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...