簡體   English   中英

使用 GDB 調試注入程序的 DLL

[英]Debugging a DLL injected into a program using GDB

我有 2 個程序和一個 DLL。

loader.exe啟動main.exe並在lib.dll的 memory 空間中注入main.exe main.exe在某一時刻然后執行 lib.dll 的lib.dll 加載程序和 DLL 都已在啟用調試符號的情況下編譯。

我曾嘗試在 DLL 上運行 GDB 並在相關的 function 處設置斷點,但我懷疑這是你的做法,因為當我運行加載程序時沒有任何反應。 我無法調試loader.exe ,因為它所做的只是啟動主程序,注入 DLL,然后退出。 那么我能做什么呢?

請記住,我正在使用 MinGW32 在 Windows 中執行所有這些操作。

我通過更改啟動程序的工作方式解決了這個問題:它在暫停的 state 中啟動目標程序並注入 DLL,然后恢復啟動程序。

為了在目標程序中調試注入的 DLL 函數,我首先使用 GDB 調試啟動程序,並在啟動目標程序后設置斷點並注入 DLL,但在它之前恢復。

然后,我打開另一個 GDB 實例並運行它而不針對任何目標,而是使用attach將 GDB 附加到已經啟動但仍然暫停的目標程序實例。

由於 DLL 現在已加載到地址空間中,因此我可以對目標程序中的任何 DLL 函數進行斷點。 通過繼續原來的GDB實例調試啟動程序,然后解除掛起目標程序,使其正常運行。

暫無
暫無

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

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