日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Windbg+sos调试.net笔记

發布時間:2025/3/21 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windbg+sos调试.net笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

函數Load斷點 記錄

sxe ld:clrjit g .loadby sos ld:clrjit !name2ee mscorlib.dll System.Reflection.Assembly.Load bp 0x66be5d2c //斷在load bl !clrstack!dumpstackobjectsd 02f606d4d eaxdd 02f606d4

函數nLoadImage斷點 記錄

打開一個.net程序(調用過Load的對象樣本),或者用ps反射調用Load(測試用)

sxe ld:clrjit

加載指定名稱的dll時,調試器中斷

g

.loadby sos ld:clrjit

從加載clr.dll的目錄加載SOS調試擴展

!name2ee mscorlib.dll System.Reflection.Assembly.Load

找Assembly.Load的MethodDesc

找到nLoadImage的函數表token

!Token2EE mscorlib.dll 06004326

檢索nLoadImage方法的MethodDesc。第一個參數(mscorlib.dll)是實現nLoadImage方法的模塊,十六進制數字是從PowerShell檢索的元數據令牌。

!DumpMD 662833ec

然后,轉儲有關MethodDesc的信息。這將為實現nLoadImage的對象提供方法表的地址

!DumpMT -MD 66063f04



轉儲System.Reflection.RuntimeAssembly類的所有方法及其各自的本機入口點。nLoadImage具有以下條目:

665289d0 662833ec NONE System.Reflection.RuntimeAssembly.nLoadImage(Byte[], Byte[], System.Security.Policy.Evidence, System.Threading.StackCrawlMark ByRef, Boolean, Boolean, System.Security.SecurityContextSource)

因此,nLoadImage的本機地址為0x665289d0 ?,F在,在該地址上設置一個斷點,讓程序繼續執行并使用PowerShell在偽造的PE字節數組上調用Load方法。

其他

我調試的樣本有調試檢測,Windbg查看調用堆棧:kvn

定位到:

32位進程需要32位SOS。 32位SOS僅適用于32位WinDbg。

加載擴展

要加載擴展,有2個命令。一個是.loadby,另一個是.load。對于.loadby,請使用相對路徑;對于.load,請使用完整路徑。

對于.loadby,有5個選項:
.loadby sos mscorsvr
.loadby sos mscorwks
.loadby sos clr
.loadby sos coreclr
.loadby sos
其中mscorsvr確實很舊(.NET CLR 1,服務器版本),mscorwks確實很舊(.NET CLR 1和2,但仍然存在),clr是在當今很常見(.NET CLR 4),coreclr可能正在增加(UWP和Silverlight)

當尚未加載.NET運行時時,您正在嘗試加載SOS。等待直到加載.NET,然后該命令將起作用。在初始斷點處肯定是不可能的。

sxe ld clr sxe ld mscorwks sxe ld coreclr g

讓應用程序運行到.NET可用

sxe ld 命令

有些場景需要使用windbg調試某個dll模塊,而這個模塊加載時機不是很確定。

通常需要使用sxe ld <dll名稱> 來設置一個模塊加載異常。當被調試進程加載指定名稱的dll時,調試器就會中斷,后續就可以對該模塊的設置一些符號斷點了。

那么如何看到我設置的所有sxe斷點呢? 在windbg的event filter中可以管理設置過的sx系列斷點

利用powershell執行反射調用Load函數輔助調試

[Reflection.Assembly].GetMethod('Load', [Type[]] @([Byte[]] )) | Get-ILDisassembly

Get-ILDisassembly函數為PowerShellArsenal模塊提供。顯示IL指令

得到Load函數的token,通過token得到load地址,nLoadImage函數再Load函數中調用

set-ExecutionPolicy RemoteSigned
$Env:PSModulePath
Import-Module PowerShellArsenal
Get-Command -Module PowerShellArsenal
Powershell中顯示省略號內容:
$FormatEnumerationLimit = -1

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的Windbg+sos调试.net笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。