SoftSnoop是一款簡單好用的API監(jiān)控工具,它功能強大,主要功能可幫助用戶來捕獲進(jìn)程調(diào)用的Api的程序,同時支持捕獲動態(tài)加載的dll中的Api調(diào)用,非常的實用便捷。
API監(jiān)控工具(SoftSnoop)功能特色:
1.可以捕獲從任一模塊產(chǎn)生的到任一模塊的Api調(diào)用,包括動態(tài)加載的模塊;可以在調(diào)用Api之前輸出Api名稱,Api所屬模塊,Api參數(shù)及調(diào)用這個Api的地址;可以在Api返回之后輸出Api返回值;
2.可以像OllyDbg那樣附著到正在運行的目標(biāo)進(jìn)程并捕獲其Api,可以隨意終止和繼續(xù)捕獲,目標(biāo)進(jìn)程不受影響;
3.可以選擇是否對目標(biāo)進(jìn)程進(jìn)行調(diào)試,對一些檢查調(diào)試器的程序可以選擇不調(diào)試目標(biāo)進(jìn)程,對Api捕獲沒有影響;由于修改了ApiHook方式,因此對于加過殼或修改了輸入表的程序也可以進(jìn)行Api捕獲;
4.添加了中文版;
5.解決了1.3版中在加載目標(biāo)進(jìn)程時偶爾會產(chǎn)生內(nèi)存訪問越界的問題
API監(jiān)控工具(SoftSnoop)更新內(nèi)容:
相對于SoftSnoop1.3版新增功能
(1)可以捕獲從任一模塊產(chǎn)生的到任一模塊的Api調(diào)用,包括動態(tài)加載的模塊;可以在調(diào)用Api之前輸出Api名稱,Api所屬模塊,Api參數(shù)及調(diào)用這個Api的地址;可以在Api返回之后輸出Api返回值;
(2)可以像OllyDbg那樣附著到正在運行的目標(biāo)進(jìn)程并捕獲其Api,可以隨意終止和繼續(xù)捕獲,目標(biāo)進(jìn)程不受影響;
(3)可以選擇是否對目標(biāo)進(jìn)程進(jìn)行調(diào)試,對一些檢查調(diào)試器的程序可以選擇不調(diào)試目標(biāo)進(jìn)程,對Api捕獲沒有影響;由于修改了ApiHook方式,因此對于加過殼或修改了輸入表的程序也可以進(jìn)行Api捕獲;
(4)添加了中文版;
(5)解決了1.3版中在加載目標(biāo)進(jìn)程時偶爾會產(chǎn)生內(nèi)存訪問越界的問題;
API監(jiān)控工具(SoftSnoop)使用方法:
如果想讓SoftSnoop顯示自己感興趣的Api的參數(shù),請看ApiDef目錄下的SS.txt;如果只想捕獲特點模塊或特定的Api,或者只想捕獲來自某些特定模塊的Api,請在選項窗口進(jìn)行設(shè)置;其它使用方法都很簡單,界面上一目了然,也不用多說了;另外大家覺得有什么不方便的地方自己DIY即可,這就是有源碼的好處:
API監(jiān)控工具(SoftSnoop)原理介紹:
SoftSnoop1.3版的ApiHook是通過修改目標(biāo)進(jìn)程的輸入表的方法來實現(xiàn)的,這種方法的優(yōu)點在于實現(xiàn)簡單,但缺點在于無法捕獲動態(tài)加載的模塊中的Api,另外對于加過殼的程序和修改了輸入表的程序也是無效的。
1、另一種應(yīng)用層的ApiHook方法是修改目標(biāo)Api的前幾條指令為跳轉(zhuǎn)指令,當(dāng)產(chǎn)生Api調(diào)用時先跳到我們的程序,我們處理之后再跳回去繼續(xù)執(zhí)行;這種ApiHook的實現(xiàn)方法在這里有詳細(xì)的介紹:http://中的ScanModules()函數(shù),大家如果感興趣可以看看;
2、對于掃描得到的每個模塊,通過讀取其輸出表來獲得其輸出的Api的入口地址和名稱,然后將這些Api添加到待Hook列表中;
對于問題2,分兩種情況進(jìn)行介紹:
(1)由SoftSnoop創(chuàng)建的目標(biāo)進(jìn)程,通過在修改其輸入表來實現(xiàn)其加載我們的ApiSnoop.dll,修改時機是目標(biāo)進(jìn)程已經(jīng)被加載到內(nèi)存中但還沒有執(zhí)行的時候,具體實現(xiàn)方法是創(chuàng)建目標(biāo)進(jìn)程時加CREATE_SUSPENDED參數(shù),然后修改其輸入表,把我們的ApiSnoop.dll加進(jìn)去,然后讓目標(biāo)進(jìn)程繼續(xù)執(zhí)行,這樣我們的ApiSnoop.dll就會被加載到目標(biāo)進(jìn)程的地址空間;這里要說明的是,SoftSnoop1.3版使用的方法沒有公開源碼,是封裝在ForceLibrary.dll里的,其缺點在于必須對目標(biāo)進(jìn)程進(jìn)行調(diào)試才能實現(xiàn)加載ApiSnoop.dll,恰好Detours庫中提供了DetourCreateProcessWithDll()函數(shù)能夠?qū)崿F(xiàn)這個功能,因此我就直接使用了這種方法;
(2)附著到正在執(zhí)行的目標(biāo)進(jìn)程http://www.168ftp.com/,通過CreateRemoteThread實現(xiàn)讓目標(biāo)進(jìn)程加載我們的ApiSnoop.dll;
其它一些問題的實現(xiàn)方法是:Api調(diào)用的參數(shù)和來源地址可以通過讀堆棧得到,至于如何讓Api返回時執(zhí)行我們的代碼從而獲得其返回地址,我沿用了1.3版的實現(xiàn)方法:修改堆棧中的返回地址。
另外1.3版里主程序和SoftSnoop.dll是通過消息進(jìn)行交互的,這種交互只能是單向的,在1.3.2版里我使用了事件+內(nèi)存映射文件的方法實現(xiàn)了雙向交互。
- PC官方版
- 安卓官方手機版
- IOS官方手機版