精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

記一次 .NET某工控WPF程序被人惡搞的卡死分析

開發 前端
主線程通過 GetMessageW 從消息隊列中拿到了數據,在處理時被 coreclr 押解到 WaitSuspendEventsHelper 處等待一個event事件,接下來看下這個方法的源碼到底是怎么寫的?

一、背景

1. 講故事

這一期程序故障除了做原理分析,還順帶吐槽一下,熟悉我的朋友都知道我分析dump是免費的,但免費不代表可以濫用我的寶貴時間,我不知道有些人故意惡搞卡死是想干嘛,不得而知,希望后面類似的事情越來越少吧!廢話不多說,我們來看看是如何被惡搞的。

二、WinDbg 分析

1. 程序是如何卡死的

既然是窗體程序自然就是看主線程,我們使用 k 命令即可。

0:000> k 
 # Child-SP          RetAddr               Call Site
00 00000036`e1f7da18 00007ffe`70bf30ce     ntdll!NtWaitForSingleObject+0x14
01 00000036`e1f7da20 00007ffd`eff74910     KERNELBASE!WaitForSingleObjectEx+0x8e
...
05 (Inline Function) --------`--------     coreclr!CLREventBase::Wait+0x12 [D:\a\_work\1\s\src\coreclr\vm\synch.cpp @ 412] 
06 00000036`e1f7db20 00007ffd`f00c9afa     coreclr!Thread::WaitSuspendEventsHelper+0xc8 [D:\a\_work\1\s\src\coreclr\vm\threadsuspend.cpp @ 4626] 
07 (Inline Function) --------`--------     coreclr!Thread::WaitSuspendEvents+0x8 [D:\a\_work\1\s\src\coreclr\vm\threadsuspend.cpp @ 4663] 
08 00000036`e1f7dbe0 00007ffd`f0009c80     coreclr!Thread::RareEnablePreemptiveGC+0x7d99a [D:\a\_work\1\s\src\coreclr\vm\threadsuspend.cpp @ 2414] 
09 (Inline Function) --------`--------     coreclr!Thread::EnablePreemptiveGC+0x16 [D:\a\_work\1\s\src\coreclr\vm\threads.h @ 2044] 
0a 00000036`e1f7dc20 00007ffd`f0075d10     coreclr!Thread::RareDisablePreemptiveGC+0xc8 [D:\a\_work\1\s\src\coreclr\vm\threadsuspend.cpp @ 2156] 
0b 00000036`e1f7dca0 00007ffd`f0096a5f     coreclr!JIT_ReversePInvokeEnterRare2+0x18 [D:\a\_work\1\s\src\coreclr\vm\jithelpers.cpp @ 5462] 
0c 00000036`e1f7dcd0 00007ffd`907afe09     coreclr!JIT_ReversePInvokeEnterTrackTransitions+0xaf [D:\a\_work\1\s\src\coreclr\vm\jithelpers.cpp @ 5509] 
0d 00000036`e1f7dd00 00007ffe`72e0e858     0x00007ffd`907afe09
0e 00000036`e1f7dd80 00007ffe`72e0e3dc     user32!UserCallWinProcCheckWow+0x2f8
0f 00000036`e1f7df10 00007ffe`72e20c93     user32!DispatchClientMessage+0x9c
10 00000036`e1f7df70 00007ffe`730f0e64     user32!_fnDWORD+0x33
11 00000036`e1f7dfd0 00007ffe`70b31104     ntdll!KiUserCallbackDispatcherContinue
12 00000036`e1f7e058 00007ffe`72e21c0e     win32u!NtUserGetMessage+0x14
13 00000036`e1f7e060 00007ffe`711e28f2     user32!GetMessageW+0x2e
...
1d 00000036`e1f7e460 00007ffd`f009ba53     xxx!xxx.App.Main+0x5e
...
2a 00000036`e1f7f140 00007ffe`4cd4e1e6     hostfxr!execute_app+0x2fa [D:\a\_work\1\s\src\native\corehost\fxr\fx_muxer.cpp @ 145] 
...
34 00000036`e1f7f890 00000000`00000000     ntdll!RtlUserThreadStart+0x21

從卦中的調用??梢钥吹剑骶€程通過 GetMessageW 從消息隊列中拿到了數據,在處理時被 coreclr 押解到 WaitSuspendEventsHelper 處等待一個event事件,接下來看下這個方法的源碼到底是怎么寫的?簡化后如下:

