如何查看dll中的函數(shù)
如何查看dll中的函數(shù)
首先打開需要分析的DLL文件,然后通過菜單功能“導(dǎo)出”來定位到需要分析的函數(shù),雙擊該函數(shù)即可直接定位。找到該函數(shù)的入口點,一般是以如下的代碼作為入口點:“push ebp mov ebp.esp ...”。接著,需要找到該函數(shù)的出口點,通常函數(shù)的出口處包含以下語句:“...ret xxxx;”其中,xxxx表示函數(shù)差數(shù)的字節(jié)數(shù),為4的倍數(shù),xxxx除以4得到的結(jié)果即為參數(shù)的個數(shù)。參數(shù)的存放位置如下:“ebp+08”為第一個參數(shù),“ebp+0C”為第二個參數(shù),“ebp+10”為第三個參數(shù),“ebp+14”為第四個參數(shù),“ebp+18”為第五個參數(shù),“ebp+1C”為第六個參數(shù)。
導(dǎo)讀首先打開需要分析的DLL文件,然后通過菜單功能“導(dǎo)出”來定位到需要分析的函數(shù),雙擊該函數(shù)即可直接定位。找到該函數(shù)的入口點,一般是以如下的代碼作為入口點:“push ebp mov ebp.esp ...”。接著,需要找到該函數(shù)的出口點,通常函數(shù)的出口處包含以下語句:“...ret xxxx;”其中,xxxx表示函數(shù)差數(shù)的字節(jié)數(shù),為4的倍數(shù),xxxx除以4得到的結(jié)果即為參數(shù)的個數(shù)。參數(shù)的存放位置如下:“ebp+08”為第一個參數(shù),“ebp+0C”為第二個參數(shù),“ebp+10”為第三個參數(shù),“ebp+14”為第四個參數(shù),“ebp+18”為第五個參數(shù),“ebp+1C”為第六個參數(shù)。
要了解DLL中的函數(shù)接口參數(shù),可以通過反匯編技術(shù)實現(xiàn)。推薦使用W32Dasm進(jìn)行分析,若使用VC則較為繁瑣。首先打開需要分析的DLL文件,然后通過菜單功能“導(dǎo)出”來定位到需要分析的函數(shù),雙擊該函數(shù)即可直接定位。找到該函數(shù)的入口點,一般是以如下的代碼作為入口點:“push ebp mov ebp, esp ...”接著,需要找到該函數(shù)的出口點,通常函數(shù)的出口處包含以下語句:“... ret xxxx;”其中,xxxx表示函數(shù)差數(shù)的字節(jié)數(shù),為4的倍數(shù),xxxx除以4得到的結(jié)果即為參數(shù)的個數(shù)。參數(shù)的存放位置如下:“ebp+08”為第一個參數(shù),“ebp+0C”為第二個參數(shù),“ebp+10”為第三個參數(shù),“ebp+14”為第四個參數(shù),“ebp+18”為第五個參數(shù),“ebp+1C”為第六個參數(shù)。另一種常見的調(diào)用方式為:“sub esp,xxxx //開頭部分 //函數(shù)的內(nèi)容 。。。 //函數(shù)的內(nèi)容 add esp,xxxx ret //結(jié)尾部分”其中,xxxx/4的結(jié)果也是參數(shù)的個數(shù)。還有一種調(diào)用方式:如果該函數(shù)比較簡單,沒有參數(shù)的壓棧過程,“esp+04”就是第一個參數(shù),“esp+08”就是第二個參數(shù),依此類推,“esp+xx”就是第xx/4個參數(shù),其中xx的最大數(shù)除以4后的結(jié)果,就是該函數(shù)所傳遞的參數(shù)的個數(shù)。通過以上分析,可以清楚地看到傳遞的參數(shù)個數(shù)。至于傳遞的是些什么內(nèi)容,則需要進(jìn)一步分析。最簡便的方法是找到使用該函數(shù)的軟件,然后通過調(diào)試技術(shù)找到該函數(shù)被調(diào)用的地方。一般是通過PUSH指令實現(xiàn)參數(shù)傳遞,此時可以查看具體壓入堆棧的內(nèi)容。對于整數(shù)參數(shù),一看便知;對于字符串,只需查看相應(yīng)地址即可。如果傳遞的是結(jié)構(gòu),沒有很方便的辦法解決,只能讀懂該匯編。以上分析僅供參考,如有不足之處,歡迎指正。
如何查看dll中的函數(shù)
首先打開需要分析的DLL文件,然后通過菜單功能“導(dǎo)出”來定位到需要分析的函數(shù),雙擊該函數(shù)即可直接定位。找到該函數(shù)的入口點,一般是以如下的代碼作為入口點:“push ebp mov ebp.esp ...”。接著,需要找到該函數(shù)的出口點,通常函數(shù)的出口處包含以下語句:“...ret xxxx;”其中,xxxx表示函數(shù)差數(shù)的字節(jié)數(shù),為4的倍數(shù),xxxx除以4得到的結(jié)果即為參數(shù)的個數(shù)。參數(shù)的存放位置如下:“ebp+08”為第一個參數(shù),“ebp+0C”為第二個參數(shù),“ebp+10”為第三個參數(shù),“ebp+14”為第四個參數(shù),“ebp+18”為第五個參數(shù),“ebp+1C”為第六個參數(shù)。
為你推薦