坑啊坑,十一七天卻只能有兩天時間用來搞程式,苦逼了高三狗。。。
這幾天搞的放在
主題:獲取更加詳細的處理器資訊
實現:使用nt驅動程式在ring 0許可權上執行「讀msr」(rdmsr)指令。
開始日期: 2023年08月28日 下午05時33分
中間的測試版本: 2023年10月02日 下午01時43分
總的來說呢,還是比較不簡單的,也有了一些心得,分享一下:
1. 考慮到乙個基本的現實問題,人不可能什麼不幹連續40多小時寫程式,還是分模組寫好,每乙個測試穩定的模組組裝在一起就是乙個比較穩定的大塊頭。。。千萬別像我這樣急於求成最後搞得「吃不了兜著走」
2. 由於rdmsr指令需要的引數放在暫存器裡面,所以只能用c/c++內聯彙編的語法,而內聯彙編最重要的一部分是把暫存器裡面的數值通過變數讀寫儲存下來。
mov 暫存器名, [指標變數]
這種格式很容易誤導人,因為看上去是對的,但實際上微軟的編譯器偏愛於解釋為
mov 暫存器名, 指標變數內部的值
而不是指標變數儲存的值所指向的單元。
就是在這段**,特別是在操作指標變數的時候,,,,走了很多彎路,後來個人弱弱地提出一種較為低階的解決辦法: 現用lea指令吧:
lea eax, 指標變數名稱
mov esi, [eax]
mov eax, [esi]
這樣就取到了指標變數所指向單元內部的數值且存入了eax暫存器。
3. 不管做什麼,不管希望多麼渺茫,只要肯伏下身子去一點點有耐心地去做,最後肯定希望越來越大。
4. 可能影響系統穩定性的指令一定要謹慎,最好先注釋掉,模擬其返回值,等待測試穩定後再脫掉注釋符。這幾天測試很幸運的是,沒有因為這個問題讓我的機器"藍屏宕機"(術語bsod)
這個東西雖說完成了測試版,但離著能拿出檯面還遠呢,
1. 只是模擬了rdmsr的返回值,還沒有脫去注釋符,
2. 對msr這一龐大的傢伙所知甚少,不敢輕舉妄動,還沒有正八經地用實際的msr位址(索引值,可能會更好理解)測試一番,也就是說,這個版本只是個「意淫版」
3. msr在具體處理機上實現方式很不一樣,要cpuid等指令的輔助才可真槍實彈地乾一架,比如amd與intel部分實現方式很不一樣,而且同一品牌的新舊版本還要判斷, 在外部呼叫時要完成檢測工作——這,其實是乙個體力活 。
4. 前邊我做的乙個用dll封裝的對cpuid操作現在可能要用到,但是那個dll是在我所知甚少的情況下做的,概念性的錯誤很多,需要重新查閱intel與amd兩家巨頭的開發人員文件增補修改。。
————最後我的目標是,把那個dll與這個sys整合成乙個比較綜合的模組,名稱仍為「處理器的功能檢測與資訊獲取」
我不知道以後有什麼更大的難題等待我去解決,或許超乎我的想想,也許小菜一碟,但不管怎樣,客觀上來說,只要我不輕易放棄,那一定是我乙個千載難逢的成長與成熟的機會
網路應用 十一期間論壇開放註冊 活動彙總
開放 註冊 篇 閃電聯盟 打造專業的技術資訊論壇 10月1日 8日論壇不定時開放註冊,每次開放5至30分鐘不等。另外值得一提的是 打工外掛程式 工資調整到30dh 原15dh 黑客動畫吧 論壇國慶期間會開放,時間待定!黑客動畫吧論壇10月3日18點 23點開放註冊 位元論壇 即日起開放註冊,截止時間...
2023年找工作小結
其實感覺也沒什麼好寫的,又沒有拿到bat的offer,不過想了想還是有必要記錄一下自己這幾個月找工作的歷程,也算是乙個紀念吧。今天是11月1日,一大早就起來了,不知道為什麼?估計是昨晚喝咖啡太多了吧,或是因為想著 的事情,或是因為11月份的到來,心裡面有點急什麼的。不過不管了,先記錄一下找工作的歷程...
隨感 2023年3月小結
總是寫了一些感想,默默的收藏,沒有發表。但是,我想肯定有人和我有所共鳴,所以還是和大家分享。進入大學,已經7個月了,乙個多學期,我時常在想,自己到現在都收穫了什麼。知識,經驗,好的習慣,積極向上的朋友圈,好的心態.仔細想想真沒有什麼可以值得驕傲的,同其他人一樣,虛度了大把的美好青春,真是想想都對不起...