BOOL Thread::WaitSuspendEventsHelper(void)
{
    if (m_State & TS_DebugSuspendPending)
    {

        ThreadState oldState = m_State;

        while (oldState & TS_DebugSuspendPending)
        {

            ThreadState newState = (ThreadState)(oldState | TS_SyncSuspended);

            if (InterlockedCompareExchange((LONG*)&m_State, newState, oldState) == (LONG)oldState)
            {
                result = m_DebugSuspendEvent.Wait(INFINITE, FALSE);
                break;
            }

            oldState = m_State;
        }
    }
    return result != WAIT_OBJECT_0;
}

從上面的代碼可以明顯的看到當前Thread 處于 TS_DebugSuspendPending 狀態,從名字上看貌似和調試有關,接下來查下這個枚舉的注解。

enum ThreadState
{
    TS_DebugSuspendPending = 0x00000008,    // Is the debugger suspending threads?
}

從注解看是因為調試器阻塞了這個線程,我去,哪里來的調試器呢?這引起了我的巨大興趣。。。

2. 哪里來的調試器

我剛開始是抱有巨大的善意,我以為他的程序被人惡意注入導致卡死,但分析下來我還是太單純了,繼續往下看吧,既然有調試器,一般來說PEB.BeingDebugged=Yes狀態,命令的輸出結果也得到了證實。

0:000> !peb
PEB at 00000036e1c11000
    ...
    BeingDebugged:            Yes
    ...
                    Base TimeStamp                     Module
            7ff7f5230000 65310000 Oct 19 18:08:00 2023 G:\xxx\C#\Projects\NugetApplications\Applications\xxx\bin\Debug\net6.0-windows\xxx.exe
            ...

我以為到這里就可以告訴朋友答案,你的程序可能被人惡意注入了,但眼尖的我發現了一點異常,他的 xxx.exe 啟動目錄怎么會有 \bin\Debug\net6.0-windows\ 呢?很明顯這是用 VS 直接跑起來的呀。。。。

3. 真的是 VS 跑起來的嗎

首先大家要知道 Visual Studio 是托管調試器,托管調試器在調試程序的時候會在 coreclr 層面設置一個全局變量 g_CORDebuggerControlFlags=0x0200,這也是 Debugger.IsAttached 的底層判斷依據,不相信的朋友可以看下這個方法的底層實現:

FCIMPL0(FC_BOOL_RET, DebugDebugger::IsDebuggerAttached)
{
    CORDebuggerAttached();
}

inline bool CORDebuggerAttached()
{
    return (g_CORDebuggerControlFlags & DBCF_ATTACHED);
}

enum DebuggerControlFlag
{
    DBCF_ATTACHED                   = 0x0200,
};

有了這些基礎知識之后,接下來就可以用 x 命令去驗證下。

看到上面的答案基本就可以實錘了,有些朋友可能還是不大相信,我們可以這樣看,VisualStudio 是 WPF 寫的,如果用 VS 來調試,那么線程棧里面應該會有很多類似的 VisualStudio 字符串。

從卦中看,你說正常發布的程序怎么可能會有 9 個 Microsoft.VisualStudio.DesignTools 字符串呢?

4. 這個dump是如何生成的

這個問題我相信可能有一些朋友會比較疑惑,其實沒什么疑惑的,Visual Studio 有生成Dump的功能,操作步驟為:Debug -> Save Dump As... , 接下來通過一個小例子觀察一下。

internal class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine($"托管調試器:{Debugger.IsAttached}");
            Console.WriteLine($"非托管調試器:{IsDebuggerPresent()}");

            Console.ReadLine();
        }

        [DllImport("kernel32.dll")]
        static extern bool IsDebuggerPresent();
    }

調試起來后,截圖如下:

最后打開生成好的 Dump 文件,使用 kc 觀察主線程的輸出:

0:000> kc
 # Call Site
00 ntdll!NtWaitForSingleObject
01 KERNELBASE!WaitForSingleObjectEx
02 coreclr!CLREventWaitHelper2
03 coreclr!CLREventWaitHelper
04 coreclr!CLREventBase::WaitEx
05 coreclr!CLREventBase::Wait
06 coreclr!Thread::WaitSuspendEventsHelper
07 coreclr!Thread::WaitSuspendEvents
08 coreclr!Thread::RareEnablePreemptiveGC
09 coreclr!Thread::EnablePreemptiveGC
0a coreclr!Thread::RareDisablePreemptiveGC
0b coreclr!Thread::DisablePreemptiveGC
...
19 ConsoleApp4!ConsoleApp4.Program.Main
...
30 ntdll!RtlUserThreadStart

從卦中看,正是停留在 WaitSuspendEventsHelper 函數里,一摸一樣,徹底被360°無死角的證實......

三、總結

這是一次人為的故意惡搞,大概率就是想看下我到底是騾子是馬。我分析的結果對他和他所在的公司來說沒有任何價值,只能白白的浪費我的時間,真是分析多了,什么樣的人都能遇到,謹以此文告知后來者,免費但請不要濫用!

責任編輯:武曉燕 來源: 一線碼農聊技術
相關推薦

2023-09-27 07:23:10

.NET監控軟件

2024-06-06 10:51:15

自動化系統推測

2024-09-14 10:28:56

.NET卡死程序

2024-05-20 09:39:02

.NETurl線程池

2022-10-13 18:40:05

.NETOA后端

2024-07-01 13:00:24

.NET網絡邊緣計算

2022-01-17 21:28:36

管理系統.NET

2024-11-29 10:06:59

2023-05-15 11:15:50

.NET門診語句

2022-10-09 10:47:37

NET視覺軟件

2025-09-02 01:35:00

.NET光學定位軟件

2024-07-12 11:20:34

.NET崩潰視覺程序

2022-10-25 14:17:01

.NET代碼程序

2023-06-26 00:12:46

2024-12-27 13:31:18

.NETdump調試

2024-03-28 12:56:36

2023-04-06 10:52:18

2023-07-06 10:11:38

.NET模式dump

2024-03-26 00:44:53

.NETCIM系統

2023-03-26 20:24:50

ERP網站系統
點贊
收藏

51CTO技術棧公眾號

