2014-09-04 28 views
0

我目前正在嘗試掛鉤Chromium的SSL寫入功能,但我有一些困難找到我應該掛鉤的地方。如何在IDA Pro中找到DLL中的靜態鏈接函數?

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

在此先感謝。

回答

1

對不起,壞消息的持有者,但真的沒有一個簡單的方法來做到這一點。
我發現做到這一點最簡單的方法是使用鉻符號服務器,它位於:

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

需要說明的是,符號似乎缺少了Chrome瀏覽器64的發行版位窗口。至少我已經很幸運了。

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

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

首先,您必須安裝Windows調試工具。 (Windows 8.1 DDK是一個很好的選擇,可以從MicroSoft免費獲得。)它包含允許與符號服務器進行簡單通信的DLL。

其次,你需要下面添加一個全局系統環境變量: _NT_SYMBOL_PATH = SRV * C:\ * pdb_cache msdl.microsoft.com /下載/符號; 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

我已經沒有運氣得到符號正常下載鉻的發行版。但是,如果您轉到http://chromium-browser-symsrv.commondatastorage.googleapis.com/鏈接並檢查返回的XML的內容,您將注意到設置了「截斷」標誌。您可以使用過濾器表達式(它是Amazon S3桶)。挖掘周圍,甚至還有另一個符號服務器:http://chromium-browser-symbols.commondatastorage.googleapis.com/雖然它看起來很老舊。

我會給你一個腳本來從我的已知符號服務器列表中提取所有符號。預先加載可能需要調試的系統上的任何內容都很有用。 :-)。我還注意到,Window 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:\ *符號hxtp://msdl.microsoft.com/download/symbols; symsrv * C:\ *符號hxtp://symbols.mozilla.org/firefox; symsrv * C:\ *符號hxtp://chromium-browser-symsrv.commondatastorage.googleapis.com; symsrv * C:\ *符號hxtp://ctxsym.citrix.com/symbols; symsrv * C:\ *符號hxtp ://developer.apple.com/internet/safari/windows_symbols

+0

我已經想通了,但你的答案只是非常有趣,非常感謝你。 – Raito 2014-11-11 15:19:08