我是一個explorer的執行緒
- 2020 年 2 月 26 日
- 筆記
伴隨著一記電流響聲,天逐漸亮了,不到一會兒太陽就升起來了,熟悉的藍天白雲和草地再次出現,今天又是繁忙的一天。

我是explorer公司的一個工作人員:一個普通的執行緒。我們公司就是人類看到的explorer.exe進程,公司的業務主要是提供可視化的圖形介面,讓人類來操作電腦,我負責的事情是桌面窗口的消息處理,隔壁工位小薇妹子負責的是任務欄窗口消息處理。我們國家是一個Windows體制的國家,有很多公司,像notepad公司是做文字編輯業務的,calc公司是做計算器業務的,還有iexplore公司是做網頁瀏覽業務的,別看我們兩個公司名字很像,負責的業務可不一樣,順便提一下,曾經有很多人想搶他們的生意,比如有個firefox的公司,搶了不少市場,後來又來了一個chrome公司,iexplore公司的業務那是一落千丈,門可羅雀啊。

聽老一輩的說,我們國家實行的是32位的Windows體制,每個註冊的公司都有4GB大小的場地,在他們人類看來,就是每個進程有4GB的記憶體地址空間,我覺得已經很寬敞了。據說還有實行64位體制的國家,他們那裡的公司場地比我們大得多,不過我是沒見過了。雖然有4GB大小,但是這其中有很多地方是禁區,不讓我們去的,這裡面有個近公司一半大小的區域聽說是特權區域,我等普通員工是從來沒資格去的,裡面到底是啥,我一直很好奇。

我們執行緒每天的任務就是執行一串串的程式碼指令,我的工位上有一個大大的工作棧,執行程式碼指令過程中用到的數據資料存放就要靠這些棧來存,我天天要執行無數個函數,要是沒有這個棧台,我都找不到之前忙到哪一步了,迷失在程式碼海洋里,有時間給你們慢慢聊這一段,可麻煩了。每天忙死忙活的,公司福利差的要命,當初來的時候說是國企編製,來了之後才知道被騙,這裡只是政府的一個外包公司,最多是跟政府關係比較近一點,壓根不是國企。哎,不說了,有人來辦事了,有一個消息包裹到了。
我拆開包裹,原來是一個雙擊消息,目標是chrome圖標。你看我剛才還說iexplore生意不好了吧,話說這一大早的這是誰又要上網了,不好好工作。抱怨歸抱怨,我還是老老實實的去執行任務了。
順著圖標的目標鏈接,我找到了chrome的程式文件,接著準備好資料,去到了真正的國企部門:kernel32,這個部門可厲害了,從名字都能看得出來,是個很核心的單位,主管著這個國家所有重要的事務,所有進程公司要工商登記、執行緒出生登記,辦戶口,讀記憶體,讀硬碟都要經過這裡。政府為了我們辦事方便,在所有公司都外派了這個部門的辦事處,除此之外還有user32部門,ntdll部門等等都設置了辦事處。
扯遠了,這次任務是chrome公司要開張,我直接來到了kernel32部門的CreateProcess窗口,我都輕車熟路了,國企就是大,在裡面繞了半天,我的資料被各種蓋章複印處理,最後根據指示來到了ntdll部門的ZwCreateProcess窗口,這個窗口辦事程式很簡單,就幾句指令,其中有一句sysenter很神秘,聽說這是政府部門的入口,每次進去都叫做系統調用。據說進去之後的世界很精彩,這裡面藏了國家太多的機密,雖然前面經過安檢了,但為了國家安全起見,所有進去的人出來後都要被消除記憶,所以我還是不知道裡面發生了什麼。但我一直很好奇,找個機會一定要想辦法逃過記憶消除。
當我回過神來,我的事情已經辦好了,手裡拿到了chrome公司社會統一註冊碼:314號。順著原路準備回去,在經過kernel32辦事處的時候,被叫住了:「哎,你事情還沒忙完了就想跑了?」
哎,我恍然大悟,我這腦袋,公司雖然註冊好了,但是是個空殼公司,還沒人管理呢!在我們國家,註冊完公司,還得負責把公司創始人:主執行緒給建立起來。
於是我又去到CreateThread窗口,又繞道一大圈來到ntdll部門的ZwCreateThread,最後再次來到神秘的sysenter門口,一個哆嗦,大腦再次斷片,執行緒已經建好了,拿到了這個新執行緒的員工編號:0x9527。
事情總算是忙完了,剩下的事情就是chrome公司自己去運營了,我可不管了。
這個單子總算處理完了,想著休息一會兒,沒想到一堆新的消息包裹等著我去處理,我快崩潰了。
打開一個個包裹來看,還好大部分都是滑鼠移動消息,處理起來很簡單。一陣忙活過後,總算處理乾淨了,正好奇為什麼沒有新的消息包裹到來,隔壁工位的UI執行緒妹子說,現在chrome窗口出來了,我們可以休息會兒,讓他們忙活吧。