性视频1819p久久| **欧美大码日韩| 久久久久久久网站| 欧美69精品久久久久久不卡| 蜜桃视频网站在线观看| 久久久国产精品一区二区中文| 日韩风俗一区 二区| 国产精品传媒精东影业在线| 亚洲一二三四在线| 精品无码久久久久国产| 日本熟妇成熟毛茸茸| 国产精品视频3p| 欧美日韩国产在线看| 免费观看成人高| 无码久久精品国产亚洲av影片| 人人狠狠综合久久亚洲婷婷| 91精品国产色综合久久ai换脸| 人妻无码一区二区三区四区| 91 中文字幕| 韩日成人在线| 亚洲日韩欧美视频| 久久精品久久99| 成入视频在线观看| 国产精品久久久久影院老司| 99c视频在线| 亚洲欧美偷拍一区| 欧美激情成人在线| 亚洲人成在线观看| 波多野结衣中文字幕在线播放| h片在线观看视频免费| 欧美国产精品一区| 国产精品高清一区二区三区| 中文永久免费观看| 伊人精品成人久久综合软件| 亚洲欧美国产日韩天堂区| 欧美在线aaa| av资源在线| 亚洲欧洲日本在线| 久久综合久久久| 国产高清视频免费观看| 日本亚洲天堂网| 久久免费在线观看| 一级黄色片日本| 久久99国产精品视频| 欧美videos大乳护士334| 成人午夜激情av| 国产精品电影| 亚洲美女屁股眼交3| 视频在线一区二区三区| 亚洲av成人精品日韩在线播放| 麻豆国产精品777777在线| 777777777亚洲妇女| av永久免费观看| 欧美日韩一区二区三区四区不卡| 在线视频国内自拍亚洲视频| 人妻无码久久一区二区三区免费| 免费日本一区二区三区视频| 久久精品欧美一区二区三区不卡| 91午夜理伦私人影院| 欧美一级做a爰片免费视频| 国产精品免费看| 欧美黄色免费网站| caoporn91| 欧美电影一二区| 在线视频精品一| 日本50路肥熟bbw| 亚洲高清在线一区| 日韩网站在线看片你懂的| 欧美婷婷精品激情| 91成人在线| 91高清在线观看| 四虎永久在线精品无码视频| 污污视频在线| 亚洲精品日韩一| 午夜精品短视频| 粉嫩av在线播放| 成人丝袜视频网| 国产高清在线一区| jizz中国少妇| 国产呦萝稀缺另类资源| 91香蕉亚洲精品| 99久久久国产精品无码免费| 国产一区二区伦理片| 国产精品一区久久久| 一二三四区视频| 极品美女销魂一区二区三区免费| 国产日韩在线观看av| 中文字幕网址在线| 国模少妇一区二区三区| av成人午夜| 日批视频免费播放| 久久久蜜臀国产一区二区| 日韩欧美一区二区三区四区 | 亚洲激情欧美| 992tv成人免费影院| 日韩在线视频免费播放| 亚洲欧美日韩国产综合精品二区 | 日韩一区二区在线观看视频| 人妻精品久久久久中文字幕69| 91精品短视频| 亚洲精品720p| 蜜桃久久精品成人无码av| 日韩伦理视频| 久久深夜福利免费观看| 久久久久香蕉视频| 久久黄色影院| 成人女保姆的销魂服务| 人人妻人人澡人人爽久久av| 久久在线免费观看| 亚洲国产精品影视| 色黄视频在线观看| 欧美性大战久久久久久久| 日韩精品在线播放视频| 欧美wwwsss9999| 日韩在线视频网| 黄色小视频在线免费看| 日韩高清在线一区| 99re视频在线播放| 天堂v在线观看| 国产精品国产精品国产专区不片| 国产911在线观看| 亚洲成a人片| 日韩欧美精品在线| 五月天精品视频| 欧美在线免费一级片| 日韩av观看网址| 在线免费观看视频网站| 成人精品国产一区二区4080| 日本10禁啪啪无遮挡免费一区二区| 大地资源网3页在线观看| 懂色av一区二区三区| 国产91色在线观看| 国偷自产视频一区二区久| 尤物九九久久国产精品的分类| 久久久久久国产精品视频 | 国产欧美日韩精品一区| 91国在线高清视频| 91大神在线观看线路一区| 欧美精品一区二区三区高清aⅴ | 欧美日韩国产成人在线免费| 国产精品久久久久久亚洲色| 久久理论电影| 国产v综合ⅴ日韩v欧美大片| 国产福利第一页| 91在线视频免费观看| 亚洲国产精品无码观看久久| 日韩在线成人| 欧美高清视频在线播放| 性色av蜜臀av| 一区二区三区欧美| 美女日批在线观看| 黄页网站一区| 精品国产一区二区三| 98色花堂精品视频在线观看| 精品国产一区二区三区不卡| 国产在线视频99| 成人三级在线视频| 日本中文字幕网址| 日本在线中文字幕一区| 91国产在线精品| 久久av少妇| 91国产精品成人| 影音先锋男人资源在线观看| 久久99久久99小草精品免视看| 一区二区在线不卡| 少妇精品在线| 高清欧美一区二区三区| 亚洲av成人精品日韩在线播放| 一本久道中文字幕精品亚洲嫩| 偷拍夫妻性生活| 久久精品999| 国产一区二区片| 日韩美女毛片| 国产精品视频久| a级影片在线观看| 精品毛片乱码1区2区3区| www..com国产| 中文字幕免费观看一区| 色网站在线视频| 极品裸体白嫩激情啪啪国产精品| 国产一区二区三区黄| 久久青青视频| 久久精品成人一区二区三区 | 美女国产一区二区三区| 黄色网址在线免费看| 国产区精品视频在线观看豆花| 88xx成人精品| 一区二区三区视频在线观看视频| 欧美日韩国产综合一区二区| 久久久久久久中文字幕| 国产人成亚洲第一网站在线播放| 欧美成人手机在线视频| 国产亚洲一区在线| 在线观看成人av| 大型av综合网站| 国产精品久久中文| 国产乱码在线| 色系列之999| 五月婷婷久久久| 91精品国产91久久综合桃花 | 欧美专区亚洲专区| 久久久久久久久久91| 欧美激情一区二区三区| 任你躁av一区二区三区| 欧美a级一区二区| 成人性生活视频免费看| 日韩精品久久| 精品欧美国产一区二区三区不卡| 亚洲午夜剧场| 热门国产精品亚洲第一区在线| caoporn免费在线| 在线播放国产一区二区三区| 免费国产精品视频| 欧美一区二区三区在线电影| 国产主播第一页| 亚洲国产日韩在线一区模特| 很污很黄的网站| 国产色产综合产在线视频| 欧美xxxx×黑人性爽| 国产一区在线观看麻豆| 在线免费视频a| 二区三区不卡| 日韩精品免费在线视频观看| 国产精品久久777777换脸| 色婷婷狠狠综合| 国产精品500部| 亚洲一区二区三区小说| 日韩激情综合网| 国产精品你懂的| 我不卡一区二区| 91丨九色丨蝌蚪富婆spa| 日本中文字幕亚洲| 久久久国产精品| 亚洲春色在线视频| 风间由美一区二区av101| 91视频免费网站| 国产电影一区| 欧美一级电影久久| 中文字幕在线视频久| 色天天综合狠狠色| 永久免费av片在线观看全网站| 国产一区二区三区久久精品 | 91精品国产高清| 免费在线你懂的| 精品国产欧美一区二区五十路| 成人在线播放视频| 中文字幕亚洲精品| av电影在线网| 中文综合在线观看| 日本中文字幕电影在线免费观看| 伊人亚洲福利一区二区三区| 每日更新在线观看av| 亚洲女成人图区| 久久精品蜜桃| 日韩在线观看网址| 黄色国产在线观看| 麻豆福利在线观看| 久久久久久久97| 五月婷婷激情在线| 日韩毛片在线观看| 日中文字幕在线| 91精品国产综合久久精品 | 天天精品视频| 国产在线无码精品| 欧美三级第一页| 狠狠噜天天噜日日噜| 亚洲午夜久久久久久尤物| 97精品伊人久久久大香线蕉| 人人草在线视频| 国产精品都在这里| 亚洲精品乱码日韩| 99re在线视频上| 群体交乱之放荡娇妻一区二区| 蜜桃成人在线| 外国成人在线视频| 国产精品一区视频| 亚洲优女在线| 国产精品一区二区久久国产| 老司机亚洲精品一区二区| 国产午夜精品在线| 清纯唯美综合亚洲| 妺妺窝人体色www看人体| 精品福利久久久| 国产精品aaaa| 亚洲综合伊人久久大杳蕉| 在线免费av一区| 中文字幕在线播放不卡| 欧美精品丝袜中出| 日韩一级在线播放| 中文字幕精品—区二区| 婷婷色在线播放| 1769国产精品| 911国产在线| 久久精品一区| 天堂社区在线视频| 久久成人羞羞网站| 亚洲综合av在线播放| 成人爱爱电影网址| 亚洲久久久久久久| 亚洲精品视频在线| 日本一本在线观看| 欧美大片国产精品| 欧美偷拍视频| 久久在线观看视频| 卡通欧美亚洲| 国产美女精品在线观看| 国产真实有声精品录音| 精品国产av无码一区二区三区| 亚洲区国产区| 国产精品日韩三级| 麻豆视频观看网址久久| 免费中文字幕av| 亚洲一区二区在线观看视频| 中文在线免费看视频| 亚洲大尺度美女在线| 成人性生交大片免费看午夜| 高清亚洲成在人网站天堂| 91麻豆精品一二三区在线| 国产成人拍精品视频午夜网站 | 国产精品女主播一区二区三区| 国产高清999| 国产欧美一区二区三区鸳鸯浴 | 精品国产污污免费网站入口| 三级黄视频在线观看| 欧美激情视频网| 日韩精品一页| 日本在线视频不卡| 国产日韩亚洲欧美精品| 欧美日韩精品在线一区二区| 国产深夜精品| 日韩在线一区视频| 麻豆专区一区二区三区四区五区| 黄色正能量网站| 亚洲一区二区三区激情| av网站在线免费看| 欧美在线free| av在线电影观看| 18久久久久久| 国产91在线精品| 天堂精品视频| 蜜臀久久99精品久久久久宅男| 性欧美丰满熟妇xxxx性仙踪林| 精品国产91久久久久久| 熟妇人妻一区二区三区四区| 久久久久久一区二区三区| 成人av综合网| 亚洲视频在线观看三级| 日韩女同强女同hd| 在线观看不卡一区| 韩国av永久免费| 久久噜噜噜精品国产亚洲综合 | 精品人妻中文无码av在线| 天天av天天翘天天综合网色鬼国产| 蜜臀av中文字幕| 久久男人av资源网站| 美女一区二区在线观看| 国产白丝袜美女久久久久| www激情久久| 五月天激情四射| 亚洲视频在线观看免费| 久久91导航| 欧美另类高清视频在线| 日韩高清在线一区| 北条麻妃在线观看视频| 西野翔中文久久精品字幕| 激情伦成人综合小说| 国产精品一区亚洲| 亚洲性猛交xxxx乱大交| 欧美性猛片aaaaaaa做受| 精品国产九九九| 97av视频在线| 2023国产精华国产精品| 欧美三级在线观看视频| 色琪琪久久se色| 国产老头和老头xxxx×| 亚洲不卡一区二区三区| 天堂在线中文字幕| 国产成人精品a视频一区www| 久久亚洲影视| 日韩不卡的av| 精品久久久国产| av在线女优影院| 成人在线免费观看一区| 亚洲黄色免费| 性猛交娇小69hd| 日韩一区二区三区三四区视频在线观看| 欧美人与禽猛交乱配| 日本视频一区在线观看| 国产呦萝稀缺另类资源| 日韩不卡在线播放| xxx一区二区| 色吊丝一区二区| 亚洲美女性囗交| 精品成人久久av| 午夜伦理在线| 久久精品magnetxturnbtih| 久久精品国产一区二区| 欧美三级午夜理伦| 久久亚洲精品成人| 精品在线99|