簡體   English   中英

如何使用IDA Pro在DLL中找到靜態鏈接的函數?

[英]How can I find a statically linked function in a DLL with IDA Pro?

我目前正在嘗試掛鈎Chromium的SSL寫入功能,但是我在尋找應該掛鈎的地方遇到了一些困難。

當前,我通過使用RtlCreateUserThread並分配DLL路徑並使目標進程加載它來注入DLL。 然后,DLL將通過GetProcAddress加載目標函數,然后通過jmp指令通常會覆蓋5字節。 我已經成功地使用Firefox做到了。 但是我在Chrome上遇到了麻煩,因為他似乎根據Chromium的源代碼使用NSS / OpenSSL(我在存儲庫中看到了兩個SSLSocket的實現,但是看不到哪個與二進制文件一起使用)。

提前致謝。

很抱歉成為壞消息的承擔者,但是確實沒有簡單的方法來做到這一點。
我發現最簡單的方法是使用Chromium Symbol服務器,該服務器位於:

http://chromium-browser-symsrv.commondatastorage.googleapis.com

需要注意的是,在64位窗口上的Chrome發行版中似乎缺少這些符號。 至少我運氣不好。

在一般情況下,您可以按照以下一些說明操作,以獲取大量預加載到本地緩存中的符號集合。

為了在IDA pro中使用符號服務器功能,您必須做一些事情。

首先,您必須安裝Windows調試工具。 (Windows 8.1 DDK是這些產品的不錯選擇,可從MicroSoft免費獲得。)它包括DLL,該DLL允許與符號服務器進行簡單的通信。

其次,您需要添加如下的全局系統環境變量:_NT_SYMBOL_PATH = srv * c:\\ pdb_cache * msdl.microsoft.com / download / symbols; srv * c:\\ pdb_cache * http:// chromium-browser-symsrv。 commondatastorage.googleapis.com

這是為符號存儲設置符號路徑和關聯的本地緩存。

第三,您可以使用以下命令行來使用WDK 8.1附帶的工具並提取符號:

"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x86\symchk" /r "C:\Program Files (x86)\Google" /s symsrv*C:\pdb_cache\*http://chromium-browser-symsrv.commondatastorage.googleapis.com/

上面的代碼應強制將符號加載到本地符號緩存中,並且您可以選擇它們(IDA可能會自動選擇,也可能不會)。 如果不是這樣,一旦WinDbg / symchk下載了符號文件,便可以手動選擇它。

至少根據以下理論是這樣的: http : //www.chromium.org/developers/how-tos/debugging

我沒有運氣讓符號在Chromium的發行版本上正確下載。 但是,如果轉到http://chromium-browser-symsrv.commondatastorage.googleapis.com/鏈接,並檢查返回的XML的內容,則會注意到已設置“截斷”標志。 您可以使用過濾器表達式(這是一個Amazon S3存儲桶)。 到處挖掘,甚至還有另一個符號服務器: http : //chromium-browser-symbols.commondatastorage.googleapis.com/從外觀上看,它已經很舊了。

我將為您提供一個腳本,從我的已知符號服務器列表中提取所有符號。 預加載可能需要調試的系統上的任何內容,這很有用。 :-)。 我還注意到,在Windows 7 x64上沒有為SysWOW64子系統下載任何符號。 如果其他人有關於其他公共符號服務器的任何信息,將非常歡迎:-)。

"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x86\symchk" /r "C:\Program Files (x86)" /s symsrv*c:\symbols*hxtp://msdl.microsoft.com/download/symbols
"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x86\symchk" /r "C:\Program Files (x86)" /s symsrv*c:\symbols*hxtp://symbols.mozilla.org/firefox
"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x86\symchk" /r "C:\Program Files (x86)" /s symsrv*c:\symbols*hxtp://chromium-browser-symsrv.commondatastorage.googleapis.com
"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x86\symchk" /r "C:\Program Files (x86)" /s symsrv*c:\symbols*hxtp://ctxsym.citrix.com/symbols
"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x86\symchk" /r "C:\Program Files (x86)" /s symsrv*c:\symbols*hxtp://developer.apple.com/internet/safari/windows_symbols


"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\symchk" /r "C:\Program Files" /s symsrv*c:\symbols*hxtp://msdl.microsoft.com/download/symbols
"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\symchk" /r "C:\Program Files" /s symsrv*c:\symbols*hxtp://symbols.mozilla.org/firefox
"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\symchk" /r "C:\Program Files" /s symsrv*c:\symbols*hxtp://chromium-browser-symsrv.commondatastorage.googleapis.com
"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\symchk" /r "C:\Program Files" /s symsrv*c:\symbols*hxtp://ctxsym.citrix.com/symbols
"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\symchk" /r "C:\Program Files" /s symsrv*c:\symbols*hxtp://developer.apple.com/internet/safari/windows_symbols


"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x86\symchk" /r "C:\Windows" /s symsrv*c:\symbols*hxtp://msdl.microsoft.com/download/symbols
"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x86\symchk" /r "C:\Windows" /s symsrv*c:\symbols*hxtp://symbols.mozilla.org/firefox
"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x86\symchk" /r "C:\Windows" /s symsrv*c:\symbols*hxtp://chromium-browser-symsrv.commondatastorage.googleapis.com
"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x86\symchk" /r "C:\Windows" /s symsrv*c:\symbols*hxtp://ctxsym.citrix.com/symbols
"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x86\symchk" /r "C:\Windows" /s symsrv*c:\symbols*hxtp://developer.apple.com/internet/safari/windows_symbols


"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\symchk" /r "C:\Windows" /s symsrv*c:\symbols*hxtp://msdl.microsoft.com/download/symbols
"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\symchk" /r "C:\Windows" /s symsrv*c:\symbols*hxtp://symbols.mozilla.org/firefox
"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\symchk" /r "C:\Windows" /s symsrv*c:\symbols*hxtp://chromium-browser-symsrv.commondatastorage.googleapis.com
"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\symchk" /r "C:\Windows" /s symsrv*c:\symbols*hxtp://ctxsym.citrix.com/symbols
"c:\Program Files (x86)\Windows Kits\8.1\Debuggers\x64\symchk" /r "C:\Windows" /s symsrv*c:\symbols*hxtp://developer.apple.com/internet/safari/windows_symbols

StackOverflow不允許我使用http鏈接,因此只需將文本編輯器中的hxtp替換為http,就可以了。

如果願意,還可以使用此字符串設置環境中的路徑。 希望這會有所幫助,隊友!

設置_NT_SYMBOL_PATH = symsrv * c:\\ symbols * hxtp://msdl.microsoft.com/download/symbols; symsrv * c:\\ symbols * hxtp://symbols.mozilla.org/firefox; symsrv * c:\\ symbols * hxtp://chromium-browser-symsrv.commondatastorage.googleapis.com; symsrv * C:\\ *符號hxtp://ctxsym.citrix.com/symbols; symsrv * C:\\ *符號hxtp://developer.apple。 COM /互聯網/狩獵/ windows_symbols

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM