軟體測試 二進位制插樁

2021-06-25 12:34:27 字數 2009 閱讀 2224

二進位制插樁作用

1.        程式執行時攔截,在執行時向程式注入我們自己的**。

2.        除錯程式

3.        tracing and logging, 分析函式呼叫關係圖,api覆蓋資料。

4.        提取資料,從程式中提取一些感興趣的關鍵data。

5.        改變程式行為,如程式打補丁,模擬資料(emulation)。

一般二進位制插樁方法

ld_preload設定乙個動態庫路徑,該動態庫會在其他庫(包括the c runtime, libc.so)之前載入。下面可以使程式ls使用我們自己編寫的malloc ()

$ ld_preload=/path/to/my/ libmalloc.so  /bin/ls

編寫攔截函式,載入原來系統的動態庫。

注入指令(inject)

函式位址查詢,插入和移除插樁,呼叫原始函式位址(寫回原指令,並重新整理cache)。

注入動態庫

補丁(patch)

proc檔案,/proc//maps

elf檔案,符號段裡面查詢符號。

計算絕對位址,相對位址+基址(symbol address + base address)

記憶體洩漏check動態庫

使用我們自己的malloc hook程式的malloc呼叫。

/* lcheck() is for memory leak check; its code is not shown

here */

void lcheck(void);

void* malloc(size_t size)

void lcheck(void)

編譯和執行

gcc -shared -wl,--no-as-needed -ldl -fpic prog2.c -o libprog2.so 

ld_preload=/home/wuchao/sbox/kernel/hook/libprog2.so /bin/ls

intel  pin工具

解壓後就可以使用。

編譯pintool工具

$ cd source/tools/manualexamples
$ make strace.test

檢查ls程式

pin-2.13-65163-gcc.4.4.7-linux$ ./pin -t source/tools/manualexamples/obj-ia32/strace.so -- /bin/ls

$ cat ./strace.out 

0xb77b5f92: 45(0x0, 0xb77c0ff4, 0x0, 0xb779f000, 0x9, 0xb779f414)returns: 0x9f59000

0xb77b7caf: 33(0xb77ba0e5, 0x0, 0xb77c0ff4, 0xb779f1f4, 0x4, 0xbf831138)returns: 0xffffffff

0xb77b7d61: 192(0x0, 0x2000, 0x3, 0x22, 0xffffffff, 0x0)returns: 0xb6063000

0xb77b7caf: 33(0xb77b9d96, 0x4, 0xb77c0ff4, 0xb77b9d96, 0xb77c1c14, 0xbf8312a8)returns: 0xffffffff

0xb77b7b72: 5(0xb77ba081, 0x80000, 0x0, 0xb77c189c, 0xb77c1b00, 0x1)returns: 0x4

0xb77b7afb: 197(0x4, 0xbf830c40, 0xb77c0ff4, 0xb77c189c, 0x4, 0x1)returns: 0x0

AFL模糊測試學習(二)二進位制插樁

上一節一起學習了使用afl gcc對有原始碼的程式如何插樁,並且插樁的機制,這一節我們來一起學習如何使用qemu對沒有原始碼的二進位制程式進行插樁。首先要執行build qemu support.sh這個指令碼,這個時候如果有沒安裝pixman的錯誤的時候直接用apt安裝即可。apt get ins...

二進位制 二進位制起源

現代通訊技術的基礎是二進位制編碼。早在1865年麥克斯韋總結出麥克斯韋方程組之前,美國人摩斯 morse 於1837年發明了摩斯電碼和有線電報。有線電報的出現,具有劃時代的意義 它讓人類獲得了一種全新的資訊傳遞方式,這種方式 看不見 摸不著 聽不到 完全不同於以往的信件 旗語 號角 烽火,這也是二進...

判斷二進位製半整數(二進位制)

10年後,tokitsukaze大佬已經變成了年收入超百萬的的精英程式設計師,家裡沒錢也沒礦的teitoku,找tokitsukaze大佬借1000塊錢,然後tokitsukaze大佬說,借你1024吧,湊個整數。沒錯在2進製下1024是 二進位制整數 乙個正整數滿足其值為2的k次方 k為正整數 我...