西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴的軟件下載站!
西西首頁 電腦軟件 安卓軟件 電腦游戲 安卓游戲 排行榜 專題合集

API監(jiān)控工具(SoftSnoop)

1.3.2 綠色中文版
  • API監(jiān)控工具(SoftSnoop)1.3.2 綠色中文版
  • 軟件大小:236KB
  • 更新時(shí)間:2015-01-13 08:51
  • 軟件語言:中文
  • 軟件廠商:
  • 軟件類別:國產(chǎn)軟件 / 免費(fèi)軟件 / 加殼脫殼
  • 軟件等級(jí):4級(jí)
  • 應(yīng)用平臺(tái):WinAll, Win7
  • 官方網(wǎng)站:http://elephantinaurance.com
  • 應(yīng)用備案:
好評(píng):50%
壞評(píng):50%

軟件介紹

SoftSnoop可以監(jiān)視系統(tǒng)調(diào)用了哪些API,從而在SoftICE里可以用這些API設(shè)置斷點(diǎn)!是一個(gè)很好用的可以捕獲進(jìn)程調(diào)用的Api的程序,但是我在使用過程中發(fā)現(xiàn)其只能對(duì)靜態(tài)導(dǎo)入的Api實(shí)現(xiàn)捕獲,因此極大地限制了其使用范圍,前幾天在看了它的源碼,分析之后產(chǎn)生了改進(jìn)的想法,我對(duì)其中ApiHook的部分進(jìn)行了修改,使之能捕獲動(dòng)態(tài)加載的dll中的Api調(diào)用!

更新日志:

相對(duì)于SoftSnoop1.3版新增功能

(1)可以捕獲從任一模塊產(chǎn)生的到任一模塊的Api調(diào)用,包括動(dòng)態(tài)加載的模塊;可以在調(diào)用Api之前輸出Api名稱,Api所屬模塊,Api參數(shù)及調(diào)用這個(gè)Api的地址;可以在Api返回之后輸出Api返回值;

(2)可以像OllyDbg那樣附著到正在運(yùn)行的目標(biāo)進(jìn)程并捕獲其Api,可以隨意終止和繼續(xù)捕獲,目標(biāo)進(jìn)程不受影響;

(3)可以選擇是否對(duì)目標(biāo)進(jìn)程進(jìn)行調(diào)試,對(duì)一些檢查調(diào)試器的程序可以選擇不調(diào)試目標(biāo)進(jìn)程,對(duì)Api捕獲沒有影響;由于修改了ApiHook方式,因此對(duì)于加過殼或修改了輸入表的程序也可以進(jìn)行Api捕獲;

(4)添加了中文版;

(5)解決了1.3版中在加載目標(biāo)進(jìn)程時(shí)偶爾會(huì)產(chǎn)生內(nèi)存訪問越界的問題;

怎么用?

如果想讓SoftSnoop顯示自己感興趣的Api的參數(shù),請(qǐng)看ApiDef目錄下的SS.txt;如果只想捕獲特點(diǎn)模塊或特定的Api,或者只想捕獲來自某些特定模塊的Api,請(qǐng)?jiān)谶x項(xiàng)窗口進(jìn)行設(shè)置;其它使用方法都很簡單,界面上一目了然,也不用多說了;另外大家覺得有什么不方便的地方自己DIY即可,這就是有源碼的好處:)

實(shí)現(xiàn)原理介紹:

SoftSnoop1.3版的ApiHook是通過修改目標(biāo)進(jìn)程的輸入表的方法來實(shí)現(xiàn)的,這種方法的優(yōu)點(diǎn)在于實(shí)現(xiàn)簡單,但缺點(diǎn)在于無法捕獲動(dòng)態(tài)加載的模塊中的Api,另外對(duì)于加過殼的程序和修改了輸入表的程序也是無效的。

另一種應(yīng)用層的ApiHook方法是修改目標(biāo)Api的前幾條指令為跳轉(zhuǎn)指令,當(dāng)產(chǎn)生Api調(diào)用時(shí)先跳到我們的程序,我們處理之后再跳回去繼續(xù)執(zhí)行;這種ApiHook的實(shí)現(xiàn)方法在這里有詳細(xì)的介紹:http://中的ScanModules()函數(shù),大家如果感興趣可以看看;

(2)對(duì)于掃描得到的每個(gè)模塊,通過讀取其輸出表來獲得其輸出的Api的入口地址和名稱,然后將這些Api添加到待Hook列表中;

對(duì)于問題2,分兩種情況進(jìn)行介紹:

(1)由SoftSnoop創(chuàng)建的目標(biāo)進(jìn)程,通過在修改其輸入表來實(shí)現(xiàn)其加載我們的ApiSnoop.dll,修改時(shí)機(jī)是目標(biāo)進(jìn)程已經(jīng)被加載到內(nèi)存中但還沒有執(zhí)行的時(shí)候,具體實(shí)現(xiàn)方法是創(chuàng)建目標(biāo)進(jìn)程時(shí)加CREATE_SUSPENDED參數(shù),然后修改其輸入表,把我們的ApiSnoop.dll加進(jìn)去,然后讓目標(biāo)進(jìn)程繼續(xù)執(zhí)行,這樣我們的ApiSnoop.dll就會(huì)被加載到目標(biāo)進(jìn)程的地址空間;這里要說明的是,SoftSnoop1.3版使用的方法沒有公開源碼,是封裝在ForceLibrary.dll里的,其缺點(diǎn)在于必須對(duì)目標(biāo)進(jìn)程進(jìn)行調(diào)試才能實(shí)現(xiàn)加載ApiSnoop.dll,恰好Detours庫中提供了DetourCreateProcessWithDll()函數(shù)能夠?qū)崿F(xiàn)這個(gè)功能,因此我就直接使用了這種方法;

(2)附著到正在執(zhí)行的目標(biāo)進(jìn)程http://www.168ftp.com/,通過CreateRemoteThread實(shí)現(xiàn)讓目標(biāo)進(jìn)程加載我們的ApiSnoop.dll;

其它一些問題的實(shí)現(xiàn)方法是:Api調(diào)用的參數(shù)和來源地址可以通過讀堆棧得到,至于如何讓Api返回時(shí)執(zhí)行我們的代碼從而獲得其返回地址,我沿用了1.3版的實(shí)現(xiàn)方法:修改堆棧中的返回地址。

另外1.3版里主程序和SoftSnoop.dll是通過消息進(jìn)行交互的,這種交互只能是單向的,在1.3.2版里我使用了事件+內(nèi)存映射文件的方法實(shí)現(xiàn)了雙向交互。

下一步的工作:

如果大家覺得這個(gè)工具還行,還值得繼續(xù)開發(fā)的話,請(qǐng)給我支持和建議。

我想可能的改進(jìn)之處包括:

(1)在Api調(diào)用之前停下來,允許用戶查看和修改Api調(diào)用的參數(shù);在Api調(diào)用返回的時(shí)候可以停下來,允許用戶查看參數(shù)變化并修改Api返回值;

(2)增強(qiáng)調(diào)試支持,因?yàn)樾薷牧四繕?biāo)進(jìn)程加載方式,因此原先1.3版中的一些設(shè)置斷點(diǎn)的功能可能有所減弱;

(3)增加反匯編支持,不過這個(gè)可能沒有必要,使用OllyDbg就行了:)


軟件標(biāo)簽: API監(jiān)控

其他版本下載

發(fā)表評(píng)論

昵稱:
表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
查看所有(0)條評(píng)論 > 字?jǐn)?shù): 0/500

TOP
軟件下載