vba vbscript.regexp加载dll错误_[原]排错实战——拯救加载调试符号失败的IDA
本文之前發表的時候有些問題,作為強迫癥患者的我又重新編輯后再次發表。如果您已經看過,請忽略。望見諒。
緣起
最近想借助IDA逆向一個函數。在windows下,調試器(比如vs, windbg)可以通過調試符號(PDB)把地址與符號名對應起來,為我們提供更可讀的信息。IDA應該也支持加載PDB,通過查看IDA安裝目錄下的idahelp.chm(打開后搜索PDB即可找到相關說明)發現還真支持。但是當我加載符號的時候,卻失敗了。本文記錄了整個調查過程。
效果對比
先放兩張對比圖,大家直觀感受下區別。
沒有調試符號的幫助的情況下,我們看到的效果:
有了調試符號的幫助的情況下,我們看到的效果:
可見,有了調試符號的幫助,我們可以更直觀的看到某個地址對應的函數名,可以更好的理解反匯編代碼。但是我們在IDA中該如何設置呢?
為 IDA 加載符號
- 首先,確認.\cfg\pdb.cfg存在,并且配置是正確的。一般,對IDA默認的配置文件 ,我們只需要放開PDBSYM_SYMPATH前面的注釋即可。為了保險,請確保對應的路徑(c:\symbols)是存在的。
說明:如果配置了_NT_SYMBOL_PATH,那么不用修改該文件。強烈建議設置環境變量_NT_SYMBOL_PATH。真正做到了一次設置,到處適用。
- 配置好后,通過File - Load file - PDB file...來加載pdb。
我就是在這里遇到錯誤了,錯誤提示如下圖:
IDA提示我們錯誤有三種可能。
上面第二種和第三種情況都有可能,但是根本原因是哪個需要進一步調查。這時候該本文的主角process monitor閃亮登場啦!
調查
打開process monitor,開始捕獲事件。然后在IDA中執行File - Load file - PDB file...加載pdb,等到上面的錯誤框彈出來后,停止捕獲事件。
我們主要關注IDA的文件讀寫事件,而且應該是找不到某個dll文件,所以我們關心Result不是SUCCESS的事件。根據以上條件進行過濾,很快就得到了我們感興趣的事件。看來我遇到的情況是找不到plugin\pdb64.dll。從別處拷貝一個pdb64.dll到plugin目錄下,搞定。so fast! pretty good!
下面放一張我錄制的GIF,大家感受下!
總結
process monitor真的是排查問題的神兵利器,前提是要善用過濾,如果用不好過濾,對我們的幫助有限。
參考資料
- Process Monitor
- 《Windows Sysinternals 實戰指南》
- IDA 幫助文檔
猜你喜歡:
[原]排錯實戰——使用process explorer替換任務管理器
[原]排錯實戰——VS清空最近打開的工程記錄
[原]排錯實戰——通過對比分析sysinternals事件修復程序功能異常
歡迎留言交流總結
以上是生活随笔為你收集整理的vba vbscript.regexp加载dll错误_[原]排错实战——拯救加载调试符号失败的IDA的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: css 实现app图标样式_uni-ap
- 下一篇: cfree运行程序错误的原因_ARM C