原创 使用DbgHelp獲取函數調用堆棧之inline assembly(內聯彙編)法

如果想自己獲取應用程序的Call Stack,就需要查看Stack的內容。Stack Walker,在最近查看SSCLI源碼的時候發現這個東西是和Stack Frame緊密聯繫在一起的。 Walking the Stack<?xml:na

原创 Windows Process內存組織結構及重要域解析

最近惡補操作系統和一些底層的知識。遂寫篇文章來說說從操作系統的角度來研究Process的一些結構,實現,Porcess的初始化,重要的結構體域的定義,代表的含義,如何組織起來的,等。還有在前段時間研究託管的static字段到底在內存中如何

原创 .Net 2.0內存對象佈局詳析及與1.1變化比較

寫本文主要兩個目的,一個是解析下2.0下的對象在內存裏面究盡是個什麼樣子的佈局,使用windbg和sos來show下內存裏面的bit是如何組織其來的。另外一個就是比較下和.Net Framework 1.1你面的內存佈局有什麼區別,修正下

原创 Solution of Problems in Building sscli via Visual Studio 2008

前些天,發佈了一個能夠在Visual Studio2005查看sscli源代碼的項目文件。不過,在VS2008中編譯sscli,會出現一大堆錯誤。這裏,有幸在Jeremy Kuhne's Blog上面找到了一篇文章來解決這個問題。原文鏈接

原创 WinDbg+SOS:Web服務器High CPU Hang(100%)實例分析

下午,msn上面一個朋友發了一個dump文件過來,說是Web服務器的CPU使用率在100%,找不到問題在什麼地方,讓幫忙看看,遂讓把dump文件傳過來,找找問題出在哪兒。        Framework2.0,Windows 2k的OS

原创 寶刀不老:Flash歌曲播放網站MP3地址隱藏機制完全破解

晚上,小落給推薦了一首非常好聽的Folk名謠,說是網上很難找到的。:)給了一個地址:http://www.neocha.com/naivete/music!1657.html 聽了之後,很是喜歡這種風格。然後baidu了一個下載地址發給她

原创 (紀念國殤).Net Hosting:託管遠程線程插入及非託管dll線程插入實現

線程插入,在託管平臺上面,是不能直接實現的。如果想通過託管平臺在一個非託管的Process裏面插入執行一段託管代碼,就需要在非託管Process裏面啓動CLR。我們可以以此爲突破口,通過直接調用CLR提供的功能接口來執行託管代碼。    

原创 Object內存核心結構及實現完全剖析(MethodTable、EEClass與MethodDescChunk)

無疑,一個Object在CLR中的邏輯結構是相當複雜的。前段時間,寫了一篇CLR探索系列:System.Object內存佈局模型及實現研究,側重從System.Object這個基本類的基本內存佈局,實現和結構來研究了下。這是遠遠不夠的。今

原创 CLR探索系列:託管PE/COFF文件格式側窺

一直都想寫篇文章來說說那些塵封在PE/Coff文件格式下的那些事,還有Metadata和EEClass是如何表現了一個靜態的PE格式文件在內存中的映射結構。   在這篇文章裏,我不去介紹windows下PE文件的具體格式,也不去介紹一個託

原创 Windbg+Rotor:Managed Process中的各種Special Threads分析

這幾天Oracle培訓,數據庫功力倒是沒太大長進,倒是Debug,Windows架構和實現還有CLR的覺悟突飛猛進。 開篇前首先3ks下rick,他把他寫的一票經典的文章都發到sscli.cnblogs.com團隊裏面來了。Rick可是我

原创 CLR引擎初始化分析

在以前的一篇叫做<深入追蹤Exe加載過程>的文章裏面,從clix的launch函數開始,再到CorExeMain2函數,在CorExeMain2裏面有一個叫做CoInitializeEE的函數:        result = CoIni

原创 .Net CLR Hosting原理及實踐

在開發CLR的時候,MS實際上是將CLR相關的功能作爲一個COM服務實現在一個DLL裏面。對這個DLL的選擇,是由墊片來選擇的。 MS爲CLR定義了一個標準的COM接口,並且爲該接口和COM服務指定了GUID。 雖然沒有墊片mscoree

原创 ValueTpye boxing及虛方法重寫及CallVirt指令實現解析

問題的提出,是源自Justin提出的一個case裏面的一個問題,討論了n久沒得到一個答案,昨天justin週一早上一起來就又回憶起了這個問題,看來一直把這個問題放在腦子裏面沒有放下,佩服啊佩服 ^_^ 遂決定深入研究一番,下面是問題的提出

原创 使用WinDbg+SOS及WinDbg Script尋找內存中DataTable第M行N列的值

DataTable在內存中是如何存儲一張表的結構的呢?如何使用Windbg直接在內存中找到一個DataTable裏面的第M列第N行的值呢?這的確是一個比較有趣的問題^_^   下面的內容,主要是講如何用windbg+sos來看看一個Dat

原创 在Visual Studio 2005中打開Share Source CLI 2.0(Rotor)

我想,有過研究sscli 2.0源碼經歷的朋友們看到這個標題,一定挺的高興吧。在以前參閱SSCLI2.0的源碼的時候,一直用的Edi