獲取CPUID序列號的兩種辦法

2021-08-21 07:06:46 字數 948 閱讀 3271

win32k 平台上,獲取cpuid的辦法主要有兩種,一種是利用 wmi 另一種是利用 x86 彙編的 cpuid 指令,而最快的辦法就是通過彙編了,而且 wmi 與彙編之間效率上的差距的確有點讓人難以忍受,wmi 獲取 cpuid 的效率幾乎接近了一秒鐘,而利用 cpuid 指令的辦法,大概是幾個 us 時間的問題,這種令人咋舌的巨大差異,讓人有些難以忍受。

using system;

using system.management;

using system.runtime.interopservices;

static class program

; intptr address = gchandle.alloc(shellcode, gchandletype.pinned).addrofpinnedobject();

virtualprotect(address, (uint)shellcode.length, 0x40, out uint lpfloldprotect);

__cpuid cpuid = (__cpuid)marshal.getdelegateforfunctionpointer(address, typeof(__cpuid));

int s1 = 0;

int s2 = 0;

for (int i = 0; i < 100000; i++)

console.write("asm: ", s1.tostring("x2") + s2.tostring("x2"));

using (managementclass mc = new managementclass("win32_processor"))

", mo.properties["processorid"].value.tostring());}}

console.readkey(false);

}}

Linux下獲取CPUID 硬碟序列號

在很多系統軟體的開發中,需要使用一些系統的唯一性資訊。所以,得到主機的cpuid 硬碟序列號及網絡卡的mac位址,就成個一件很重要的應用。需要的準備知識有 1.gcc的嵌入彙編,具體的gcc嵌入彙編知識,請參考相關手冊 2.ioctl系統呼叫,具體的呼叫方法,請檢視手冊頁 按照網上提供的說明,cpu...

Linux下獲取CPUID 硬碟序列號與MAC位址

在很多系統軟體的開發中,需要使用一些系統的唯一性資訊。所以,得到主機的cpuid 硬碟序列號及網絡卡的mac位址,就成個一件很重要的應用。本人經過一番google即自己的鑽研,基本上實現了這幾個功能。需要的準備知識有 gcc的嵌入彙編,具體的gcc嵌入彙編知識,請參考相關手冊 ioctl系統呼叫,具...

爬蟲之兩種網頁獲取辦法

import requests 將引數字典進行編碼 from urllib import parse 攜帶引數的get請求,攜帶引數的第二種方式 base url 生成引數 qs 引數編碼 專門用來進行編碼,特別是有中文的 params parse.urlencode qs print params...