剛聊了沒幾句,公司里廣播響了起來:大家都靜一靜,別聊天了,好好乾自己的活,361殺毒公司要來進行安全檢查了。361殺毒公司來頭可不小,雖然不是政府部門,但是承包了國家安全工作,道上干過幾架後再也沒人敢惹。我們趕緊回到自己工位坐好。很快,361殺毒公司的人來了,戴著墨鏡,大聲說到:「我們在你們公司程式碼倉庫里發現了一個可疑的DLL模組,沒有經過政府認證,我得檢查下你們所有員工有沒有內鬼。」
所有執行緒員工都倒吸了一口涼氣,這可是重大安全事故!沒多久,墨鏡男走到了我這邊,看了看我的工位,看了下我做的事情。然後繼續走向下一個,我算是鬆了口氣。
大約過了幾分鐘,墨鏡男從公司一個不起眼的角落裡揪出了一個陌生員工,反正我是沒有見過。「這個人不是你們公司的,被人遠程注入進來的,在這偷偷和別的國家通訊,借你們公司掩人耳目!」,眼鏡男說到。
「還真出了內鬼」,大家七嘴八舌議論到。
「打算怎麼處理呢?」公司老大上前問到。
「你們公司現在已經不幹凈了,得解散重新組建。」,墨鏡男登記完後就離開了。
留下我們凌亂中。
「大家下輩子再見吧,我們馬上就要死去了」。
悲傷在空氣中瀰漫著,不知道361殺毒公司做了什麼,一會兒一個個員工同事都消失了,所有的棧台和堆區都慢慢消失,最後我自己也消失了,再見explorer。
·
·
·
幾秒鐘後,不知道誰重新建立了我們,explorer公司又重新開張了,我又重獲新生,原來我們負責的業務太重要了,沒了我們人類都沒法操作電腦了。
繼續開始忙碌的工作,很快到中午了,人類吃午飯去了,趁著這會兒空當,我站起來想活動活動,瞄了一眼我的工作棧台,已經一層層碼了挺高了,感覺要是等會事情很複雜的話,很快就要觸頂了啊。
我問休息區的公司老大主執行緒:「這要是工作棧台滿了可咋整?」
「一般來說不會的,相信國家,我們的程式碼是國家隊寫的,很少出現這種錯誤的」
「很少,那還是有可能了?」,我追問到。
「額,如果你工作中出了差錯,還是有可能的」
「哦,原來如此,我工作很認真,不會出差錯的」,我自信的說
「希望如此吧」,老大拍拍我的肩膀
「那要是有人出了差錯,棧滿了會出現什麼事情呢?」我還是很好奇的問
「這個情況有點複雜·······我一時之間給你說不清楚」,老大欲言又止
「那犯什麼錯誤會導致棧滿呢?」我又追問
「額,那什麼,我還有點事,咱們改天聊」說完老大就跑了,留下我一個人若有所思。
閑逛著來到了公司的堆區,這裡是所有執行緒們共享的空間,一般需要動態生成的對象都放在這裡。編號0x1122號執行緒正在這裡忙碌著。
「老弟在幹嘛,別幹了,過來坐會兒」,我向他打招呼。
「我在整理堆塊啊,這次我倒霉輪到我了」,他回答到。
「哈哈,辛苦了兄弟,等會我要用的時候就省事兒了」。
正想去看看他的工作,突然收到老大通知,有新消息來了,趕緊去處理,我急忙趕回工位,繼續工作了。
未完待續·······
彩蛋1
夜已深,361殺毒公司的實驗室里還燈火通明,我是墨鏡男小周,今天從explorer公司揪出來的假冒的Kernerl32.dll到底是怎麼進入中國的,背後到底有怎樣的陰謀?已經一個下午我還是一籌莫展。
彩蛋2
「大人,豺狼號今天上午失去了聯繫,我們要不要採取行動?」
「不著急,Linux帝國還有更重要的事情,回過頭再收拾他們,這件事先別告訴首領」


