利用OllyDebug查看程序調用的dll模塊


  最近在做一個Qt項目,在產品發布的時候一直為找不到程序到底缺少了哪些dll組件而困擾。具體問題是,在我的項目中使用到了QMediaPlayer播放一段音頻文件,我使用的開發環境的Win7 32位,而在發布安裝包的時候,還是照常去掉Qt相關的環境變量,然后運行可執行程序,提示缺少什么dll,我就向可執行程序的目錄下拷貝對應的dll,直到程序可以正常啟動運行。就是按照上面的方法,我制作了軟件的安裝包,但是,當將這個軟件安裝到XP系統上測試時,發現程序沒有聲音了,這個問題讓我很糾結。

  后來,我在網上找到了一條線索,就是通過軟件來查看可執行程序調用的dll模塊,然后我就可以根據列舉的dll模塊信息,將缺少的補充上去即可,我選擇的比較常用的OllyDebug。OllyDebug是一款功能非常強大的32位匯編及分析調試器,也是當前最為流行的解密利器了。一個全新可視化的動態追蹤工具,可以完全替代SoftICE,是當前功能最為強大的調試工具,能夠處理其他同類軟件所無法處理的問題。可以自定義設置的外觀及運行參數,支持多種數據格式,支持代碼高亮及多線程高度,可以自動分析函數的運行過程及循環語句等,可以增加2進制代碼的可讀性,讓調試變得更為簡單。可能將調試的程序單獨保存為文件,可以繼續加載使用。

 

我在這里共享了這個軟件的英文版和中文版的工具下載地址:

英文版:http://pan.baidu.com/s/1i3oUsuD

中文版:http://pan.baidu.com/s/1o6qfZmU

 

由於軟件功能太強大,我也就只能在這里針對我遇到的問題,介紹一下我們怎么查找程序調用的dll模塊的,這里我使用的是英文版。

首先,解壓軟件包,運行其中的可執行文件,如下圖:

打開程序以后,我們需要打開待觀察的可執行文件(*.exe),依次點擊菜單“File -> Open”,然后在彈出的文件對話框中找到對應的可執行程序,如下圖所示。

打開軟件以后,OllyDebug的主界面顯示如下:

然后,依次選擇菜單中的“View -> Executable modules”,會跳轉到下圖所示的界面,其中即列舉了被觀察的可執行程序當前加載的dll模塊。

再接着,我們需要全速運行此程序,觀察加載的dll模塊的變化。單擊如下圖紅色方框中的“運行”按鈕。

然后,我們就可以看到程序開始加載dll,並列舉出來,最新調用的dll用紅色字體標示了出來,如下圖所示。

我們就可以通過依次檢查列舉出來的每一個dll是否已經拷貝到了可執行目錄下。說明:調用的系統文件中的dll不用管,我們只關心的是類庫中提供的dll有沒有拷貝。

 

結論:在Qt應用中使用到多媒體時,一定要向可執行目錄下面添加plugins中的mediaservice目錄,我的平台上的路徑為C:\Qt\Qt5.1.1\5.1.1\mingw48_32\plugins\mediaservice,否則,程序可能工作不正常,但是並沒有提示錯誤。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM