pin 回顧

論文卡住了,又轉回來看pin,*********,每次都有新發現:

剛開始看的時候囫圇吞棗,其實好多都不懂呢,補充一下:

pin能檢測的層次:instruction,bbl(basic block),trace,routine,image

instruction是最低層次的,instruction指的是彙編指令,如mov ,inc,loop,etc。

bbl指一個入口一個出口的語句

trace是一個入口多個出口的語句,如if

routine 相當於一個函數

image是exe,dll(windows下),之類的映像文件。


下面我們比較分析幾個pintool文件

下面分別來自inscount0.cpp、inscount1.cpp、proccount.cpp的三個語句

INS_InsertCall(ins,IPOINT_BEFORE, (AFUNPTR)printip, IARG_INST_PTR, IARG_END); 

BBL_InsertCall(bbl, IPOINT_BEFORE, (AFUNPTR)docount, IARG_UINT32, BBL_NumIns(bbl);

RTN_InsertCall(rtn,IPOINT_BEFORE, (AFUNPTR)docount,IARG_PTR, &(rc->_rtnCount), IARG_END);

通過對比我們發現,***_InsertCall()函數,表示在什麼情況(針對不同的***由IPOINT_決定在***的前中後還是任意位置)下調用(AFUNPTR)函數進行相應的操作,如輸出地址,計數等等。

.....


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章